- .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>
28 lines
1.3 KiB
Markdown
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`.
|