blumeops/docs/how-to/immich/cnpg-on-ringtail.md
Erich Blume 4623733695 C2(migrate-immich-to-ringtail): plan introduce mikado chain
Goal: move immich (server, ML, valkey, postgres) off minikube-indri
onto k3s-ringtail. Immich is the largest single tenant on minikube
(~1.5 GiB resident) and minikube is memory-saturated.

Prerequisite cards:
- cnpg-on-ringtail
- immich-pg-on-ringtail (requires cnpg-on-ringtail)
- immich-pg-data-migration (requires immich-pg-on-ringtail)
- sifaka-nfs-from-ringtail
- immich-app-on-ringtail (requires immich-pg-on-ringtail, sifaka-nfs-from-ringtail)
- immich-cutover-and-decommission (requires immich-pg-data-migration, immich-app-on-ringtail)

Data loss is a critical failure; downtime is acceptable. The cutover
plan favors a CNPG externalCluster basebackup (Option A) with pg_dump
as the documented fallback (Option B).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 11:05:40 -07:00

1.6 KiB

title modified last-reviewed status tags
CNPG Operator on Ringtail 2026-05-13 2026-05-13 active
how-to
operations
postgres
ringtail

CNPG Operator on Ringtail

Bring up the cloudnative-pg operator on k3s-ringtail. Today the operator only exists on minikube-indri (see argocd/apps/cloudnative-pg.yaml, destination kubernetes.default.svc).

Prerequisite of migrate-immich-to-ringtail; consumed by immich-pg-on-ringtail.

What to do

  • Add a sibling argocd/apps/cloudnative-pg-ringtail.yaml pointing at the same mirror (mirrors/cloudnative-pg, tag v1.27.1), destination https://ringtail.tail8d86e.ts.net:6443, namespace cnpg-system.
  • Mirror the ServerSideApply=true and CreateNamespace=true sync options (the CRDs exceed the annotation size limit).
  • Sync apps then cloudnative-pg-ringtail. Verify the operator pod is running on ringtail.

Verification

kubectl --context=k3s-ringtail -n cnpg-system get pods
kubectl --context=k3s-ringtail get crd clusters.postgresql.cnpg.io

Why a separate app

Each ArgoCD app targets a single cluster via destination.server. We could parameterize with ApplicationSets, but blumeops' convention is to duplicate the manifest with a -ringtail suffix (see alloy-ringtail, external-secrets-ringtail, etc.). Keep the convention.

Out of scope

  • Postgres clusters themselves (immich-pg, etc.) — those come from immich-pg-on-ringtail.
  • Removing the minikube cnpg operator. That happens at the very end of the indri-k8s decommission, not in this chain.