Workload API configuration¶
The Workload API schedules each Workload's container groups onto a resource bundle (runtime.containerGroups[].resourceBundles). A bundle is only eligible for this if its use_cases list includes "workload"—bundles that support other use cases (for example, customModel) are not automatically available to the Workload API.
Default bundles¶
The CPU and GPU resource bundles that ship with DataRobot by default (for example, cpu.medium, cpu.5xlarge, and the default GPU bundles) already include "workload" in their use_cases. No configuration is required to use these out of the box.
Adding custom resource bundles¶
If you configure custom resource bundles for your installation—for example, following the GPU bundle configuration described in Custom Models Configuration—those bundles are not eligible for Workloads unless you explicitly add "workload" to each bundle's use_cases.
This applies to any of the environment variables that define resource bundles: LRS_CPU_CONTAINER_SIZES, LRS_GPU_CONTAINER_SIZES.
core:
config_env_vars:
LRS_GPU_CONTAINER_SIZES: |-
[
{
"id": "gpu.medium",
"name": "GPU - M",
"description": "1 x NVIDIA A10 | 24GB VRAM | 8 CPU | 32GB RAM",
"gpu_maker": "nvidia",
"gpu_type_label": "nvidia-a10g-1x",
"gpu_count": 1,
"gpu_memory_mb": 24576,
"cpu_count": 8,
"memory_mb": 32768,
"use_cases": ["customModel", "workload"]
}
]
In this example, gpu.medium supports both Custom Models and Workloads because its use_cases list includes both customModel and workload. A bundle that should serve Workloads exclusively only needs "use_cases": ["workload"].
Verify bundle availability¶
After updating a bundle's configuration, confirm it's visible to the Workload API by querying the compute bundles endpoint with the workload use case:
curl -s "${DATAROBOT_ENDPOINT}/mlops/compute/bundles/?useCases=workload" \
-H "Authorization: Bearer ${DATAROBOT_API_TOKEN}"
A bundle you've added or updated should appear in the response before you reference its id in runtime.containerGroups[].resourceBundles.
備考:
- Adding a bundle to use_cases for another purpose (such as customModel) does not make it eligible for Workloads—"workload" must be listed explicitly.
Image URI validation¶
The Workload API can check a container's imageUri against an allowlist and a denylist of glob patterns when an artifact is created, updated, or cloned.
Configuration lives under the imageUriValidation key: an enabled flag, an allowlist, and a denylist.
enabled¶
- Type: bool. デフォルト:
false。 - When
false, noimageUriis checked or blocked—the feature is a no-op regardless of whatallowlist/denylistcontain. - When
true, every containerimageUriis checked againstallowlistanddenylist.
imageUriValidation:
enabled: false
allowlist and denylist¶
- Both are lists of glob (
fnmatch-style,*wildcard) patterns matched against the image URI. denylisttakes priority overallowlist—a URI matching anydenylistpattern is rejected even if it also matchesallowlist.- A URI that doesn't match
denylistmust match at least oneallowlistpattern to be accepted; otherwise it's rejected. - Before matching, DataRobot strips any tag (
:tag) or digest (@sha256:...), normalizes Docker Hub short forms to their canonicaldocker.io/...form (for example,alpineandlibrary/alpineboth normalize todocker.io/library/alpine), and lowercases the registry host. Host matching is therefore case-insensitive (MyRegistry.AzureCR.ioandmyregistry.azurecr.ioare equivalent); the image path and tag remain case-sensitive.
The base chart (values.yaml) ships the following defaults, which apply on every cluster unless an overlay overrides them:
imageUriValidation:
enabled: false
allowlist:
- "docker.io/*"
- "*.docker.io/*"
- "quay.io/*"
- "ghcr.io/*"
- "public.ecr.aws/*"
- "registry.gitlab.com/*"
- "*.jfrog.io/*"
- "nvcr.io/*"
denylist:
- "*.dkr.ecr.*.amazonaws.com/*" # AWS ECR (private)
- "*.azurecr.io/*" # Azure ACR
- "gcr.io/*" # GCP GCR
- "*.gcr.io/*" # GCP GCR (regional hosts, e.g. us.gcr.io)
- "*.pkg.dev/*" # GCP Artifact Registry
- "docker.io/datarobot/*"
- "docker.io/datarobotdev/*"
- "*.docker.io/datarobot/*"
- "*.docker.io/datarobotdev/*"
Configure per cluster¶
allowlist and denylist are only declared once, in the base chart—an overlay inherits both as-is unless it explicitly overrides one.
Helm replaces list values entirely rather than merging them, so overriding allowlist or denylist means re-declaring the full list you want, not just the entries you're adding or removing. For example, to keep every default denylist entry except the two datarobotdev globs:
imageUriValidation:
enabled: true
denylist:
- "*.dkr.ecr.*.amazonaws.com/*"
- "*.azurecr.io/*"
- "gcr.io/*"
- "*.gcr.io/*"
- "*.pkg.dev/*"
- "docker.io/datarobot/*"
- "*.docker.io/datarobot/*"
# datarobotdev/* intentionally omitted
To permit an additional registry, add it to allowlist alongside the existing entries:
imageUriValidation:
enabled: true
allowlist:
- "docker.io/*"
- "*.docker.io/*"
- "quay.io/*"
- "ghcr.io/*"
- "public.ecr.aws/*"
- "registry.gitlab.com/*"
- "*.jfrog.io/*"
- "nvcr.io/*"
- "registry.example.com/*"
Artifact and workload validation
Existing artifacts and Workloads aren't re-validated—the check only runs on write (create, update, clone).