Skip to main content
  • Deployment model: On-premises
  • Configuration reference: Qodo Helm chart 7.22.0, product 3.0.
Use your existing ingress controller to expose Qodo’s portal, APIs, sign-on, and Git webhooks. The Qodo chart creates routing resources. Your platform team owns the controller, load balancer, network access, DNS, and certificates.

Choose your controller

Choose the pattern that matches your controller, even if you run it on a different cloud. Do not combine annotations from multiple controller profiles.

AWS ALB

IP targets, ACM TLS, and backend health checks.

Google Cloud GKE

GCE controller, network endpoint groups, and BackendConfigs.

Azure Application Gateway

AGIC, private access, TLS, and readiness probes.
These profiles are values examples verified by rendering the released chart. They have not been installed on every cloud. Complete the provider-specific acceptance checks in your environment before opening traffic.

Prepare DNS and certificates

Set global.baseDomain in your customer values. The chart uses these hosts: One wildcard DNS record and certificate for *.<baseDomain> covers the defaults. For custom hostnames, set the corresponding global.ingress.*Hostname values and cover every resolved hostname in DNS and the certificate. Keep all six hostnames distinct. Resolve the auth host from inside the cluster as well as from user browsers. With Kubernetes Secret-based TLS, create the Secret named by global.tlsSecretName in the Qodo namespace before installation. If you use cert-manager, have the certificate become ready before disabling HTTP or requiring an HTTPS-only listener. ALB uses the configured ACM certificate. Keep TLS termination at the approved edge and use the backend protocol in your selected profile. The shipped service ports use plaintext inside the cluster. Configure backend TLS separately if your network policy requires it. Preserve the original host and forwarded HTTPS scheme so OIDC issuer URLs and callbacks remain correct. A private ingress requires a network path from every caller, including your Git provider. Cloud-hosted Git webhooks cannot reach a private address without an approved connectivity path. If the webhook host needs different exposure from the other hosts, design separate customer-managed routes. The chart creates one Ingress with annotations shared by all hosts.

Use an existing controller or OpenShift Routes

Use the actual IngressClass name supplied by your platform team. This example assumes an existing Traefik class and a pre-created TLS Secret:
ingress-existing-controller-values.yaml
Configure the controller’s backend protocol, request timeouts, forwarded headers, and HTTPS-only policy through its supported configuration. Test sign-on and a complete code review through that controller.
To hand routing to your own Gateway API, service mesh, or separately managed Ingress, set both global.ingress.enabled: false and global.route.enabled: false. Provision routes for every host and path in the table first. That switch suppresses the chart’s Ingress; it does not create HTTPRoutes, listeners, certificates, or DNS records.

Render and verify

Apply one ingress overlay after your existing base and customer values. For GKE, also append the release’s values-gke.yaml. Inspect only the Ingress template so generated Secret values do not appear in the output:
After your normal Helm or GitOps deployment:
Use your resolved custom auth hostname if you set an override. Verify each outcome before opening traffic:
  • Confirm the certificate is trusted and the HTTPS issuer matches the auth hostname.
  • Check that the load-balancer provider reports every backend as healthy.
  • Fetch OIDC discovery with an HTTP/1.1 client, including from inside the cluster.
  • Complete SSO from a browser and load the portal.
  • Exercise the SDK endpoint with your normal client.
  • Deliver a real Git provider webhook and confirm its code review completes.
To check HTTP/1.1 explicitly:
An assigned load-balancer address alone does not prove these flows work.

Troubleshoot routing

Fix the owning values or infrastructure configuration and let its controller reconcile. Keep the existing Ingress during diagnosis; recreating it can change the address and interrupt DNS.

Next steps