document ingress-controller sync mode#2313
Conversation
✅ Deploy Preview for pomerium-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
4f9faa6 to
5d3ef47
Compare
Greptile SummaryThis PR adds a new
Confidence Score: 4/5Safe to merge once the ingress-controller ref in k8s/core/kustomization.yaml is re-pinned to a stable or release-candidate tag. The core kustomization now tracks ingress-controller's live main branch instead of a pinned release, meaning every kubectl apply -k can silently deploy a different, potentially unreleased ingress-controller version. This affects all users of the shared k8s/core overlay, not only new sync-api adopters. k8s/core/kustomization.yaml — the ref=main change affects all downstream kustomizations that include ../core Important Files Changed
Sequence Diagram%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant User as User / kubectl
participant IC as Pomerium Ingress Controller
participant K8s as Kubernetes API
participant API as Pomerium Zero / Enterprise API
User->>K8s: apply Ingress / HTTPRoute object
K8s-->>IC: watch event (object created/updated)
IC->>K8s: read Ingress spec + TLS secrets
IC->>API: sync route / policy / certificate (API token auth)
API-->>IC: 200 OK (entity ID)
IC->>K8s: attach finalizer to Ingress object
User->>K8s: delete Ingress object
K8s-->>IC: watch event (deletion requested)
Note over IC,K8s: Finalizer holds object open
IC->>API: delete corresponding route / policy
API-->>IC: 200 OK
IC->>K8s: remove finalizer → object deleted
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant User as User / kubectl
participant IC as Pomerium Ingress Controller
participant K8s as Kubernetes API
participant API as Pomerium Zero / Enterprise API
User->>K8s: apply Ingress / HTTPRoute object
K8s-->>IC: watch event (object created/updated)
IC->>K8s: read Ingress spec + TLS secrets
IC->>API: sync route / policy / certificate (API token auth)
API-->>IC: 200 OK (entity ID)
IC->>K8s: attach finalizer to Ingress object
User->>K8s: delete Ingress object
K8s-->>IC: watch event (deletion requested)
Note over IC,K8s: Finalizer holds object open
IC->>API: delete corresponding route / policy
API-->>IC: 200 OK
IC->>K8s: remove finalizer → object deleted
Reviews (4): Last reviewed commit: "docs: fix double dash" | Re-trigger Greptile |
Add a new page under Deploy > Kubernetes to document the new API sync functionality in ingress-controller. Provide a basic overview of the feature, instructions for syncing to Pomerium Zero or Pomerium Enterprise, some details about how the sync works, and a short troubleshooting section.
5d3ef47 to
2bdddfb
Compare
desimone
left a comment
There was a problem hiding this comment.
lgtm; one nit possibly and do we want to keep on main or tagged. Given this will stay on main on docs makes sense for me but wanted to highlight.
| namespace: pomerium | ||
| resources: | ||
| - github.com/pomerium/ingress-controller/config/default?ref=v0.32.0 | ||
| - github.com/pomerium/ingress-controller/config/default?ref=main |
There was a problem hiding this comment.
I think I can update the tags to point to v0.33.0 once I do the branch related stuff
| namespace: pomerium | ||
| resources: | ||
| - github.com/pomerium/ingress-controller/config/default?ref=v0.32.0 | ||
| - github.com/pomerium/ingress-controller/config/default?ref=main |
There was a problem hiding this comment.
Pinned version replaced with mutable
ref=main
Changing from ref=v0.32.0 to ref=main means every kubectl apply -k now fetches whatever is on the ingress-controller's main branch at that instant — including unreleased code, RCs, or breaking changes. This affects all users of the core Kustomization, not just users of the new sync feature. Two identical-looking commands run a week apart can deploy different ingress-controller versions with no visible difference in the kustomization YAML.
Red test:
# Day 1 – user deploys; main is at commit abc123 (dev build post-0.33-rc1)
kubectl apply -k github.com/pomerium/documentation//k8s/core?ref=main
# Day 14 – user re-applies after a cluster upgrade; main is now at def456
kubectl apply -k github.com/pomerium/documentation//k8s/core?ref=main
# Silently upgrades ingress-controller to a new dev build with breaking CRD changes
# Cluster starts rejecting ingress resources; no obvious root cause
If the intent is to document the v0.33 feature before the tag is cut, the safest approach is to keep this file pinned to ref=v0.32.0 (or use a release candidate tag) and update it to ref=v0.33.0 when that tag is published.
* document ingress-controller sync mode Add a new page under Deploy > Kubernetes to document the new API sync functionality in ingress-controller. Provide a basic overview of the feature, instructions for syncing to Pomerium Zero or Pomerium Enterprise, some details about how the sync works, and a short troubleshooting section. * fix missing databroker service port * docs: base64 decode before creating api token secret * docs: fix double dash --------- Co-authored-by: Alexandre Lamarre <alex7285@gmail.com>
Summary
Add a new page under Deploy > Kubernetes to document the new API sync functionality in ingress-controller. Provide a basic overview of the feature, instructions for syncing to Pomerium Zero or Pomerium Enterprise, some details about how the sync works, and a short troubleshooting section.
Related
Related to https://linear.app/pomerium/issue/ENG-3576/ingress-controller-use-consolidated-api.
AI disclosure
Claude generated an initial draft of Pomerium Enterprise setup instructions.
Checklist