bcs-website/docs/adr/0001-gitops-with-argocd.md
Brad Rodgers 3dab3bc9fb Add Gitea Actions CI, ArgoCD Application, and Gitea Packages wiring
- .gitea/workflows/ci.yml: build → seo:lint → e2e → image build/push →
  bump k8s image tag and commit back (paths-ignore + [skip ci] guard)
- argocd/bcs-website-application.yaml: ArgoCD App (internal Gitea repoURL, k8s path)
- k8s: image → Gitea Packages path; kustomization images newTag stanza
- ADR-0007 (Gitea Actions + Packages), supersedes GHCR/GitHub bits of ADR-0001
- Reconcile gitops-deployment-strategy.md to Gitea

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 06:29:01 -04:00

28 lines
1.3 KiB
Markdown

# ADR-0001: GitOps deployment via ArgoCD (not Flux)
**Status:** Accepted — 2026-07-15 · CI/registry specifics (GitHub Actions + GHCR) **superseded by
[ADR-0007](0007-gitea-actions-and-packages.md)** (Gitea Actions + Gitea Packages). The ArgoCD /
GitOps model here stands.
## Context
The site deploys to the homelab k3s cluster. GitHub must never receive kubeconfig or direct
cluster access. An earlier plan specified Flux, but Flux was never implemented, and the homelab
**already runs ArgoCD** (namespace `argocd`, active 21d+) managing other workloads.
## Decision
Use **ArgoCD** as the GitOps reconciler. Model: local edit → GitHub Actions builds + pushes image
to GHCR (`<git-sha>` immutable tags) → CI commits the tag into `k8s/` → ArgoCD auto-syncs the
Kustomize manifests → k3s rolls the Deployment → Traefik serves. Manifests stay as plain Kustomize
under `k8s/` (ArgoCD consumes `k8s/kustomization.yaml` natively; no Helm chart).
## Consequences
- No second GitOps controller to run; reuses existing, understood infra.
- Cluster pulls from Git + GHCR; GitHub never touches the cluster.
- Requires: `git init` + GitHub remote (not yet done), a GHCR image path, and an ArgoCD
`Application` CR (direct or via the homelab app-of-apps).
- Rollback = `git revert` + push, or ArgoCD history rollback.
- Full detail in `docs/gitops-deployment-strategy.md`.