Compare commits

..
3 Commits
Author SHA1 Message Date
duynguyen 0905f5ca86 fix: ServerSideApply on argocd Application to prune stale fields
argocd was originally helm-installed by hand before ArgoCD existed to
manage it; client-side 3-way merge apply can't prune fields it never
saw in a last-applied-configuration, so a later chart bump left a stale
args on repo-server's copyutil init container (old shell-string command
lingering alongside the new plain cp command) -> cp got 4 args instead
of 3 -> 'No such file or directory' -> CrashLoopBackOff -> Degraded.

Same bug class as envoy-gateway (020b248). ServerSideApply=true tracks
field ownership properly and prunes the stray field on next sync.
2026-09-02 23:12:00 +07:00
duynguyen f7334a5480 fix: bump argocd route timeout past Envoy's 15s default
Envoy Gateway's per-route default timeout (15s, unset anywhere in this
cluster) was cutting the connection to argocd-server mid-Sync, surfacing
as 'Gateway Timeout' in the UI — confirmed even a single-resource sync
hit exactly ~15.0s every attempt, ruling out chart size/congestion.

BackendTrafficPolicy on the argocd HTTPRoute raises requestTimeout to 120s.
2026-09-02 16:24:58 +07:00
duynguyen ca028013ce chore: manual sync for leaf apps, keep root app-of-apps automated
Convention: only the root app-of-apps (bootstrap) auto-syncs so it picks up
new/changed child Application definitions from Git. Every leaf service app
(metallb, metallb-config, envoy-gateway, envoy-gateway-config, nfs-provisioner)
now requires an explicit manual Sync — matches the existing argocd (self-manage)
and ignis convention.
2026-09-02 16:22:15 +07:00
7 changed files with 27 additions and 15 deletions
+9
View File
@@ -20,3 +20,12 @@ spec:
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: argocd namespace: argocd
# ArgoCD was originally `helm install`ed by hand before ArgoCD existed to
# manage it (see README Phase 3), so client-side 3-way merge apply can't
# see/prune fields from that pre-existing object — left a stale `args` on
# argocd-repo-server's copyutil init container after a later chart bump,
# crashlooping it (same bug class as envoy-gateway, see 020b248).
# ServerSideApply properly tracks field ownership and prunes it.
syncPolicy:
syncOptions:
- ServerSideApply=true
+1 -3
View File
@@ -14,9 +14,7 @@ spec:
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: envoy-gateway-system namespace: envoy-gateway-system
# Leaf app — manual sync only; root `bootstrap` app-of-apps stays automated.
syncPolicy: syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: syncOptions:
- SkipDryRunOnMissingResource=true - SkipDryRunOnMissingResource=true
+1 -3
View File
@@ -20,10 +20,8 @@ spec:
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: envoy-gateway-system namespace: envoy-gateway-system
# Leaf app — manual sync only; root `bootstrap` app-of-apps stays automated.
syncPolicy: syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ServerSideApply=true - ServerSideApply=true
+1 -3
View File
@@ -14,10 +14,8 @@ spec:
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: metallb-system namespace: metallb-system
# Leaf app — manual sync only; root `bootstrap` app-of-apps stays automated.
syncPolicy: syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- SkipDryRunOnMissingResource=true - SkipDryRunOnMissingResource=true
+1 -3
View File
@@ -20,10 +20,8 @@ spec:
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: metallb-system namespace: metallb-system
# Leaf app — manual sync only; root `bootstrap` app-of-apps stays automated.
syncPolicy: syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
ignoreDifferences: ignoreDifferences:
+1 -3
View File
@@ -20,9 +20,7 @@ spec:
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: nfs-provisioner namespace: nfs-provisioner
# Leaf app — manual sync only; root `bootstrap` app-of-apps stays automated.
syncPolicy: syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
@@ -0,0 +1,13 @@
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: BackendTrafficPolicy
metadata:
name: argocd
namespace: argocd
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: HTTPRoute
name: argocd
timeout:
http:
requestTimeout: 120s