CluedIn PaaS

2025.05.02

On this page

  1. Prerequisites
  2. Guide
    1. Stage 1: Prepare for upgrade

This document covers the upgrade process from 2025.05.00 to 2025.05.02.

We do not support upgrading directly to this version from prior to 2025.05.00.

Prerequisites

  • Access to the Helm chart version 2.5.3. You may need to run helm repo update to grab the latest version.
  • kubectl
  • Helm

Guide

Before any upgrade takes place, ensure you have taken a snapshot or backup of all your running PVCs in your AKS cluster. This is very important as databases may be upgraded during this process.

Stage 1: Prepare for upgrade

  1. Connect to your cluster using the kubeconfig.

  2. Export your current Helm values file. Keep one copy for the upgrade process and another as a backup.

  3. In the values file, update the following properties:

     global:
       image:
         tag: "2025.05.02"
       strategy:
         type: Recreate
    
     application:
       cluedin:
         components:
           packages:
           - name: "CluedIn.Connector.AzureEventHub"
             version: "4.5.1"
           - name: "CluedIn.Connector.Dataverse"
             version: "4.5.1"
           - name: "CluedIn.Connector.Http"
             version: "4.5.0"
           - name: "CluedIn.EventHub"
             version: "4.5.1"
           - name: "CluedIn.Vocabularies.CommonDataModel"
             version: "4.5.1"
           - name: "CluedIn.Connector.AzureDataLake"
             version: "4.5.1"
           - name: "CluedIn.Connector.AzureDedicatedSqlPool"
             version: "4.0.2"
           - name: "CluedIn.Connector.AzureServiceBus"
             version: "4.5.0"
           - name: "CluedIn.Connector.OneLake"
             version: "4.5.1"
           - name: "CluedIn.ExternalSearch.Providers.DuckDuckGo.Provider"
             version: "4.5.1"
           - name: "CluedIn.ExternalSearch.Providers.PermId.Provider"
             version: "4.5.1"
           - name: "CluedIn.ExternalSearch.Providers.Web"
             version: "4.4.2"
           - name: "CluedIn.Provider.ExternalSearch.Bregg"
             version: "4.4.1"
           - name: "CluedIn.Provider.ExternalSearch.ClearBit"
             version: "4.4.1"
           - name: "CluedIn.Provider.ExternalSearch.CompanyHouse"
             version: "4.5.0"
           - name: "CluedIn.Provider.ExternalSearch.CVR"
             version: "4.4.2"
           - name: "CluedIn.Provider.ExternalSearch.Gleif"
             version: "4.4.2"
           - name: "CluedIn.Provider.ExternalSearch.GoogleMaps"
             version: "4.5.1"
           - name: "CluedIn.Provider.ExternalSearch.KnowledgeGraph"
             version: "4.5.0"
           - name: "CluedIn.Provider.ExternalSearch.Libpostal"
             version: "4.4.1"
           - name: "CluedIn.Provider.ExternalSearch.OpenCorporates"
             version: "4.5.0"
           - name: "CluedIn.Provider.ExternalSearch.Providers.VatLayer"
             version: "4.5.1"
           - name: "CluedIn.Purview"
             version: "4.5.1"
           - name: "CluedIn.PowerApps"
             version: "4.5.1"
           - name: "CluedIn.EnterpriseFlows.PowerAutomate"
             version: "4.5.0"
           - name: "CluedIn.Connector.SqlServer"
             version: "4.5.0"
           - name: "CluedIn.Connector.FabricOpenMirroring"
             version: "4.5.1"
           - name: "CluedIn.Provider.ExternalSearch.Providers.AzureOpenAI"
             version: "4.4.1"
           - name: "CluedIn.Provider.ExternalSearch.GoogleImages"
             version: "4.4.2"
           - name: "CluedIn.Provider.ExternalSearch.RestApi"
             version: "4.5.0"
    
       gql:
         hubSpotToken: <pat-token>
    
  4. (Optional) For the Azure Key Vault integration user, do the following:

    1. Remove old secret mounting configuration. If you are currently mounting individual secrets to infrastructure components (as shown in the example below), remove these configurations. The base chart now handles secret integration automatically, simplifying the setup.

       infrastructure:
         elasticsearch:
           auth:
             existingSecret: elasticsearch-credentials
           extraVolumeMounts:
             - mountPath: /mnt/secrets-store
               name: secrets-store01-inline
               readOnly: true
           extraVolumes:
             - csi:
                 driver: secrets-store.csi.k8s.io
                 readOnly: true
                 volumeAttributes:
                   secretProviderClass: cluedin-elasticsearch-sync
               name: secrets-store01-inline
      
         monitoring:
           grafana:
             admin:
               existingSecret: cluedin-grafana
             extraContainerVolumes:
               - csi:
                   driver: secrets-store.csi.k8s.io
                   readOnly: true
                   volumeAttributes:
                     secretProviderClass: cluedin-grafana-sync
                 name: azure-keyvault-secrets
             sidecar:
               dashboards:
                 extraMounts:
                   - mountPath: /mnt/secrets-sync
                     name: azure-keyvault-secrets
                     readOnly: true
      
         mssql:
           existingSecret: cluedin-sqlserver-secret
           existingSecretKey: sapassword
           extraVolumeMounts:
             - mountPath: /mnt/secrets-sync
               name: azure-keyvault-secrets
               readOnly: true
           extraVolumes:
             - csi:
                 driver: secrets-store.csi.k8s.io
                 readOnly: true
                 volumeAttributes:
                   secretProviderClass: cluedin-sqlserver-sync
               name: azure-keyvault-secrets
      
         neo4j:
           neo4j:
             passwordFromSecret: cluedin-neo4j-auth
           additionalVolumeMounts:
             - mountPath: /plugins
               name: plugins
             - mountPath: /mnt/secrets-sync
               name: azure-keyvault-secrets
               readOnly: true
           additionalVolumes:
             - emptyDir: {}
               name: plugins
             - csi:
                 driver: secrets-store.csi.k8s.io
                 readOnly: true
                 volumeAttributes:
                   secretProviderClass: cluedin-neo4j-sync
               name: azure-keyvault-secrets
      
         rabbitmq:
           auth:
             existingPasswordSecret: cluedin-rabbitmq
           extraVolumeMounts:
             - mountPath: /opt/bitnami/rabbitmq/plugins/cluedin_plugin.ez
               name: extra-plugins
               subPath: cluedin_plugin.ez
             - mountPath: /mnt/secrets-sync
               name: azure-keyvault-secrets
               readOnly: true
           extraVolumes:
             - emptyDir: {}
               name: extra-plugins
             - csi:
                 driver: secrets-store.csi.k8s.io
                 readOnly: true
                 volumeAttributes:
                   secretProviderClass: cluedin-rabbitmq-sync
               name: azure-keyvault-secrets
      
         redis:
           auth:
             existingSecret: cluedin-redis
             existingSecretPasswordKey: redis-password
           master:
             extraVolumeMounts:
               - mountPath: /mnt/secrets-sync
                 name: azure-keyvault-secrets
                 readOnly: true
             extraVolumes:
               - csi:
                   driver: secrets-store.csi.k8s.io
                   readOnly: true
                   volumeAttributes:
                     secretProviderClass: cluedin-redis-sync
                 name: azure-keyvault-secrets
      
      
    2. Update your Helm values. Your values.yaml should look similar to the example below:

       infrastructure:
         elasticsearch:
           auth:
             existingSecret: elasticsearch-credentials
      
         monitoring:
           grafana:
             admin:
               existingSecret: cluedin-grafana
      
         mssql:
           existingSecret: cluedin-sqlserver-secret
           existingSecretKey: sapassword
      
         neo4j:
           neo4j:
             passwordFromSecret: cluedin-neo4j-auth
           additionalVolumeMounts:
             - mountPath: /plugins
               name: plugins
           additionalVolumes:
             - emptyDir: {}
               name: plugins
      
         rabbitmq:
           auth:
             existingPasswordSecret: cluedin-rabbitmq
           extraVolumeMounts:
             - mountPath: /opt/bitnami/rabbitmq/plugins/cluedin_plugin.ez
               name: extra-plugins
               subPath: cluedin_plugin.ez
           extraVolumes:
             - emptyDir: {}
               name: extra-plugins
      
         redis:
           auth:
             existingSecret: cluedin-redis
             existingSecretPasswordKey: redis-password
      
      
  5. Apply the values file from your shell by running the following:

     # ${CustomValues} refers to the values file you have amended with the above changes. Please type the full path here.
    
     helm upgrade cluedin-platform -n cluedin cluedin/cluedin-platform \
         --version 2.5.3 \
         --values ${CustomValues} \
         --set application.system.runDatabaseJobsOnUpgrade=true \
         --set application.system.runNugetFullRestore=true \
         --wait \
         --timeout 10m0s
    

    After a few minutes, it should complete successfully.

  6. Wait until the deployment finishes.

  7. Perform the validation:

    • Make sure that all pods are healthy and all jobs are completed.

      Do not proceed if any pods show health issues. Investigate and resolve the issues before continuing. This will apply dynamic mappings to every CluedIn index.

    • Ensure that there are no errors in the pod logs.

    • Confirm that the server starts in normal mode.

    • Verify that the cluedin-ui pod is running.

If there are any issues during the upgrade process, please do not hesitate to reach out to CluedIn support.