From cffaa7449db331daa238d0daa1b5d461840409d3 Mon Sep 17 00:00:00 2001 From: duynguyen Date: Tue, 14 Jul 2026 17:50:06 +0700 Subject: [PATCH] fix argocd install + add root bootstrap Application manifest - remove server.httproute from argocd values.yaml: helm install failed since Gateway API CRDs (installed by envoy-gateway, wave 2) don't exist yet; HTTPRoute is already applied manually in Phase 6 - add bootstrap-app.yaml as the Git-committed root/seed Application, replacing ad-hoc UI creation (GitOps anti-pattern: apps not stored in Git can't be recreated) --- README.md | 20 +++++++------------- bootstrap-app.yaml | 18 ++++++++++++++++++ manifests/argocd/values.yaml | 6 ------ 3 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 bootstrap-app.yaml diff --git a/README.md b/README.md index 920aa86..6c458a7 100644 --- a/README.md +++ b/README.md @@ -125,22 +125,15 @@ git push origin main --- -## Phase 4 — Create bootstrap app in ArgoCD UI +## Phase 4 — Apply the root bootstrap Application -In ArgoCD UI, create a new Application: +`bootstrap-app.yaml` (repo root) is the one seed manifest — it lives in Git, not created ad-hoc via UI/CLI. Per GitOps practice, every Application ArgoCD runs must be recreatable from Git; a UI-created app that's stored nowhere can't survive a rebuild. This is the only manifest ever applied by hand — everything downstream (including ArgoCD managing itself, wave -1) is reached by ArgoCD syncing `bootstrap/apps/` from here. -| Field | Value | -|-------|-------| -| Application Name | `bootstrap` | -| Project | `default` | -| Sync Policy | Automated (enable Prune + Self Heal) | -| Repository URL | `https://gitea.fireflylab.cc/duynguyen/cluster-bootstrap.git` | -| Revision | `main` | -| Path | `bootstrap/apps` | -| Cluster URL | `https://kubernetes.default.svc` | -| Namespace | `argocd` | +```bash +kubectl apply -f bootstrap-app.yaml +``` -Click **Create**. ArgoCD syncs all child Applications in wave order automatically. +ArgoCD syncs all child Applications in wave order automatically, including self-managing itself via `bootstrap/apps/argocd.yaml` (wave -1). Monitor progress: @@ -273,6 +266,7 @@ All Applications should be `Synced` / `Healthy`. ``` cluster-bootstrap/ ├── README.md +├── bootstrap-app.yaml # root seed Application — the only manifest applied by hand ├── bootstrap/ │ └── apps/ # ArgoCD Application CRDs │ ├── argocd.yaml # wave -1 — self-managed ArgoCD diff --git a/bootstrap-app.yaml b/bootstrap-app.yaml new file mode 100644 index 0000000..111a33e --- /dev/null +++ b/bootstrap-app.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: bootstrap + namespace: argocd +spec: + project: default + source: + repoURL: https://gitea.fireflylab.cc/duynguyen/cluster-bootstrap.git + targetRevision: main + path: bootstrap/apps + destination: + server: https://kubernetes.default.svc + namespace: argocd + syncPolicy: + automated: + prune: true + selfHeal: true diff --git a/manifests/argocd/values.yaml b/manifests/argocd/values.yaml index 76fa242..a284b5f 100644 --- a/manifests/argocd/values.yaml +++ b/manifests/argocd/values.yaml @@ -24,9 +24,3 @@ configs: server: replicas: 1 - httproute: - enabled: true - parentRefs: - - name: envoy-gateway - namespace: gateway-system - sectionName: http