Skip to content

docs(deploy): document gateway-trusted-ca for OpenShift OIDC - #459

Open
bsquizz wants to merge 4 commits into
mainfrom
docs/gateway-trusted-ca-openshift
Open

docs(deploy): document gateway-trusted-ca for OpenShift OIDC#459
bsquizz wants to merge 4 commits into
mainfrom
docs/gateway-trusted-ca-openshift

Conversation

@bsquizz

@bsquizz bsquizz commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Documents the required gateway-trusted-ca ConfigMap setup for OpenShift clusters using gateway OIDC (Keycloak)
  • Adds troubleshooting entry for the "OIDC key refresh failed" / "JWKS fetch failed" error
  • Documents the privileged SCC requirement for sandbox pods on OpenShift
  • Updates deployment README index with links to the new sections

Context

gateway-trusted-ca (8c56a6c)

On OpenShift, the gateway container image (scratch/distroless) has no system CA bundle. When OIDC is configured against a Keycloak instance exposed via an OpenShift Route, the gateway cannot complete the TLS handshake to fetch JWKS keys — the ingress CA that signed the Route's certificate is not trusted.

The control plane already supports injecting a trusted CA via the gateway-trusted-ca ConfigMap (SSL_CERT_FILE + volume mount), but this prerequisite was undocumented.

privileged SCC for sandbox pods (facf463)

On OpenShift, the openshell-sandbox service account needs the privileged SCC in each tenant namespace or sandbox pods fail to start. This requirement was undocumented.

Test plan

  • Verify the oc get configmap router-ca command works on a ROSA/OCP cluster
  • Confirm the ConfigMap name (gateway-trusted-ca) and key (ca-bundle.crt) match the constants in gateway_reconciler.go
  • Verify the oc adm policy command for the privileged SCC works on a ROSA/OCP cluster
  • Verify links in the deployment README resolve correctly

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://openshift-online.github.io/agent-control-plane/pr-preview/pr-459/

Built to branch gh-pages at 2026-08-03 14:21 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@JGiola

JGiola commented Jul 30, 2026

Copy link
Copy Markdown

Can we add a configuration where we can set the name of the ConfigMap to load? copying the value from the injected ones to another is prone to having it rot. What if the CA inside it expire? or is rotated for security? we will have downtime, if we point to the one managed automatically by the OpenShift automations we are sure to always have the latest one...

@YiqinZhang

Copy link
Copy Markdown

🤖 Amber Review

Pure documentation addition filling a real operational gap. Adds gateway-trusted-ca ConfigMap setup instructions and troubleshooting steps for OpenShift OIDC with self-signed certs.

Findings:

  • Minor: No code link from gateway_reconciler.go constants to the docs — if the ConfigMap name/key ever changes, docs will silently drift. Worth a cross-reference comment.
  • Minor: oc get configmap router-ca -n openshift-config-managed may not apply to all OCP variants (e.g., ROSA with STS) — a brief variant note would help.

No code changes, no security surface touched. Content accurately reflects the running implementation.

Confidence: High


— Amber, ACP codebase intelligence

bsquizz and others added 3 commits August 3, 2026 10:14
On OpenShift, the gateway's minimal container image lacks the cluster
ingress CA, causing JWKS fetch failures when OIDC is configured against
a Keycloak Route. Document the required gateway-trusted-ca ConfigMap
setup and add a troubleshooting entry for the "OIDC key refresh failed"
error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
On OpenShift, the openshell-sandbox service account needs the privileged
SCC in each tenant namespace or sandbox pods fail to start.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The control plane automatically creates the required RoleBinding for
the openshell-sandbox service account when a gateway is provisioned,
so the manual oc adm policy command is only needed when pre-creating
namespaces.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bsquizz
bsquizz force-pushed the docs/gateway-trusted-ca-openshift branch from facf463 to ac1eb00 Compare August 3, 2026 14:17
Add bidirectional cross-references between gateway_reconciler.go
constants and the deploy docs so name changes don't silently drift.
Note that router-ca may not exist on ROSA with STS or other managed
OCP variants.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bsquizz

bsquizz commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

Can we add a configuration where we can set the name of the ConfigMap to load? copying the value from the injected ones to another is prone to having it rot. What if the CA inside it expire? or is rotated for security? we will have downtime, if we point to the one managed automatically by the OpenShift automations we are sure to always have the latest one...

Let's write a new spec for this if we want to change the behavior. I'll keep this PR to simply be a doc PR

@bsquizz
bsquizz marked this pull request as ready for review August 3, 2026 14:26
@github-actions github-actions Bot added auto-merge-pending PR eligible for auto-merge, waiting for checks component/control-plane docs labels Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants