How to Upgrade the Catalog chart
To upgrade the catalog chart, update the chart version and run helm upgrade.
tip
The chart follows semver: breaking changes are introduced only in major version bumps. Minor releases add new optional configuration; patch releases contain only fixes. Always review the changelog before upgrading across a major boundary.
Direct chart upgrade
If you installed the chart directly:
helm repo update
helm upgrade catalog mia-platform/catalog \
--namespace catalog \
--values values.yaml \
--atomic \
--timeout 10m
Upgrade via the catalog-deployment wrapper
If you use the catalog-deployment wrapper repository, update the pinned chart version in Chart.yaml:
dependencies:
- name: catalog
version: "~0.X" # ← bump to the new target version constraint
repository: "https://nexus.mia-platform.eu/repository/helm-internal/"
Then update and deploy:
helm dependency update
helm upgrade catalog . \
--namespace catalog \
--values values/<env>.yaml \
--atomic \
--timeout 10m
Version-specific upgrade notes
From 0.3.42-0 to 0.4.4 (Mia-Platform v15.1.1 to v15.2.0)
- Remove the
doclingServiceblock andserviceAccounts.doclingServicefrom your values, includingdoclingService.enabled: false. The chart no longer deploys Docling and its values schema rejects unknown keys, sohelm upgradefails while they are set. - To keep document parsing in the Catalog, set the new
apiGateway.docling.urlto the Docling route of AI Services (for examplehttps://<ai-services host>/api/docling/) andaiServicesClientId: "ai-services-api", so that the API gateway exchanges the caller's token for the AI Services audience. This requiresauthtoolBff.enabled: true. With an empty URL the/api/docling/route is not served. - Configure how the ADK Backend App reaches the models.
adkBeAppis enabled by default and the newadkBeApp.config.aiGatewayEnableddefaults totrue, so the chart refuses to render unless you either setadkBeApp.config.litellmProxyApiBase(for examplehttps://<ai-services host>/ai-gateway/) andadkBeApp.config.secretStoreBaseUrl(the public URL of AI Services) together withaiServicesClientId, or setadkBeApp.config.aiGatewayEnabled: false, or setadkBeApp.enabled: false. - Remove
adkBeApp.config.useInternalEngine,adkBeApp.config.tempoBaseUrlandsecrets.adkBeAppKeys.tempoAuthHeaderfrom your values: the schema rejects them. If you manage theadk-be-app-keysSecret yourself, you can drop itstempoAuthHeaderkey. The ADK Backend App now reads the Catalog through the API gateway of the same release unless you setadkBeApp.config.catalogApiUrl; when it is empty,apiGateway.enabledmust betrue. - If you set
aiServicesClientId, upgrade the Realm Management chart to0.1.47withproducts.aiServices: true, so that thecatalog-token-exchangeandcatalog-website-bffclients can request themia:ai-servicesscope. If you do not manage the realm with that chart, addmia:ai-servicesas an optional client scope of both clients.
Also note:
- The chart can now deploy
secretStoreService(disabled by default), which keeps the signing keys of Catalog webhooks in an external OpenBao or Vault. While it is disabled, creating or rotating a webhook with asecretreturns502. To enable it, setsecretStoreService.enabled: true,secretStoreService.config.storeAddrand the authentication settings undersecretStoreService.config.auth. - The chart now creates the image pull Secret only when
global.imagePullSecret.name,global.imageCredentials.registry,username,passwordandemailare all set;global.imagePullSecret.enabledonly controls whether pods reference it. If you relied on the chart to create the Secret, make sure all five values are set, or Helm removes it on upgrade. - The new optional
catalogEngine.workerThreadslimits the worker threads of Catalog Engine. - The new
apiGateway.docling.maxBodyBytes(default33554432, 32 MiB) limits the size of documents uploaded to/api/docling/.
From 0.3.28 to 0.3.42-0 (Mia-Platform v15.0.2 to v15.1.0)
- Catalog Engine now syncs Catalog permissions to the Authz service with the
catalog-engineKeycloak client. Upgrade thekeycloak-realm-managementchart to0.1.35first: withproducts.catalog: trueit creates this client. If you do not manage the realm with that chart, create a confidential clientcatalog-enginewith service accounts enabled, the "Signed JWT" client authenticator with the JWKS URL<catalog url>/.well-known/jwks.json, the default client scopesmia:authzandmia:authz-roles, and theauthz-apiclient roleurn:mia-platform-internal:role:authz:permissions:writerassigned to its service account user. - Add the client credential to the
catalog-engine-keysSecret. With the defaultcatalogEngine.config.authzServiceAuthorization.tokenAuthMethod: private_key_jwt, add a PEM-encoded private key under thekey.pemkey. With any othertokenAuthMethod, add the client secret under theclient-secretkey. If the chart creates the Secret (secrets.catalogEngineKeys.enabled: true), setsecrets.catalogEngineKeys.privateKeyorsecrets.catalogEngineKeys.clientSecretinstead.
Also note:
- To turn off the permissions sync, set
catalogEngine.config.authzServiceAuthorization.enabled: false. The client and the credential of the steps above are then not needed. - With
catalogKafkaContext.embedded.enabled: true(defaultfalse) the chart deploys its own Kafka cluster in the Catalog namespace, without an operator or CRDs. It needs a StorageClass that can provision one ReadWriteOnce volume per Kafka node, and it cannot be combined withsecrets.kafkaKeys.enabled: true. - The new optional
namespacePrefixvalue (default empty) adds a<namespacePrefix>-prefix to the names of all the resources the chart creates, including the image pull Secret and the TLS Secret set iningressRoute.tls.secretName. Secrets that you create yourself must then use the prefixed names. Setting it on an existing installation renames its resources.