Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/reusable-cicd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,19 @@ jobs:
strategy:
fail-fast: false
matrix:
service: [frontend, backend]
service: [frontend, backend, auth-service, notifications-service]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: ${{ matrix.service }}/package-lock.json
cache-dependency-path: services/${{ matrix.service }}/package-lock.json
- name: Install dependencies
working-directory: ${{ matrix.service }}
working-directory: services/${{ matrix.service }}
run: npm ci
- name: Run tests
working-directory: ${{ matrix.service }}
working-directory: services/${{ matrix.service }}
run: npm test

build-and-push:
Expand All @@ -67,7 +67,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
service: [frontend, backend]
service: [frontend, backend, auth-service, notifications-service]
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
Expand Down Expand Up @@ -97,7 +97,7 @@ jobs:
- name: Build and push
uses: docker/build-push-action@v5
with:
context: ./${{ matrix.service }}
context: ./services/${{ matrix.service }}
push: true
platforms: linux/amd64
tags: ${{ steps.meta.outputs.tags }}
Expand Down Expand Up @@ -166,14 +166,14 @@ jobs:
chmod 600 $HOME/.oci/oci_api_key.pem
- uses: imranismail/setup-kustomize@v2
- name: Validate overlay
run: kustomize build k8s/overlays/${{ inputs.overlay }} > /dev/null
run: kustomize build platform/k8s/overlays/${{ inputs.overlay }} > /dev/null
- name: Install kubeconform
run: |
curl -sLO https://github.com/yannh/kubeconform/releases/latest/download/kubeconform-linux-amd64.tar.gz
tar xzf kubeconform-linux-amd64.tar.gz
sudo mv kubeconform /usr/local/bin/
- name: Schema validation
run: kustomize build k8s/overlays/${{ inputs.overlay }} | kubeconform -strict -summary -kubernetes-version 1.28.0
run: kustomize build platform/k8s/overlays/${{ inputs.overlay }} | kubeconform -strict -summary -kubernetes-version 1.28.0

deploy:
name: Deploy to ${{ inputs.environment_name }}
Expand Down Expand Up @@ -270,7 +270,7 @@ jobs:
-n ${{ inputs.namespace }} --dry-run=client -o yaml | kubectl apply -f -
- name: Update image tags and deploy
run: |
cd k8s/overlays/${{ inputs.overlay }}
cd platform/k8s/overlays/${{ inputs.overlay }}
kustomize edit set image \
backend=${{ env.IMAGE_PREFIX }}-backend:${{ github.sha }} \
frontend=${{ env.IMAGE_PREFIX }}-frontend:${{ github.sha }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/terraform-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ jobs:
fail-fast: false
matrix:
dir:
- terraform
- terraform/oci-prod
- platform/terraform
- platform/terraform/oci-prod
steps:
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
Expand Down
8 changes: 4 additions & 4 deletions DEVOPS_BEGINNER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Terraform creates the infrastructure in the cloud, and Kubernetes runs the appli
Terraform change (enables monitoring add-on):

```hcl
# terraform/oci-prod/terraform.tfvars
# platform/terraform/oci-prod/terraform.tfvars
enable_monitoring = true
```

Expand All @@ -40,7 +40,7 @@ Kubernetes then schedules the monitoring pods in the `monitoring` namespace.
Kubernetes overlay change (dev environment only):

```yaml
# k8s/overlays/dev/kustomization.yaml
# platform/k8s/overlays/dev/kustomization.yaml
patches:
- patch: |-
apiVersion: apps/v1
Expand All @@ -54,7 +54,7 @@ patches:
Apply it:

```bash
kubectl apply -k k8s/overlays/dev
kubectl apply -k platform/k8s/overlays/dev
```

Kubernetes creates an extra backend pod and keeps it running.
Expand Down Expand Up @@ -82,7 +82,7 @@ Cloud (OCI)
```text
Change Terraform (infra) Change Kubernetes (app)
------------------------ ------------------------
terraform/oci-prod k8s/base + k8s/overlays
platform/terraform/oci-prod platform/k8s/base + platform/k8s/overlays
| |
terraform apply kubectl apply -k
| |
Expand Down
28 changes: 14 additions & 14 deletions DEVOPS_CHEATSHEET.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
### Build & Run Locally
```bash
# Build image
docker build -t myapp-backend:v1.0 ./backend
docker build -t myapp-backend:v1.0 ./services/backend

# Run container
docker run -p 8080:8080 myapp-backend:v1.0
Expand Down Expand Up @@ -262,10 +262,10 @@ kubectl edit hpa HPANAME
kubectl apply -f deployment.yaml

# Apply all in directory
kubectl apply -f k8s/
kubectl apply -f platform/k8s/

# Apply Kustomize
kubectl apply -k k8s/overlays/prod/
kubectl apply -k platform/k8s/overlays/prod/

# Dry run (test without applying)
kubectl apply -f deployment.yaml --dry-run=client
Expand Down Expand Up @@ -362,29 +362,29 @@ kubectl describe pod POD_NAME | grep -A 10 "Events:"
### Build & Deploy
```bash
# Build overlay (see final YAML)
kustomize build k8s/overlays/prod
kustomize build platform/k8s/overlays/prod

# Apply overlay
kubectl apply -k k8s/overlays/prod
kubectl apply -k platform/k8s/overlays/prod

# Dry run
kubectl apply -k k8s/overlays/prod --dry-run=client
kubectl apply -k platform/k8s/overlays/prod --dry-run=client

# Edit deployment image in overlay
cd k8s/overlays/prod
cd platform/k8s/overlays/prod
kustomize edit set image backend=ghcr.io/myuser/myapp-backend:v2.0
cd - && kubectl apply -k k8s/overlays/prod
cd - && kubectl apply -k platform/k8s/overlays/prod
```

### View Kustomization
```bash
# View final manifest
kustomize build k8s/overlays/prod > final.yaml
kustomize build platform/k8s/overlays/prod > final.yaml
cat final.yaml

# Compare overlays
kustomize build k8s/overlays/dev > dev.yaml
kustomize build k8s/overlays/prod > prod.yaml
kustomize build platform/k8s/overlays/dev > dev.yaml
kustomize build platform/k8s/overlays/prod > prod.yaml
diff dev.yaml prod.yaml
```

Expand All @@ -398,7 +398,7 @@ diff dev.yaml prod.yaml
git status

# Add files
git add frontend/
git add services/frontend/

# Commit
git commit -m "Add new feature"
Expand Down Expand Up @@ -598,7 +598,7 @@ kubectl set image deployment/backend backend=ghcr.io/myuser/myapp-backend:v2.0 -
kubectl patch deployment backend -p '{"spec":{"template":{"spec":{"containers":[{"name":"backend","image":"ghcr.io/myuser/myapp-backend:v2.0"}]}}}}'

# Using kustomize (recommended)
cd k8s/overlays/prod
cd platform/k8s/overlays/prod
kustomize edit set image backend=ghcr.io/myuser/myapp-backend:v2.0
kubectl apply -k .
```
Expand Down Expand Up @@ -682,7 +682,7 @@ klogs deployment/backend

| Task | Command |
|------|---------|
| Deploy | `kubectl apply -k k8s/overlays/prod` |
| Deploy | `kubectl apply -k platform/k8s/overlays/prod` |
| Scale | `kubectl scale deployment backend --replicas=5` |
| Logs | `kubectl logs -f deployment/backend` |
| Exec | `kubectl exec -it deployment/backend -- /bin/sh` |
Expand Down
Loading