Skip to content

Configuration

Everything is owned by this chart except kuberay-operator.*, which passes through to the KubeRay operator chart (1.3.0).

ValueDefaultPurpose
image.repositoryrayproject/rayUsed for both head and workers.
image.tag2.43.0Ray version. Written verbatim into the RayService’s rayVersion, so tag custom images with the plain Ray version.

For production, build a custom image with your model code — see Deploying models. Notebook environments must match this version; see Connecting from Jupyter.

ValueDefaultPurpose
head.resources.requestscpu: 1, memory: 2Gi
head.resources.limitscpu: 2, memory: 4Gi
head.runtimeClassNameunsete.g. nvidia.
head.containerEnv[]Extra environment variables.
head.tolerations[]Extra tolerations; an nvidia.com/gpu one is injected automatically when the GPU resource is requested.
head.readinessProbe{}Empty means KubeRay’s built-in probe applies.
head.livenessProbe{}Same.
ValueDefaultPurpose
worker.replicas1Worker pods.
worker.minReplicas1Lower clamp on replicas. Pinned to 1 in values.yaml — it does not follow replicas.
worker.maxReplicas1Upper clamp on replicas. Same caveat; leave it below replicas and you get maxReplicas workers.
worker.resources.requestscpu: 1, memory: 2Gi
worker.resources.limitscpu: 2, memory: 4Gi
worker.runtimeClassNameunsete.g. nvidia.
worker.containerEnv[]Extra environment variables.
worker.tolerations[]As above.
worker.readinessProberaylet healthzOverrides KubeRay’s Serve-dependent default.
worker.livenessProberaylet healthzSame command; longer thresholds.
ValueDefaultPurpose
serve.proxyLocationEveryNodeEveryNode, HeadOnly, or Disabled.
serveApplications[]Applications, serialized into serveConfigV2.

Each entry needs a name and an import_path resolvable inside the image. route_prefix is optional — it defaults to /, which means you must set it explicitly once you have more than one application. Anything else valid in Ray Serve’s config schema is passed through. See Deploying models.

ValueDefaultPurpose
nebariapp.enabledfalseRender NebariApp resources.
nebariapp.hostnameunsetServe endpoint hostname. Required for the serve NebariApp.
nebariapp.serve.enabledfalseExpose the serve endpoint externally.
nebariapp.dashboard.enabledtrueCreate a NebariApp for the dashboard.
nebariapp.dashboard.hostnameunsetRequired when the dashboard is enabled — the render fails without it.
nebariapp.dashboard.landingPage.*disabledLanding-page tile; dashboard only.
nebariapp.service.name""Overrides the backend service for both resources.
nebariapp.service.servePort8000
nebariapp.service.dashboardPort8265
nebariapp.gatewaypublicpublic or internal; applies to both.
ValueDefaultPurpose
auth.enabledfalseOIDC at the gateway, for both resources.
auth.providerkeycloak
auth.provisionClienttrueOperator creates the Keycloak client.
auth.redirectURI/oauth2/callbackEnvoy Gateway rejects a bare /.
auth.scopesopenid, profile, email

Auth is all-or-nothing across both endpoints.

ValueDefaultPurpose
orgCABundle.configMapName""ConfigMap with key ca.crt. Empty disables injection entirely.
orgCABundle.initImagealpine:3.20Needs only sh and cat.

Read Organization CA bundle before enabling this under Argo CD — the example sync policy can silently drop the injection.

ValueDefaultPurpose
kuberay-operator.enabledtrueInstall the operator with the chart. Set false when one already runs cluster-wide.
nameOverride""Changes the chart name in the fullname helper — and therefore both Service names.
fullnameOverride""Same, more directly.
image:
repository: your-registry/your-ray-image
tag: "2.43.0"
head:
resources:
requests: { cpu: "2", memory: "8Gi" }
limits: { cpu: "4", memory: "16Gi" }
worker:
replicas: 2
minReplicas: 2
maxReplicas: 2
runtimeClassName: nvidia
resources:
requests: { cpu: "4", memory: "16Gi" }
limits: { cpu: "8", memory: "32Gi", nvidia.com/gpu: 1 }
serveApplications:
- name: my-model
route_prefix: /predict
import_path: myapp.model:app
deployments:
- name: MyModel
num_replicas: 2
ray_actor_options:
num_gpus: 1
nebariapp:
enabled: true
serve:
enabled: false
dashboard:
enabled: true
hostname: ray-dashboard.example.com
landingPage:
enabled: true
auth:
enabled: true
gateway: internal
Terminal window
helm dependency update chart # once — templating fails without the kuberay-operator subchart
helm template rayserve chart --set nebariapp.enabled=true \
--set nebariapp.dashboard.hostname=ray-dashboard.example.com | less
helm -n rayserve get values rayserve
helm -n rayserve get values rayserve --all