homelab/argocd/README.md

52 lines
1.7 KiB
Markdown

# Argo CD
Argo CD is the cluster reconciler for this repo. `manifests/argocd/app-of-apps.yaml`
points Argo CD at `argocd/apps`, where each file defines one child
`Application`.
## Bootstrap
Install or upgrade Argo CD with the pinned chart values:
```bash
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm upgrade --install argocd argo/argo-cd \
--namespace argocd --create-namespace \
--version 9.4.15 \
--values argocd/values/argocd.yaml
```
Then apply the app-of-apps:
```bash
kubectl apply -f manifests/argocd/app-of-apps.yaml
```
Argo CD is exposed at `https://argocd.home.arpa` by
`manifests/argocd/argocd.yaml`.
## Application Types
| Type | Examples | Source |
| --- | --- | --- |
| Helm chart plus values | Traefik, cert-manager, Gitea, Pi-hole, monitoring, Loki, Tempo | `argocd/apps/*.yaml` and `values/*.yaml` |
| Raw manifest directory | Core, media, network secrets, home services, portfolio | `manifests/*` |
| Argo CD self-management | `argocd-self`, `argocd-config` | `argocd/values` and `manifests/argocd` |
Most Applications use automated sync with `selfHeal: true` and `prune: false`.
Expect Argo CD to correct drift, but do not expect deleted Git resources to be
pruned automatically.
## Adding a Service
1. Add raw manifests under `manifests/<area>` or Helm values under `values/`.
2. Add an `Application` in `argocd/apps/`.
3. Add any required DNS entries to both Pi-hole values files.
4. Add certificates, secrets, and registry pull secrets if the service needs
them.
5. Commit and let the app-of-apps reconcile.
Use `targetRevision: main` for repo-managed services unless there is a specific
reason to track `HEAD`.