sync-waves: HPA/PDB after Deployments (fix scaleTargetRef-not-found)
This commit is contained in:
parent
34f4463640
commit
20dd47790c
@ -39,13 +39,17 @@ Objects inside each env are ordered by `argocd.argoproj.io/sync-wave`:
|
|||||||
|
|
||||||
| wave | objects |
|
| wave | objects |
|
||||||
|------|---------|
|
|------|---------|
|
||||||
| 0 | ClusterSecretStore + ExternalSecrets, redis, nats |
|
| 0 | ClusterSecretStore + ExternalSecrets, redis, nats, Services |
|
||||||
| 1 | app Deployments + Services + HPA + PDB |
|
| 1 | app Deployments |
|
||||||
| 2 | ALB ingress |
|
| 2 | HPA + PDB (need their Deployment to exist first) |
|
||||||
| 3 | seed-admin Job |
|
| 3 | ALB ingress |
|
||||||
|
| 4 | seed-admin Job |
|
||||||
|
|
||||||
Argo waits for a wave to be healthy before the next. So secrets and deps land
|
Argo waits for a wave to be healthy before the next. So secrets and deps land
|
||||||
before app pods, ingress after pods exist, seed last.
|
before app pods, HPAs after the Deployments they target, ingress next, seed last.
|
||||||
|
HPA and PDB sit one wave *after* the Deployments on purpose: an HPA applied
|
||||||
|
before its target Deployment errors "scaleTargetRef not found" and fails the
|
||||||
|
whole sync.
|
||||||
|
|
||||||
### Chart source: in-cluster Gitea
|
### Chart source: in-cluster Gitea
|
||||||
|
|
||||||
|
|||||||
@ -66,6 +66,10 @@ kind: HorizontalPodAutoscaler
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ $name }}
|
name: {{ $name }}
|
||||||
namespace: {{ include "planpal.namespace" $ }}
|
namespace: {{ include "planpal.namespace" $ }}
|
||||||
|
annotations:
|
||||||
|
# wave 2: after the Deployment (wave 1) exists, else the HPA errors
|
||||||
|
# "scaleTargetRef deployment not found" and fails the whole sync.
|
||||||
|
argocd.argoproj.io/sync-wave: "2"
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: {{ $name }} }
|
scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: {{ $name }} }
|
||||||
minReplicas: {{ .min }}
|
minReplicas: {{ .min }}
|
||||||
@ -81,6 +85,8 @@ kind: PodDisruptionBudget
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ $name }}
|
name: {{ $name }}
|
||||||
namespace: {{ include "planpal.namespace" $ }}
|
namespace: {{ include "planpal.namespace" $ }}
|
||||||
|
annotations:
|
||||||
|
argocd.argoproj.io/sync-wave: "2"
|
||||||
spec:
|
spec:
|
||||||
maxUnavailable: {{ .maxUnavailable }}
|
maxUnavailable: {{ .maxUnavailable }}
|
||||||
selector:
|
selector:
|
||||||
|
|||||||
@ -5,7 +5,7 @@ metadata:
|
|||||||
name: planpal
|
name: planpal
|
||||||
namespace: {{ include "planpal.namespace" . }}
|
namespace: {{ include "planpal.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
argocd.argoproj.io/sync-wave: "2"
|
argocd.argoproj.io/sync-wave: "3"
|
||||||
alb.ingress.kubernetes.io/scheme: internet-facing
|
alb.ingress.kubernetes.io/scheme: internet-facing
|
||||||
alb.ingress.kubernetes.io/target-type: ip
|
alb.ingress.kubernetes.io/target-type: ip
|
||||||
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80},{"HTTPS":443}]'
|
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80},{"HTTPS":443}]'
|
||||||
|
|||||||
@ -5,7 +5,7 @@ metadata:
|
|||||||
name: seed-admin
|
name: seed-admin
|
||||||
namespace: {{ include "planpal.namespace" . }}
|
namespace: {{ include "planpal.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
argocd.argoproj.io/sync-wave: "3"
|
argocd.argoproj.io/sync-wave: "4"
|
||||||
# Argo re-runs a Job by hash; a spec change makes a new Job. Delete the old
|
# Argo re-runs a Job by hash; a spec change makes a new Job. Delete the old
|
||||||
# one before sync if it lingers, or set this to a Sync hook if you want it
|
# one before sync if it lingers, or set this to a Sync hook if you want it
|
||||||
# to run every sync. ponytail: kept as a plain waved object, not a hook.
|
# to run every sync. ponytail: kept as a plain waved object, not a hook.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user