- Minimum Kubernetes version: 1.25
- Helm major version: 3
- External PostgreSQL versions: 15 or 16, with pgvector available
onprem-base.yaml, and customer values template from the same Qodo
installation bundle or release.
Red Hat OpenShift support
- Qodo product version: 3.1
- Supported Red Hat OpenShift Container Platform versions: 4.12 and later
What you need to provision
The bundled LLM gateway does not host a model. Your upstream AI service must
already be available. You can also configure an existing compatible gateway
instead of using the bundled gateway.
For more information, see Deploy Qodo using Helm.
For provider-specific ingress values and backend health configuration, see
Configure ingress. For the operator and workload values
layers and their installation order, see
Configure Kubernetes add-ons with values files.
Cluster access and capacity
Installkubectl and Helm on your deployment machine. Confirm the intended
cluster context and namespace:
qodo with your namespace. Have your cluster administrator create it
before installation. Keep the Helm release name qodo, because the chart uses
fixed resource names.
The ordinary Qodo installation uses namespaced permissions. Cluster-wide
administration is needed to prepare resources such as the ingress controller,
StorageClass, Prometheus Operator, KEDA, or External Secrets Operator. The bundle’s READINESS.md includes an
installer Role, including permission to observe Pods, rollouts, and setup
Jobs. Enabling ServiceMonitors also requires permission to manage
monitoring.coreos.com ServiceMonitor resources in the Qodo namespace.
Enable optional integrations only after their operators and APIs are ready.
KEDA requires namespaced permissions for ScaledObjects and
TriggerAuthentications. External secret synchronization requires permissions
for ExternalSecrets and any new namespaced SecretStore, plus the controller’s
target-Secret and cloud access. For more information, see Autoscale Qodo with KEDA
and Manage Qodo secrets with External Secrets Operator.
Size the cluster from the exact chart and values you will deploy. Account for:
- All enabled workloads and replicas, including sidecars.
- CPU and memory requests, limits, and headroom for application traffic.
- Setup and migration Jobs, plus temporary overlap during rolling updates.
- Cluster services and your monitoring stack, in addition to Qodo.
Persistent storage
Provide dynamic provisioning or matching PersistentVolumes. The default claims useReadWriteOnce access. For service-specific values, claim names,
customer-managed Gitway storage, and retention procedures, see
Configure persistent storage.
Review the effective values for your release, volume expansion, reclaim
policy, and backup and restore procedures. Initial claim sizes are not
production capacity estimates. Allocate monitoring storage separately
according to your retention policy.
Check that your StorageClass can provision in the zones where the Pods run:
Pending after installation, inspect it with
kubectl describe pvc -n qodo <claim-name> before retrying Helm.
RabbitMQ storage
The default RabbitMQ storage allocation may be insufficient for production workloads. Calculate its capacity from a comparable installation’s used disk space, monthly Pull Request (PR) traffic, and actual queue retention. Include failed messages in dead-letter queues and free-space headroom. For the calculation and verification commands, see Size RabbitMQ for traffic and retention.Database preparation
The shipped base values use an external PostgreSQL server. Setglobal.externalDatabase.host and global.externalDatabase.adminUser in your
customer values. Create the qodo-db-admin Secret in the same namespace, with
the POSTGRES_PASSWORD key, through your approved secret-management process.
Have your database administrator confirm:
- Pods can reach the server on TCP port
5432, including through firewall and database access rules. - TLS connectivity matches
global.externalDatabase.sslMode. The defaultrequireencrypts the connection without verifying the server’s identity. - The
vectorextension is available for the databases that need it. - The installation identity has
LOGIN,CREATEDB, andCREATEROLE, plus the role-administration grants described in the bundle’sREADINESS.md. - The Qodo Agent Runtime database identity has neither
SUPERUSERnorBYPASSRLS. If the installation identity has either attribute, arrange a dedicated runtime identity with Qodo before installation. - Backups, restore ownership, capacity, and connection limits cover all enabled components and replicas.
postgres.enabled: true and
global.externalDatabase.host: qodo-postgres. Enabling the server alone does
not redirect applications to it. Prepare its storage and backup plan first.
For more information, see Helm chart configuration reference.
DNS, TLS, and network access
Prepare distinct hostnames for these entry points:
Use a wildcard certificate or a certificate covering all resolved names. For
Ingress deployments, create the TLS Secret named by
global.tlsSecretName,
or configure your certificate controller to create it. ALB uses its configured
ACM certificate instead. On OpenShift, arrange the router certificate and
configure Routes. For more information, see
Configure ingress.
Verify DNS and TLS from both the user network and the cluster. Pods must reach
the authentication hostname using its configured issuer URL. Your Git
provider must reach the webhook hostname; cloud-hosted providers need a path
into your environment.
Apply network policies to permit these paths. If dependencies use a private
certificate authority, prepare the
custom-ca-cert Secret with your CA
certificates before installing. Public roots remain in the application trust
stores. The bundled LLM gateway needs separate trust configuration. For more
information, see Private certificate authority.
For an air-gapped installation, arrange the chart bundle and a complete image
mirror before deployment. Registry credentials alone do not make images
available offline.
For more information, see Network and security considerations.
Credentials and installation order
1
Prepare cluster and infrastructure
Prepare the cluster, namespace, traffic entry point, DNS, TLS, and storage.
2
Prepare external dependencies
Prepare the database, model endpoint, identity-provider application, and Git provider access.
3
Obtain the Qodo bundle
Receive the Qodo bundle or licensed registry access. Follow the image-pull Secret procedure for your delivery path: a licensed registry pull supplies image credentials through the chart; a direct bundle requires
qodo-pull.4
Prepare optional secret and scaling operators
If using external secret synchronization, install and verify ESO, its webhook/CRDs, cloud identity, network access, and store before reconciling the required Secrets. If enabling autoscaling, install and verify KEDA and its APIs/CRDs first; CPU scaling also needs Kubernetes Metrics Server. See Manage Qodo secrets with External Secrets Operator and Autoscale Qodo with KEDA.
5
Create Kubernetes Secrets
Create or reconcile the database, LLM, identity-provider, and TLS Secrets specified by the installation guide in your Qodo namespace. When using ESO, wait for the store and every required ExternalSecret to report Ready and verify the target names/keys before deploying Qodo. Keep credentials out of values files and source control.
6
Prepare monitoring prerequisites
If enabling ServiceMonitors during installation, prepare Prometheus Operator, its CRDs, discovery permissions, and your Prometheus and Grafana deployment first.
7
Run the readiness check
Fill in your customer values and run the readiness check from the directory containing the bundle’s
qodo-check.sh:FAIL and review every SKIP. A skipped check does not establish
readiness. Use the same values files in the same order for the check and Helm.
After installing, run the check again, verify sign-on with an administrator
and an ordinary user, and trigger a test code review. Confirm monitoring
targets are being scraped before opening traffic.
Next steps
- Deploy Qodo using Helm: Configure values and deploy the prepared environment.
- Configure Kubernetes add-ons with values files: Select operator integration overlays and preserve their deployment order.
- Configure ingress: Choose and verify your cluster’s routing and TLS pattern.
- Monitor Qodo with Prometheus and Grafana: Enable scraping, query metrics, and troubleshoot missing data.