Argo CD¶
Argo CD implements GitOps: the desired state of the TRE lives
in Git, and Argo CD continuously makes the cluster match it. Git history becomes the change log,
pull requests become change control, and manual drift gets reverted automatically (selfHeal).
App of apps¶
root (Application, created by bootstrap.sh from gitops/root-app.yaml)
└─ gitops/apps (Helm chart) renders:
├─ platform gitops/platform wave 0
├─ keycloak gitops/keycloak wave 0
├─ portal gitops/portal wave 0
├─ kyverno kyverno Helm repo 3.3.4 wave 0
├─ jupyterhub gitops/jupyterhub wave 1
├─ network-policies gitops/network-policies wave 1
├─ kyverno-policies gitops/kyverno wave 1
├─ project-alpha gitops/projects/chart wave 2
└─ project-beta gitops/projects/chart wave 2
The root Application passes repoURL and revision down to the chart, so every child app
follows the same fork and branch that bootstrap.sh detected.
Using it¶
- UI:
/argocd/, useradmin, password fromtre info. -
CLI (inside the dev container):
-
Or simply:
kubectl -n argocd get applications/tre status.
Sync behaviour¶
| Setting | Value | Meaning |
|---|---|---|
automated.prune |
true | Things removed from Git are deleted from the cluster |
automated.selfHeal |
true | Manual changes to managed objects are reverted |
timeout.reconciliation |
60s | How often Git is polled (tre sync forces it now) |
retry |
10×, backoff | Gives CRDs from other apps time to appear |
ServerSideApply |
true | Handles large CRDs (Kyverno) cleanly |
Try it
kubectl -n project-alpha delete resourcequota project-quota and then run
kubectl -n project-alpha get resourcequota a few times. Argo CD puts it back within
seconds. Objects you create yourself (not in Git) are left alone.
Why it matters for a TRE¶
- Auditability: every change to the platform is a commit with an author and a review.
- Reproducibility: a new environment is
bootstrap.shplus a Git URL. - Drift control: no quiet manual firewall exceptions that nobody remembers.
- Environment promotion: K8TRE promotes the same Git content through dev → stg → prod.
Memory trimming¶
KID scales the Dex (SSO), notifications and ApplicationSet controllers to zero because the demo
doesn't use them. See bootstrap.sh.