Skip to main content

DIAL Extension chart configuration

The dial/dial-extension chart deploys a container as a Kubernetes Deployment and Service, with optional routing, storage, scaling, and observability resources. It is used for adapters, applications, Chat, themes, and Admin frontend/manager aliases. This reference describes chart 3.1.1 for platform engineers preparing workload values.

The release's README parameter table and values.yaml list every nested field. The tables below group those fields by the resource they control. When used under another chart, put values below the alias, such as openai, frontend, or manager.

Image and runtime defaults​

ValueDefaultPurpose
image.registry, image.repository, image.tagdocker.io, empty, latestSet a repository and pin the image tag or digest for the chosen service.
image.digest, .pullPolicy, .pullSecretsEmpty, IfNotPresent, []Digest and registry pull behavior.
replicaCount1Replicas before optional HPA control.
containerPorts.http, containerPorts.metrics5000, 9464Container ports; override for services using different ports.
resourcesPresetnanoCommon-library CPU/memory preset; none disables the preset.
resources{}Explicit requests/limits; when nonempty, takes precedence over resourcesPreset.
service.type, service.ports.httpClusterIP, 80Service exposed inside the cluster.
livenessProbe.enabled, readinessProbe.enabled, startupProbe.enabledfalse, false, falseEnable the appropriate health checks. Default probe paths are /health.
containerSecurityContext.readOnlyRootFilesystemtrueContainer filesystem policy. Add writable mounts where the image needs them.

Shared workload settings​

These setting families also appear in the Core chart and Admin Backend workload, with chart-specific defaults. The Extension chart is the source of values for its dependency aliases.

Value familyDefault / behavior
global.imageRegistry, .imagePullSecrets, .storageClassShared registry, registry Secrets, and storage class overrides.
global.compatibility.openshift.adaptSecurityContextdisabled; OpenShift security-context adaptation.
nameOverride, fullnameOverride, namespaceOverrideEmpty; resource naming and namespace overrides.
commonLabels, commonAnnotations, podLabels, podAnnotations{}; shared and pod-specific metadata.
extraDeploy[]; additional manifests.
diagnosticMode.enabledfalse; workload diagnostics mode.
command, args[]; container startup overrides.
env, secrets, extraEnvVars, extraEnvVarsCM, extraEnvVarsSecretPlain env, generated Secret, native env entries, and existing configuration references. See Configuration sources.
extraContainerPorts[]; additional container ports.
livenessProbe, readinessProbe, startupProbeNative probe fields and timing; enabled gates each generated probe.
customLivenessProbe, customReadinessProbe, customStartupProbe{}; custom probe definitions.
podSecurityContextEnabled; group 1001 with filesystem group policy Always, plus configurable sysctls/supplemental groups.
containerSecurityContextEnabled; UID/GID 1001, non-root, no privilege escalation, drop all capabilities, RuntimeDefault seccomp. The Extension default root filesystem is read-only.
automountServiceAccountTokenfalse; pod token mounting.
serviceAccount.create, .name, .annotations, .automountServiceAccountTokentrue, empty, {}, false; create or select a service account.
hostAliases, hostNetwork[], false; pod host resolution/networking.
nodeSelector, affinity, tolerationsEmpty; Kubernetes scheduling constraints.
topologySpreadConstraints, priorityClassName, schedulerNameEmpty; topology, priority, and scheduler choices.
updateStrategyRollingUpdate.
terminationGracePeriodSeconds, lifecycleHooksEmpty / {}; shutdown timing and hooks.
pdb.create, .minAvailable, .maxUnavailableDisabled, empty availability bounds.
autoscaling.hpaDisabled; default replica bounds 1–3. Configure CPU/memory targets, custom rules, annotations, and behavior as needed.
extraVolumes, extraVolumeMounts, sidecars, initContainers[]; pod composition and mounts.

Service and external routing​

Value familyPurpose
serviceType, HTTP port/node port, ClusterIP, load-balancer IP/source ranges, traffic policy, annotations, extra ports, and session affinity.
ingress.enabledfalse by default.
ingress.ingressClassName, .hosts, .path, .pathTypeController class, hostnames, path (/), and path type (Prefix).
ingress.tls, .annotations, .serviceName, .extraPaths, .extraRulesTLS and additional routing controls.
httpRoute.enabledfalse by default; generates a Gateway API HTTPRoute.
httpRoute.parentRefs, .hostnames, .rules, .annotationsAttach to existing Gateways and configure HTTP routing.

Creating an Ingress or HTTPRoute does not install a controller, Gateway, or TLS issuer. Select routes and backend ports appropriate for the application. Prefer one intended exposure path for each workload.

Storage​

ValueDefaultPurpose
persistence.enabledfalseAttach persistent storage.
persistence.mountPath, .size, .accessModes/data, 8Gi, [ReadWriteOnce]Volume mount and claim defaults.
persistence.existingClaim, .storageClass, .subPathEmptyExisting claim, storage class, and mount subpath.
persistence.annotations, .dataSource, .selector{}Claim metadata, source, and selection.
temporary.mountPath/tmpTemporary volume mount.
temporary.subPath, .sizeLimit, .mediumEmptyTemporary-volume controls.

The container must use the selected mount path; chart persistence does not alter application configuration. Review claim access modes before scaling a workload that mounts a volume.

Network policy​

networkPolicy.enabled defaults to true in Extension chart 3.1.1. Both allowExternal and allowExternalEgress default to true. Configure the policy for the intended peers, and use a cluster network implementation that enforces NetworkPolicy.

extraIngress and extraEgress add rules. ingressPodMatchLabels, ingressNSMatchLabels, and ingressNSPodMatchLabels select allowed peers. networkPolicy.metrics configures metrics ingress separately, including its allowExternal and namespace/pod selectors.

Metrics​

Value familyDefault / behavior
metrics.enabledfalse; creates the dedicated metrics Service.
metrics.serviceClusterIP, HTTP port 9464, plus the same exposure/session settings as the main Service.
metrics.serviceMonitor.enabledfalse; requires the metrics Service and Prometheus Operator CRDs.
metrics.serviceMonitor.port, .pathhttp-metrics, /metrics.
metrics.serviceMonitor.namespace, .annotations, .labels, .selectorResource placement and discovery metadata.
metrics.serviceMonitor.interval, .scrapeTimeout, .jobLabel, .honorLabelsScrape timing and labels; honorLabels defaults to false.
metrics.serviceMonitor.metricRelabelings, .relabelingsScrape relabeling rules.
metrics.prometheusRule.enabledfalse; creates a PrometheusRule when enabled.
metrics.prometheusRule.namespace, .annotations, .labels, .rulesRule placement, metadata, and expressions.

The application must actually expose metrics on that port/path. For Deployment Manager, for example, use /actuator/prometheus rather than the chart's /metrics default. Exporter configuration belongs to the deployed service.

Example: DIAL Model Provider workload​

image:
repository: epam/ai-dial-model-provider
tag: 0.1.0-rc.0
containerPorts:
http: 5000
env:
DIAL_URL: http://dial-core.dial.svc.cluster.local
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: "1"
memory: 1Gi

This example renders one DIAL Model Provider workload, which serves all its adapters. Core still needs model configuration pointing to its Service, and provider credentials must be configured as described in DIAL Model Provider configuration. For an application image, use Custom Apps deployment.

Further reading​