feat(dind): multi-queue support and Docker mode fixes#876
Conversation
- Add `queues` list to values: when set, renders one Deployment + Service per queue instead of the single executor Deployment - Each queue merges with global executor.env (queue overrides global) and supports replicaCount and resources overrides - Add global executor.resources and per-queue resources override - Fix readiness probe path: /ready does not exist, use /healthz - Set EXECUTOR_USE_KUBERNETES=false to prevent the executor from auto-detecting Kubernetes mode via KUBERNETES_SERVICE_HOST/PORT (which are always injected into pods); dind chart runs in Docker mode using the dind sidecar - Set enableServiceLinks: false to reduce noise in pod env - Fix private docker registry image tag (registry:3) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
eca8932 to
33125ec
Compare
|
This syntax seems awkward to operate (easier to get wrong than to get right for a new customer's junior admin) queues:
- name: batches
replicaCount: 4
env:
EXECUTOR_QUEUE_NAME:
value: batches
- name: codeintel
replicaCount: 4
env:
EXECUTOR_QUEUE_NAME:
value: codeintelIf possible, this would be simpler: queues:
batches:
replicaCount: 4
codeintel:
replicaCount: 4Or this, if either queue can use the same number of replicas queues:
batches:
codeintel: |
--registry-mirror was pointing at http://executor:5000 which doesn't resolve; the private registry service is private-docker-registry:5000. Also fix ConfigMap condition to render in both single and multi-queue modes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Actually, to help reduce the transition cost of moving customers from the k8s Helm chart to this one, it'd be ideal if this Helm chart could read the same values from an override file which was successful with the k8s Helm chart @michaellzc |
|
Some examples here: https://sourcegraph.sourcegraph.com/search?q=repo:%5Egithub%5C.com/sourcegraph/customer-assets$+lang:YAML+%5Eexecutor:$&patternType=regexp&sm=0 Also to note, it's common to use one Helm values override.yaml file when deploying multiple of our Helm charts, so the values which get read from multiple charts don't need to be maintained in duplicate in separate override files. |
marcleblanc2
left a comment
There was a problem hiding this comment.
Left comments in the PR thread re: ergonomics of using the added YAML syntax; it looks easier to get wrong than it is to get right, especially for some of our self-hosted customer admins.
StatefulSet gives stable pod identity and manages its own PVC via volumeClaimTemplates, replacing the separate PersistentVolumeClaim. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
related https://github.com/sourcegraph/sourcegraph/pull/12881
Summary
queueslist to values: when set, renders one Deployment per queue instead of the single executor Deployment; each queue merges with globalexecutor.env(queue overrides global) and supportsreplicaCountandresourcesoverridesexecutor.resourcesglobal and per-queueresourcesoverride for the executor container/ready(404) to/healthz— the health server only exposes/healthzEXECUTOR_USE_KUBERNETES=falseto prevent the executor from auto-detecting Kubernetes mode viaKUBERNETES_SERVICE_HOST/PORT(always injected into pods); requires executor image withEXECUTOR_USE_KUBERNETESflag support (sourcegraph/sourcegraph@e87902b)enableServiceLinks: falseto reduce env noise in podsdocker/registry:2→registry:3)Test plan
batchesandcodeintelqueueshelm templaterenders correctly for both multi-queue and single-deployment modes🤖 Generated with Claude Code