| Tailscale Funnel |
Public ingress at <code>notion-mcp-remote.tail5b443a.ts.net</code> |
Provisioned by pal-e-services terraform when <code>funnel=true</code> |
| Namespace + Service + Pod |
Standard k8s trio; app listens on :8000 |
Dockerfile.k8s EXPOSE 8000 |
| PVC |
Persists <code>data/tokens.json</code> across pod restarts |
<code>k8s/pvc.yaml</code>; single-writer |
| Harbor |
Private image registry; project <code>notion-mcp-remote</code> |
Created by <code>tofu apply</code>; robot creds via Woodpecker secrets |
| Woodpecker CI |
Builds on push to main, pushes SHA + latest tags |
<code>.woodpecker.yaml</code>; must use internal Harbor URL per SOP |
| ArgoCD + Image Updater |
Watches Harbor tags, writes newTag to overlay kustomization.yaml, syncs |
Application managed by pal-e-services terraform |
| pal-e-services var.services |
Declarative service registration: image, port, funnel, overlay path |
<code>k3s.tfvars</code>; PR-gated |
| pal-e-deployments overlay |
Kustomize overlay at <code>overlays/notion-mcp-remote/prod/</code> |
kustomization.yaml + deployment-patch.yaml; no secrets in git |