diff --git a/.forgejo/workflows/cv-deploy.yaml b/.forgejo/workflows/cv-deploy.yaml index 4aec393..983154b 100644 --- a/.forgejo/workflows/cv-deploy.yaml +++ b/.forgejo/workflows/cv-deploy.yaml @@ -112,6 +112,14 @@ jobs: echo "CV app synced successfully!" + - name: Purge Fly.io proxy cache + env: + FLY_API_TOKEN: ${{ secrets.FLY_DEPLOY_TOKEN }} + run: | + echo "Purging nginx cache on Fly.io proxy..." + fly ssh console -a blumeops-proxy -C "sh -c 'rm -rf /tmp/cache && nginx -s reload'" + echo "Cache purged" + - name: Summary run: | VERSION="${{ steps.version.outputs.version }}" diff --git a/argocd/manifests/cv/deployment.yaml b/argocd/manifests/cv/deployment.yaml index 57c850b..ba969fc 100644 --- a/argocd/manifests/cv/deployment.yaml +++ b/argocd/manifests/cv/deployment.yaml @@ -5,7 +5,12 @@ metadata: name: cv namespace: cv spec: - replicas: 1 + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0 + maxSurge: 1 selector: matchLabels: app: cv diff --git a/argocd/manifests/cv/kustomization.yaml b/argocd/manifests/cv/kustomization.yaml index 9ba628f..21e5a1f 100644 --- a/argocd/manifests/cv/kustomization.yaml +++ b/argocd/manifests/cv/kustomization.yaml @@ -6,6 +6,7 @@ resources: - deployment.yaml - service.yaml - ingress-tailscale.yaml + - pdb.yaml images: - name: registry.ops.eblu.me/blumeops/cv newTag: v1.0.3-ffa8727 diff --git a/argocd/manifests/cv/pdb.yaml b/argocd/manifests/cv/pdb.yaml new file mode 100644 index 0000000..db5240d --- /dev/null +++ b/argocd/manifests/cv/pdb.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: cv +spec: + minAvailable: 1 + selector: + matchLabels: + app: cv diff --git a/argocd/manifests/docs/deployment.yaml b/argocd/manifests/docs/deployment.yaml index f19f6f8..e4409a9 100644 --- a/argocd/manifests/docs/deployment.yaml +++ b/argocd/manifests/docs/deployment.yaml @@ -5,7 +5,12 @@ metadata: name: docs namespace: docs spec: - replicas: 1 + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0 + maxSurge: 1 selector: matchLabels: app: docs diff --git a/argocd/manifests/docs/kustomization.yaml b/argocd/manifests/docs/kustomization.yaml index 492c8a3..d014c23 100644 --- a/argocd/manifests/docs/kustomization.yaml +++ b/argocd/manifests/docs/kustomization.yaml @@ -6,6 +6,7 @@ resources: - deployment.yaml - service.yaml - ingress-tailscale.yaml + - pdb.yaml images: - name: registry.ops.eblu.me/blumeops/quartz newTag: v1.28.2-ffa8727 diff --git a/argocd/manifests/docs/pdb.yaml b/argocd/manifests/docs/pdb.yaml new file mode 100644 index 0000000..a87b8e9 --- /dev/null +++ b/argocd/manifests/docs/pdb.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: docs +spec: + minAvailable: 1 + selector: + matchLabels: + app: docs diff --git a/docs/changelog.d/feature/ha-cv-docs-zero-downtime.infra.md b/docs/changelog.d/feature/ha-cv-docs-zero-downtime.infra.md new file mode 100644 index 0000000..b6a7e03 --- /dev/null +++ b/docs/changelog.d/feature/ha-cv-docs-zero-downtime.infra.md @@ -0,0 +1 @@ +Add HA (2 replicas + PDB) for CV and Docs services for zero-downtime deploys.