Deployment Scenarios
OGO can be deployed and accessed in several distinct shapes, depending on cluster type, ingress, and authentication. This page is a quick-reference index — each numbered type is a real, encountered scenario, not a hypothetical combination. Find your type, then follow the link to the full guide.
Use this page the way you'd use a support triage doc: "you're looking for Type 4, check that out."
Which type am I?
Is this a full/shared deployment on a real OpenShift cluster
(the RDU/SNO shape), or a local single-node test cluster?
│
├─ Real cluster ────────────────────────────────────────────┐
│ │
│ Need browser-based OpenShift SSO? │
│ Yes → Type 1 (Envoy Gateway + SSO, full production) │
│ No → Type 2 (direct Route, mTLS) │
│ │
└─ Local test cluster ───────────────────────────────────────┤
│
Need to exercise SSO/OAuthClient/cert-manager code? │
Yes → Type 3 (CRC, OpenShift preset) │
No → Type 4 (MINC) │
▼
Are you connecting from a Dev Spaces workspace instead of a
developer laptop?
Same cluster, unauthenticated route → Type 5
Same cluster, authenticated route → Type 6
Different cluster than Dev Spaces → Type 7
Summary table
| Type | Scenario | Auth | TLS | Cluster | Guide |
|---|---|---|---|---|---|
| 1 | Full production (RDU/SNO shape) | OpenShift SSO (browser) | Let's Encrypt via cert-manager | Any real OpenShift | With Envoy Gateway |
| 2 | Real cluster, direct Route | mTLS | Self-signed | Any real OpenShift | Without Envoy Gateway |
| 3 | Local full-featured test | OpenShift SSO | Self-signed or Let's Encrypt | CRC (OpenShift preset) | With Envoy Gateway + real-cluster testing |
| 4 | Local quick test | mTLS or unauthenticated | Self-signed | MINC | Without Envoy Gateway |
| 5 | Dev Spaces, same cluster, no auth | None (allowUnauthenticated) |
N/A (cluster-internal) | Same as Dev Spaces | Same-cluster setup (simple) |
| 6 | Dev Spaces, same cluster, with auth | Token exchange (OpenShift token → JWT) | Let's Encrypt (external Route) | Same as Dev Spaces | Same-cluster setup (with auth) |
| 7 | Dev Spaces, cross-cluster | Token exchange (OpenShift token → JWT) | Let's Encrypt (external Route) | Different from Dev Spaces | Cross-cluster setup |
Type 1 — Full production (RDU/SNO shape)
The full production shape — this is what RDU runs, and what SNO mirrors for staging. Envoy Gateway fronts the gateway pod over the Gateway API, cert-manager issues a real Let's Encrypt certificate for the public hostname, and users log in via OpenShift SSO through the auth-bridge.
- Auth: OpenShift SSO (browser login), backed by an external identity provider (e.g. Red Hat SSO) configured on the cluster's OAuth config
- TLS: Let's Encrypt via cert-manager on the Gateway API listener. The gateway pod's own listener stays self-signed regardless — see Gateway concept and Authentication concept for why these are two independent termination points, not a contradiction
- Prerequisites: cert-manager, Envoy Gateway, Helm
→ Follow With Envoy Gateway, then OpenShift SSO for user group setup, then Envoy Gateway for ingress architecture details and troubleshooting.
Type 2 — Real cluster, direct Route (no Envoy Gateway)
The simplest production-capable shape. An OpenShift Route passthroughs TLS directly to the gateway pod, which terminates it with its own self-signed certificate. No cert-manager, no Envoy Gateway, no Helm dependency.
- Auth: mTLS client certificates (
spec.auth.openshift.enabled: false) - TLS: operator-managed self-signed,
--gateway-insecureon the CLI - Use when: you don't need browser-based SSO, or don't want the Envoy Gateway/cert-manager dependency
→ Follow Without Envoy Gateway.
Type 3 — Local full-featured test (CRC with OpenShift preset)
CodeReady Containers with the full OpenShift preset (not the
OKD/MicroShift-style preset) has the complete API surface, including
oauth.openshift.io, so it's the only local option that can exercise
SSO- and OAuthClient-related code before pushing to a shared cluster.
Heavier than Type 4 (~8GB RAM) — use it when you're specifically
validating auth-bridge, TLS, or Gateway API changes, not for routine
iteration.
Run the real-cluster e2e suite against it the same way you would against a shared cluster:
KUBECONFIG=~/.kube/crc make test-e2e-real
See Testing against a real cluster
for the full requirement and rationale — this is a hard requirement for
changes touching internal/authbridge/, TLS/cert-manager reconciliation,
or route.gatewayAPI.
→ Follow With Envoy Gateway for the CR shape, substituting CRC's kubeconfig and apps domain.
Type 4 — Local quick test (MINC)
Fastest iteration loop for developing the operator itself. No Envoy Gateway, no cert-manager, no OpenShift OAuth.
- Auth: mTLS client certs, or
allow_unauthenticated_usersfor pure local iteration - TLS: operator-managed self-signed
- Cluster: MINC (MicroShift), driven by
make deployagainst a local kubeconfig — this is the only local cluster type verified against the operator directly. The CI e2e suite runs on native MicroShift instead (test-e2e-microshift-native.yml, installed via microshift-io's Ubuntu.debpackages, no nested containers). Kind is still present as unused kubebuilder scaffolding (make test-e2e) but hasn't been exercised for this project — don't reach for it until it's actually verified
Cannot test: OpenShift SSO, OAuthClient reconciliation, real
cert-manager/Let's Encrypt issuance. MINC does not have the
oauth.openshift.io/user.openshift.io API groups at all — see
Testing against a real cluster
for why this matters and when you need Type 1, 2, or 3 instead.
→ Follow Without Envoy Gateway.
Type 5 — Dev Spaces, same cluster, unauthenticated
A Dev Spaces workspace on the same cluster as OGO, talking to the
cluster-internal gateway Service directly. No token exchange, no
external Route round-trip. Requires
spec.auth.allowUnauthenticated: true — dev/test clusters only, since
this disables authentication for all cluster-internal traffic.
→ Follow Same-cluster setup (simple).
Type 6 — Dev Spaces, same cluster, authenticated
Same cluster as Type 5, but allowUnauthenticated is off (shared or
multi-tenant clusters). The workspace exchanges its OpenShift user token
for an OpenShell JWT via the auth-bridge's /token/exchange endpoint,
then talks to the gateway over the external Route like any other client.
→ Follow Same-cluster setup (with auth).
Type 7 — Dev Spaces, cross-cluster
Dev Spaces and OGO run on different OpenShift clusters. Same token exchange as Type 6, but against the remote cluster's auth-bridge, with a separate kubeconfig to obtain the remote user token. Requires network connectivity from the Dev Spaces pod to the gateway cluster's Routes.
→ Follow Cross-cluster setup.
See also
- Quickstart - the two base deployment paths in full detail
- Dev Spaces - all three Dev Spaces sub-scenarios in full detail
- OpenShift SSO - user groups, token lifetime, troubleshooting
- Envoy Gateway - ingress architecture and troubleshooting
- CONTRIBUTING.md - why Types 3/4 differ in test coverage