52 lines
1.7 KiB
Markdown
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`.
|