Skip to main content
Version: 15.2.0

Helm Values: services chart

This page describes all configurable values for the services chart. See values.yaml for defaults.

URL and exposure​

KeyTypeDefaultRequiredDescription
urlstring""✅Full public URL where the homepage is exposed (e.g. https://home.your-domain.com). Used to configure OIDC redirect URIs and routing.
isPaaSbooleanfalse❌Set to true for Mia Platform PaaS deployments. Enables PaaS-specific routing and features.
namespacePrefixstring""❌When set, prefixed (as <namespacePrefix>-<name>) to the names of the resources created by the chart, including the rbac-management-keys Secret, the image pull secret referenced by global.imagePullSecret.name and the TLS secret set in ingressRoute.tls.secretName.
aiServicesClientIdstring""❌Keycloak client of AI Services (ai-services-api), used as token exchange target to call the AI Services gateway. Required when adkBeApp.config.secretStoreBaseUrl is set (that is, with the default adkBeApp.config.aiGatewayEnabled: true).

IngressRoute (Traefik)​

KeyTypeDefaultRequiredDescription
ingressRoute.enabledbooleanfalse❌Create a Traefik IngressRoute resource for the homepage.
ingressRoute.namestringdefault-ingress❌Name of the IngressRoute resource. Prefixed with namespacePrefix when set.
ingressRoute.entryPointsarray["websecure"]❌Traefik entry points to attach the route to.
ingressRoute.middlewaresarray[]❌Additional Traefik middleware references (e.g. IP filtering, rate limiting).
ingressRoute.tlsEnabledbooleanfalse❌Add a tls block to the IngressRoute spec.
ingressRoute.tlsobject{}❌Pass-through Traefik TLS spec (e.g. { secretName: my-cert }). Rendered only when tlsEnabled: true.

Authorization server​

KeyTypeDefaultRequiredDescription
authorizationServer.enabledbooleantrue❌Enable OIDC token validation against the configured issuer.
authorizationServer.issuerstring""✅Keycloak realm issuer URL (e.g. https://keycloak.your-domain.com/realms/my-realm). Used by Envoy and authtool-bff to discover OIDC endpoints and validate tokens.

Telemetry​

KeyTypeDefaultRequiredDescription
telemetry.enabledbooleanfalse❌Enable OpenTelemetry tracing.
telemetry.otelExporterOtlpEndpointstring""❌OTLP endpoint for all signals (traces, metrics, logs).
telemetry.otelExporterOtlpTracesEndpointstring""❌OTLP endpoint for traces only. Overrides the general endpoint for traces.

Secrets​

The chart can manage the authtool-bff key material as a Kubernetes Secret. This is optional: if you prefer to create the secret externally (e.g. via External Secrets Operator), set enabled: false and create the secret manually before installing.

KeyTypeDefaultRequiredDescription
secrets.authtoolBffKeys.enabledbooleanfalse❌When true, the chart creates a Secret named authtool-bff-keys from the values below.
secrets.authtoolBffKeys.privateKeystring""❌RSA private key in PEM format, base64 encoded. Used when authtoolBff.tokenAuthMethod is private_key_jwt.
secrets.authtoolBffKeys.cookieSecretstring""❌Secret used to sign and encrypt session cookies.
secrets.authtoolBffKeys.tokenEncKeystring""❌Key used to encrypt token data stored in Redis.
secrets.authtoolBffKeys.clientSecretstring""❌OIDC client secret. Required when authtoolBff.tokenAuthMethod is client_secret_post or client_secret_basic.
Key generation
ssh-keygen -t rsa -b 4096 -m PEM -f private.key -N "" > /dev/null
privateKey=$(base64 < private.key); rm private.key private.key.pub
cookieSecret=$(openssl rand -hex 64)
tokenEncKey=$(openssl rand -hex 32)

The chart can similarly manage the rbacManagement PostgreSQL connection string as a Kubernetes Secret:

KeyTypeDefaultRequiredDescription
secrets.rbacManagementKeys.enabledbooleanfalse❌When true, the chart creates a Secret named rbac-management-keys (<namespacePrefix>-rbac-management-keys when namespacePrefix is set) from the value below.
secrets.rbacManagementKeys.postgresConnectionStringstring""❌Full PostgreSQL connection string (e.g. postgresql://user:password@host:5432/database), mounted into the rbacManagement pod.

Global image settings​

KeyTypeDefaultDescription
global.labelsobject{}Additional labels added to all resources.
global.annotationsobject{}Additional annotations added to all resources.
global.imagePullSecret.enabledbooleanfalseWhen true, every pod references the image pull secret named in global.imagePullSecret.name. It does not control the creation of the Secret.
global.imagePullSecret.namestring""Name of the image pull secret. The chart creates a kubernetes.io/dockerconfigjson Secret with this name only when all of global.imageCredentials.registry, username, password and email are set; otherwise it must match an existing Secret.
global.imageCredentials.registrystring""Container registry hostname (e.g. nexus.mia-platform.eu). Also used as the fallback registry for any microservice image that does not set its own image.registry.
global.imageCredentials.usernamestring""Registry username. Typically injected at deploy time via --set rather than committed to a values file.
global.imageCredentials.passwordstring""Registry password/token. Typically injected at deploy time via --set.
global.imageCredentials.emailstring""Email associated with the registry credentials (required by the dockerconfigjson format).

Service accounts​

Each microservice gets its own dedicated ServiceAccount, created by default.

KeyTypeDefaultDescription
serviceAccounts.accessControl.enabledbooleantrueCreate a ServiceAccount for accessControl.
serviceAccounts.apiGateway.enabledbooleantrueCreate a ServiceAccount for apiGateway.
serviceAccounts.authtoolBff.enabledbooleantrueCreate a ServiceAccount for authtoolBff.
serviceAccounts.cache.enabledbooleantrueCreate a ServiceAccount for cache.
serviceAccounts.homepageWebsite.enabledbooleantrueCreate a ServiceAccount for homepageWebsite.
serviceAccounts.rbacManagement.enabledbooleantrueCreate a ServiceAccount for rbacManagement.
serviceAccounts.swaggerAggregator.enabledbooleantrueCreate a ServiceAccount for swaggerAggregator.

Common microservice fields​

All microservices share the following configurable fields:

KeyTypeDescription
<service>.enabledbooleanEnable or disable the microservice.
<service>.replicaCountintegerNumber of pod replicas.
<service>.autoscaling.enabledbooleanEnable Horizontal Pod Autoscaler.
<service>.autoscaling.minReplicasintegerMinimum replicas when autoscaling is enabled.
<service>.autoscaling.maxReplicasintegerMaximum replicas when autoscaling is enabled.
<service>.autoscaling.targetCPUUtilizationPercentageintegerTarget average CPU utilization used to scale the HPA.
<service>.image.registrystringContainer registry. Falls back to global.imageCredentials.registry when unset.
<service>.image.repositorystringImage repository path.
<service>.image.tagstringImage tag.
<service>.image.pullPolicystringIfNotPresent, Always, or Never.
<service>.resources.requests.cpustringCPU request.
<service>.resources.requests.memorystringMemory request.
<service>.resources.limits.cpustringCPU limit.
<service>.resources.limits.memorystringMemory limit.
<service>.logLevelstringLog level: trace, debug, info, warn, error.
<service>.envarrayExtra environment variables ({name, value} or {name, valueFrom} objects) injected into the container.

apiGateway​

Envoy reverse proxy. Routes all inbound traffic and delegates per-request authorization to accessControl.

KeyTypeDefaultDescription
apiGateway.enabledbooleantrueDeploy the API gateway.
apiGateway.maxBodyBytesinteger10485760Maximum allowed request body size in bytes (default: 10 MiB).
apiGateway.docling.urlstring""URL of the Docling service of AI Services (e.g. https://<ai-services host>/api/docling/), used for chat attachments and served on /api/docling/. When empty, the route is not created.
apiGateway.docling.maxBodyBytesinteger33554432Maximum allowed request body size in bytes for the /api/docling/ route (default: 32 MiB).
apiGateway.extraVirtualHostsarray[]Additional hostnames (and, optionally, ports) accepted on the main virtual host, e.g. when the homepage is reachable under more than one domain/port.
apiGateway.authorizationServer.audiencesarray["authz-api"]Expected token audiences accepted when validating requests against the authorization server.
apiGateway.config.clusterOverridesobject{}Override upstream cluster addresses. Keys are cluster names; values are objects with address (string) and port_value (integer).

accessControl​

OPA-based ext-authz service. Receives authorization sub-requests from Envoy and allows or denies them based on RBAC policies.

KeyTypeDefaultDescription
accessControl.enabledbooleantrueDeploy the access control service.

authtoolBff​

OIDC Backend-for-Frontend. Handles the PKCE login/logout flow with Keycloak and issues signed, encrypted session cookies.

KeyTypeDefaultDescription
authtoolBff.enabledbooleantrueDeploy the authtool-bff service.
authtoolBff.tokenAuthMethodstringprivate_key_jwtToken endpoint authentication method. One of: private_key_jwt (requires privateKey secret), client_secret_basic, client_secret_post (both require clientSecret secret).
authtoolBff.config.clientIdstring""Required. OIDC client ID registered in Keycloak.
authtoolBff.config.exchangeClientIdstringauthz-token-exchangeToken exchange client used to mint the caller's token for the Catalog and the AI Services gateway. Must not be empty while adkBeApp is enabled.
authtoolBff.config.disableAccessTokenEncryptionbooleanfalseDisable encryption of the access token stored in Redis. Leave false unless required for debugging.
authtoolBff.config.userClaimsarray[]List of Keycloak token claims to forward in the session.
authtoolBff.config.authorizationCacheobject{}Configuration for caching authorization decisions in Redis.

adkBeApp​

ADK Backend App, enabled by default. It reads agents, playbooks, skills and models from the Catalog and, by default, calls the models through the AI Services LiteLLM gateway. The chart fails to render if the required values below are missing; set adkBeApp.enabled: false if you do not need it.

KeyTypeDefaultDescription
adkBeApp.enabledbooleantrueDeploy the ADK Backend App.
adkBeApp.config.catalogApiUrlstring""Required. URL of the Catalog API gateway (e.g. http://api-gateway.catalog.svc.cluster.local:8080).
adkBeApp.config.catalogClientIdstringcatalog-apiClient alias used to exchange the caller's token for the Catalog audience.
adkBeApp.config.aiGatewayEnabledbooleantrueCall every model through the AI Services LiteLLM gateway. When true, litellmProxyApiBase, secretStoreBaseUrl and aiServicesClientId are required. Set to false to call the models directly.
adkBeApp.config.litellmProxyApiBasestring""URL of the AI Services LiteLLM gateway (e.g. https://<ai-services host>/ai-gateway/). Required while aiGatewayEnabled is true.
adkBeApp.config.secretStoreBaseUrlstring""AI Services public URL (e.g. https://<ai-services host>), from which the tenant's LiteLLM key is read. Required while aiGatewayEnabled is true.
adkBeApp.config.googleCloudProjectstringGoogle Cloud project, used to call the models directly on Vertex AI. No longer has a default.
adkBeApp.config.googleCloudLocationstringGoogle Cloud location. No longer has a default.
adkBeApp.config.googleGenaiUseVertexaibooleanUse Vertex AI for Google models. No longer has a default.

cache​

Redis instance used by authtool-bff for session token storage.

KeyTypeDefaultDescription
cache.enabledbooleantrueDeploy the Redis cache.
cache.maxMemorystring"192mb"Redis maxmemory directive. Adjust based on expected concurrent sessions.

homepageWebsite​

Mia Platform homepage frontend Single Page Application.

KeyTypeDefaultDescription
homepageWebsite.enabledbooleantrueDeploy the homepage website.
homepageWebsite.config.baseHrefstring"/home/"Base href for the SPA router. Set to "/" when the homepage is served at the root path.

rbacManagement​

RBAC administration API (REST on port 80/3000, gRPC on port 50051). Manages roles, permissions, and product access, backed by an external PostgreSQL database. Requires the rbac-management-keys Secret (see Secrets).

KeyTypeDefaultDescription
rbacManagement.enabledbooleantrueDeploy the RBAC management service.

swaggerAggregator​

Optional API portal. Aggregates OpenAPI specs from projects and exposes them through a unified documentation interface. Disabled by default.

KeyTypeDefaultDescription
swaggerAggregator.enabledbooleanfalseDeploy the Swagger aggregator.
swaggerAggregator.config.clientIdstring""OIDC client ID used by the aggregator to authenticate when fetching protected OpenAPI specs.