diff --git a/apps/argocd-config/argocd-ha-patch.yaml b/apps/argocd-config/argocd-ha-patch.yaml deleted file mode 100644 index c4d4fc5..0000000 --- a/apps/argocd-config/argocd-ha-patch.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# ArgoCD HA Patch -# Patches das argocd-server Deployment für High Availability -# WICHTIG: Strategic Merge Patch - muss vollständige Struktur enthalten - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: argocd-server - namespace: argocd -spec: - replicas: 2 # HA: Mindestens 2 Replicas für Ausfallsicherheit - selector: - matchLabels: - app.kubernetes.io/name: argocd-server - template: - metadata: - labels: - app.kubernetes.io/name: argocd-server - spec: - affinity: - podAntiAffinity: - # Hard Rule: Pods müssen auf verschiedenen Nodes laufen - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/name - operator: In - values: - - argocd-server - topologyKey: kubernetes.io/hostname - # WICHTIG: Controller flag für HA Mode - # --disable-auth sollte NICHT gesetzt werden in HA Mode - # --insecure wird bereits vom Standard-Manifest gesetzt - ---- -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - name: argocd-server - namespace: argocd -spec: - minAvailable: 1 # Mindestens 1 Pod muss immer verfügbar sein - selector: - matchLabels: - app.kubernetes.io/name: argocd-server diff --git a/apps/argocd-config/argocd-server-ha-patch.yaml b/apps/argocd-config/argocd-server-ha-patch.yaml new file mode 100644 index 0000000..eba7a32 --- /dev/null +++ b/apps/argocd-config/argocd-server-ha-patch.yaml @@ -0,0 +1,23 @@ +# ArgoCD Server HA Patch +# WICHTIG: Nur Deployment-Patch, PDB ist separate Resource + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: argocd-server + namespace: argocd +spec: + replicas: 2 # HA: Mindestens 2 Replicas für Ausfallsicherheit + template: + spec: + affinity: + podAntiAffinity: + # Hard Rule: Pods müssen auf verschiedenen Nodes laufen + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - argocd-server + topologyKey: kubernetes.io/hostname diff --git a/apps/argocd-config/argocd-server-pdb.yaml b/apps/argocd-config/argocd-server-pdb.yaml new file mode 100644 index 0000000..eedf16a --- /dev/null +++ b/apps/argocd-config/argocd-server-pdb.yaml @@ -0,0 +1,12 @@ +# ArgoCD Server Pod Disruption Budget + +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: argocd-server + namespace: argocd +spec: + minAvailable: 1 # Mindestens 1 Pod muss immer verfügbar sein + selector: + matchLabels: + app.kubernetes.io/name: argocd-server diff --git a/apps/argocd-config/kustomization.yaml b/apps/argocd-config/kustomization.yaml index 0e167ee..bdee850 100644 --- a/apps/argocd-config/kustomization.yaml +++ b/apps/argocd-config/kustomization.yaml @@ -4,4 +4,10 @@ resources: - external-secret.yaml - argocd-cm.yaml - argocd-rbac-cm.yaml - - argocd-ha-patch.yaml # HA: 2 Replicas + Anti-Affinity + PDB \ No newline at end of file + - argocd-server-pdb.yaml # HA: Pod Disruption Budget + +# WICHTIG: patchesStrategicMerge für Deployment Patch +# Der Patch muss nur die zu ändernden Felder enthalten +# Container-Spezifikation wird vom Original übernommen +patchesStrategicMerge: + - argocd-server-ha-patch.yaml \ No newline at end of file