Skip to main content

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.
isPaaSbooleanfalseSet to true for Mia Platform PaaS deployments. Enables PaaS-specific routing and features.

IngressRoute (Traefik)

KeyTypeDefaultRequiredDescription
ingressRoute.enabledbooleanfalseCreate a Traefik IngressRoute resource for the homepage.
ingressRoute.entryPointsarray["websecure"]Traefik entry points to attach the route to.
ingressRoute.middlewaresarray[]Additional Traefik middleware references (e.g. IP filtering, rate limiting).
ingressRoute.tlsEnabledbooleanfalseAdd 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.enabledbooleantrueEnable 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.enabledbooleanfalseEnable 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.enabledbooleanfalseWhen 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.enabledbooleanfalseWhen true, the chart creates a Secret named rbac-management-keys 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, the chart creates a kubernetes.io/dockerconfigjson Secret from global.imageCredentials and references it on every pod.
global.imagePullSecret.namestring""Name of the image pull secret. Must match an existing Secret when enabled: false, or is created by the chart when enabled: true.
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.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.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.

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.