blumeops/plans/k8s-migration/P2_grafana.md
Erich Blume a8f4d00294 K8s Migration Phase 1: Infrastructure Setup (#29)
## Summary
- Split k8s migration plan into phases folder for easier navigation
- Added `tag:k8s` to Pulumi ACLs for Kubernetes workloads
- Phase 1 work in progress

## Phase 1 Goals
- Tailscale Kubernetes Operator
- CloudNativePG Operator
- PostgreSQL cluster for future app migrations

## Deployment and Testing
- [ ] Review Phase 1 plan
- [ ] `mise run tailnet-preview` to verify ACL changes
- [ ] `mise run tailnet-up` to apply ACL changes
- [ ] Create Tailscale OAuth client (manual)
- [ ] Deploy operators and PostgreSQL cluster

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

Reviewed-on: https://forge.tail8d86e.ts.net/eblume/blumeops/pulls/29
2026-01-19 09:49:52 -08:00

844 B

Phase 2: Grafana Migration (Pilot)

Goal: Migrate Grafana as lowest-risk pilot service

Status: Pending

Prerequisites: Phase 1 complete


Steps

1. Deploy Grafana via Helm

  • Copy datasource config from existing role
  • Copy dashboards from ansible/roles/grafana/files/dashboards/
  • Point to indri Prometheus/Loki (http://indri:9090, http://indri:3100)

2. Configure Tailscale LoadBalancer

service:
  type: LoadBalancer
  loadBalancerClass: tailscale

3. Verify all dashboards work


4. Update tailscale_serve

Remove grafana entry from ansible/roles/tailscale_serve/defaults/main.yml


5. Stop brew grafana

brew services stop grafana

Verification