blumeops/containers
Erich Blume d03ed337a9 Localize the Tailscale operator stack (k8s-operator + indri ProxyClass) (#374)
Weekly non-local-container task: localize the Tailscale operator stack on **both clusters**.

## What

- **`containers/tailscale-operator/`** (new) — builds `cmd/k8s-operator` v1.94.2 from the forge mirror, mirroring upstream's mkctr recipe (`/usr/local/bin/operator`, `ts_kube,ts_package_container` go tags, version stamps). `container.py` (dagger) for indri/arm64; `default.nix` for ringtail/amd64.
- **`containers/tailscale/container.py`** (new) — dagger/arm64 build of the proxy image (containerboot), mirroring the upstream Dockerfile (iptables-legacy symlinks, `/tailscale/run.sh` compat). Ringtail already consumes the existing nix build; this completes parity for indri.
- **Version pinned at v1.94.2** (same as currently deployed) — this PR is a pure supply-chain swap, no version change. v1.96.x is avoided deliberately (MagicDNS-in-containers regression).
- Docs-first: tailscale-operator card gains **Local Images** and **Rollout Safety** sections.

## Rollout plan (after image builds)

1. Manifest commit: per-overlay `images:` override for the operator + ProxyClass strategic-merge patch on indri (kustomize `images:` can't touch CR fields).
2. `argocd app set tailscale-operator --revision <branch> && argocd app sync` — indri first, verify, then ringtail.
3. **Shadow-device safety**: device identity lives in the tailscale state Secrets; an image swap re-uses existing node keys, so no `-1` clones. State Secrets are not touched. Post-sync verification: pod health, device names unchanged, `mise run services-check`.

## Follow-ups (not this PR)

- `dnsconfig` nameserver image (`tailscale/k8s-nameserver:stable`) still upstream.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #374
2026-06-09 17:45:23 -07:00
..
alloy Alloy V1.16.0 (#345) 2026-05-01 08:05:37 -07:00
authentik Upgrade authentik 2026.2.0 → 2026.2.2 (patch release) 2026-04-08 10:53:03 -07:00
authentik-redis Localize authentik-redis container (#309) 2026-03-24 13:27:36 -07:00
external-secrets Localize external-secrets on ringtail (amd64 nix build) (#368) 2026-06-04 15:37:42 -07:00
forgejo-runner Upgrade forgejo-runner to v12.8, adopt server.connections, and clean up docs (#338) 2026-04-20 09:03:54 -07:00
frigate-notify fix(frigate-notify): set WorkingDir=/app and create writable /app 2026-04-21 09:43:00 -07:00
grafana Upgrade Grafana 12.3.3 → 12.4.2 (#322) 2026-04-02 11:33:19 -07:00
grafana-sidecar Upgrade grafana-sidecar 1.28.0 → 2.6.0 + container.py port (#332) 2026-04-13 07:57:13 -07:00
homepage C0: fix homepage container /app/config write permissions 2026-05-10 20:49:22 -07:00
kingfisher Fix Kingfisher container: make /tmp world-writable 2026-03-30 06:53:34 -07:00
kiwix-serve Migrate kiwix-serve container from Dockerfile to native Dagger build 2026-04-17 13:56:32 -07:00
kube-state-metrics Localize kube-state-metrics container (Dockerfile + nix) (#327) 2026-04-07 16:09:25 -07:00
kubectl Add consistent OCI labels to all container Dockerfiles 2026-03-18 20:42:00 -07:00
loki Update loki to 3.6.7 (#302) 2026-03-20 16:02:28 -07:00
mealie Wire ringtail blumeops-pg into backups + Grafana (#364) 2026-06-03 12:25:30 -07:00
miniflux Refactor Dagger go_build() helper and standardize Alpine 3.23 2026-04-16 10:10:46 -07:00
navidrome Native Dagger container builds + Navidrome v0.61.1 (#330) 2026-04-11 17:11:56 -07:00
ntfy Localize authentik-redis container (#309) 2026-03-24 13:27:36 -07:00
paperless Wave 1 indri→ringtail migration: paperless, teslamate, mealie (#363) 2026-06-03 10:34:00 -07:00
prometheus Add consistent OCI labels to all container Dockerfiles 2026-03-18 20:42:00 -07:00
prowler Address 6 critical Prowler IaC findings (mute + grafana RBAC tighten) (#340) 2026-04-29 10:43:32 -07:00
runner-job-image Bump Dagger to 0.20.6 and migrate runner-job-image to Alpine container.py 2026-04-21 08:28:18 -07:00
shower C0: bump shower to v1.1.3 2026-05-15 19:57:37 -07:00
tailscale Localize the Tailscale operator stack (k8s-operator + indri ProxyClass) (#374) 2026-06-09 17:45:23 -07:00
tailscale-operator Localize the Tailscale operator stack (k8s-operator + indri ProxyClass) (#374) 2026-06-09 17:45:23 -07:00
tempo Build Tempo container from source (2.10.3) (#323) 2026-04-02 13:45:02 -07:00
teslamate Wave 1 indri→ringtail migration: paperless, teslamate, mealie (#363) 2026-06-03 10:34:00 -07:00
transmission Migrate transmission containers from Dockerfile to Dagger builds 2026-04-15 11:26:00 -07:00
transmission-exporter Migrate transmission containers from Dockerfile to Dagger builds 2026-04-15 11:26:00 -07:00
unpoller Upgrade unpoller v2.34.0 → v3.2.0, migrate to container.py (#361) 2026-05-28 09:59:46 -07:00
valkey Make valkey local on ringtail (nix amd64) + bump to 8.1.7 (#362) 2026-05-28 14:51:09 -07:00