From b3c9539eaff25d63956fc2bb226419411e400899 Mon Sep 17 00:00:00 2001 From: duynguyen Date: Wed, 29 Jul 2026 23:30:45 +0700 Subject: [PATCH] chore: scaffold cluster-platform repo (root app-of-apps for platform services) --- .gitignore | 6 ++++++ README.md | 28 ++++++++++++++++++++++++++++ platform-app.yaml | 18 ++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 platform-app.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..55fc006 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.env + +# OS/editor +.DS_Store +*.swp +CLAUDE.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..bbb6e77 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# K8s Cluster Platform — Services + +Bootstraps platform/application services (vault, external-secrets, harbor, jenkins, +sonarqube, etc.) onto the cluster using ArgoCD app-of-apps pattern. + +Run this after `cluster-bootstrap` finishes (ArgoCD, MetalLB, Envoy Gateway, NFS +storage must already be up). + +## Architecture + +``` +Git repo (cluster-platform) + └── ArgoCD watches platform/apps/ → syncs all Applications + +platform-app.yaml ← root Application, applied once by hand (kubectl apply) +platform/apps/ ← ArgoCD watches this path; one Application CRD per service +manifests/ ← Helm values referenced by those Applications +``` + +## Bootstrap Sequence + +**Apply the root platform Application** + +```bash +kubectl apply -f platform-app.yaml +``` + +Everything else is reached by ArgoCD syncing `platform/apps/` from here. diff --git a/platform-app.yaml b/platform-app.yaml new file mode 100644 index 0000000..9d63d2e --- /dev/null +++ b/platform-app.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: platform + namespace: argocd +spec: + project: default + source: + repoURL: https://gitea.fireflylab.cc/duynguyen/cluster-platform.git + targetRevision: main + path: platform/apps + destination: + server: https://kubernetes.default.svc + namespace: argocd + syncPolicy: + automated: + prune: true + selfHeal: true