- Deployment model: On-premises
- Configuration reference: Qodo Helm chart
7.21.0and KEDA2.17.2. - Live validation: KEDA
2.17.2on GKE, using bounded CPU and RabbitMQ canaries.
ScaledObject for each enabled Deployment.
Your cluster team installs and operates KEDA; the Qodo chart does not install it.
The examples below cover CPU scaling for the Platform API and queue scaling
for the Git event review worker. They are starting configurations, not capacity
recommendations. Validate them against your pinned chart, workload, database
connection budget, and model-provider quotas before production use.
Before you begin
Have your cluster administrator install a KEDA release compatible with your Kubernetes version before applying the Qodo scaling values. A standard installation includes the KEDA operator, metrics API server, admission webhooks with working TLS, and CRDs. Pin the operator chart through your approved Helm or GitOps process. The Qodo chart creates workload scaling resources; it does not install these cluster components. For more information, see Deploying KEDA.
Also prepare your pinned Qodo chart, existing customer values, namespace, and
Kubernetes context. Cluster-wide operator/CRD installation belongs to your
platform team; namespaced workload configuration belongs to your Qodo
deployment workflow.
KEDA scales workloads. Your node provisioning and secrets operators have
separate responsibilities. You can use an existing secrets operator to supply
the credentials consumed by Qodo and KEDA. For more information, see Manage Qodo secrets with External Secrets Operator.
Select your target explicitly. These examples use namespace
qodo:
keda.
Substitute your actual names if your platform team customized them. Confirm
the external-metrics API belongs to your intended KEDA installation, resolve
any failed readiness check, and require yes for both permission checks
before proceeding.
For CPU scaling, also verify the separate resource-metrics API:
1. Choose a workload and metric
Keep
minReplicaCount: 1 for the examples. Scaling a webhook receiver or API
to zero requires a separate request activation design. CPU metrics alone also
cannot reactivate a workload with no running Pods.
2. Configure CPU scaling
Merge this block into your customer values, or save it askeda-cpu-values.yaml if your installation uses separate override files:
keda-cpu-values.yaml
qodo-platform Deployment. The chart omits the
Deployment’s spec.replicas when scaledObject.enabled is true, so Helm does
not continually reset KEDA’s desired replica count.
KEDA creates and manages an HPA. Do not attach an independent HPA to the same
Deployment. Setting autoscaling.enabled: false keeps the chart’s separate
autoscaling flag off; it does not remove an HPA managed elsewhere.
CPU utilization is relative to CPU requests. Check the resources in your
installed values before choosing a threshold. For more information, see KEDA CPU scaler.
3. Configure RabbitMQ queue scaling
Queue scaling is useful when workers spend time waiting for model responses and CPU does not reflect pending work. Use the RabbitMQ subscription queue consumed by the selected worker. The example below targetsqodo-git, the Deployment behind
pr-agent-litegit, and its subscription
vcs-events.pr-agent-pro-__pass_through__. Confirm the queue exists in your
broker and release before using it. This is not the queue of the separate
pr-agent-agentic Deployment.
Replace REPLACE_WITH_RABBITMQ_MANAGEMENT_URL with the management API base
URL reachable from KEDA, including its scheme and port. Do not include
credentials in the URL. For an in-cluster broker, use a namespace-qualified
Service DNS name and include the trailing /. KEDA resolves names from its
operator namespace, so a short name that works inside a Qodo Pod can fail
here. For more information, see DNS for Services and Pods.
Use HTTPS when your broker provides TLS, and configure
the trusted CA in your KEDA installation if needed. The http protocol below
selects the management API and also supports an HTTPS URL.
keda-rabbitmq-values.yaml
username and password through
TriggerAuthentication. Grant that identity the broker permissions required
to read the selected queue through the management API.
The management API includes unacknowledged messages in the queue metric when
excludeUnacknowledged is false. This helps account for reviews still being
processed. Preserve the chart’s shutdown grace period and test an in-progress
review during scale down. For more information, see KEDA RabbitMQ Queue scaler.
4. Render and apply the configuration
Keep your installation’s existing values order. If your bundle provides one editable values file, merge the selected configuration into that file. If using override files, place them after the base and customer values. The following example uses the unpacked chart and separate overrides. Replacemy-values.yaml with the customer values file used for your installation.
Select only the ScaledObject templates when inspecting the output so the command
does not print the chart’s generated credentials:
scaleTargetRef matches its intended Deployment and each
authenticationRef has a matching resource. Install or upgrade using your
existing approved deployment procedure and the same values. For more
information, see Deploy Qodo using Helm.
For GitOps, let one controller own each ScaledObject and authentication
resource. Inspect the rendered Deployments to confirm spec.replicas is
absent and that no other application continually reapplies a fixed count.
After applying, confirm the ScaledObject resources were created and Qodo Pods are running:
5. Verify scaling with real work
ScaledObject is ready and the generated HPA has a usable
metric. Then:
1
Submit representative code review work through your normal Git integration.
2
Observe the queue or CPU metric and confirm replicas increase when the target is exceeded.
3
Confirm new Pods become ready and reviews complete with the expected findings.
4
Let the load fall and confirm replicas return toward the minimum after the stabilization window, including while a review is still running.
5
Check database connections, model-provider throttling, Pod scheduling, and review failures throughout the run.
ScaledObject or increasing replica count does not establish that
reviews complete correctly. Record the workload, limits, and outcome of this
exercise before promoting the configuration.
Pause scaling during maintenance
Some Qodo upgrades require services to be stopped temporarily. Pause their KEDA autoscalers before the upgrade so they do not restart workloads the upgrade intentionally stops. Also pause any GitOps reconciliation that would remove your maintenance annotations. For each affectedScaledObject, for example qodo-git:
<component>.scaledObject.annotations for the maintenance upgrade. For
GitOps, make the pause part of your desired configuration. Verify the KEDA
HPA no longer controls the target before the upgrade starts.
Do not use paused-replicas to override the upgrade’s replica decisions.
After the upgrade completes successfully and the target Deployments specify
the new image and configuration, remove the maintenance annotation from the owning
configuration and the live object. Inspect the Deployment’s image and
configuration first: resume only after confirming the target configuration is applied.
An autoscaled Deployment may remain at zero after the upgrade.
Validation scope
Live development-cluster tests verified CPU and RabbitMQ scale-out and scale-in, broker authentication through a namespaced Secret, and HPA removal and recreation during pause/resume. An initial broker DNS failure was reproduced and corrected with namespace-qualified Service DNS. These tests used isolated canaries with at most two replicas and a shortened scale-down stabilization window. They did not scale the shared Qodo Deployments or run a production review under load. Verify your chosen limits, shutdown grace period, and end-to-end review behavior before production use.Troubleshoot scaling
Related resources
- Manage Qodo secrets with External Secrets Operator: Supply credentials through your existing secret-management workflow.
- Monitor Qodo with Prometheus and Grafana: Observe workload behavior while tuning scaling.
- Deploy Qodo using Helm: Follow the installation and upgrade procedure for your release.