arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Migrating to the New Helm Chart

This guide demonstrates how to upgrade an existing Immuta deployment installed with the older Immuta Helm chart (IHC) to v2024.2 LTS using the Immuta Enterprise Helm chart (IEHC).

circle-exclamation

Helm chart deprecation notice

As of Immuta version 2024.2, the IHC has been deprecated in favor of the IEHC. Their respective immuta-values.yaml Helm values files are not compatible.

hashtag
Prerequisites

hashtag
Create a PostgreSQL database

  1. The PostgreSQL instance has been provisioned and is actively running.

  2. The PostgreSQL instance's hostname/FQDN is .

  3. The PostgreSQL instance is .

For additional information, consult the Deployment requirements.

hashtag
Validate the Helm release

  1. Fetch the metadata for the Helm release associated with Immuta.

  2. Review the output from the previous step and verify the following:

    • The Immuta version (appVersion) is

hashtag
Metadata database

The new IEHC no longer supports deploying a Metadata database (PostgreSQL) inside the Kubernetes cluster. Before transitioning to the new IEHC, it's first necessary to externalize the Metadata database.

hashtag
Built-in

The following demonstrates how to take a database backup and import the data into each cloud provider's managed PostgreSQL service.

hashtag
Create backup of old database

  1. Get the metadata database pod name.

  2. Spawn a shell inside the running metadata database pod.

  3. Perform a database backup.

  4. Type

hashtag
Setup new database

  1. Create a pod named immuta-setup-db and spawn a shell.

  2. Connect to the new PostgreSQL database as a superuser. Depending on the cloud provider, the default superuser name (postgres) might differ.

  3. Create immuta,

hashtag
Restore backup to new database

  1. Create a pod named immuta-restore-db and spawn a shell.

  2. Copy file bometadata.dump from the host's working directory to pod immuta-restore-db.

  3. Spawn a shell inside pod immuta-restore-db

hashtag
External

No additional work is required. The existing database can be reused with the new IEHC.

hashtag
Helm values

circle-info

Helm values file compatibility

The immuta-values.yaml Helm values file used by the IHC is not compatible with the new IEHC.

  1. Rename the existing immuta-values.yaml Helm values file used by the IHC.

  2. Follow the for your Kubernetes distribution of choice.

The last LTS (2022.5.x) or 2024.1 or newer

  • Less than 2024.2

  • The Immuta Helm chart (version) is greater than or equal to 4.13.5

  • The Immuta Helm chart name (chart) is immuta

  • If any of the criteria is not met, it's first necessary to perform a Helm upgrade using the IHC. Contact your Immuta representative for guidance.

  • exit
    , and then press
    Enter
    to exit the shell prompt.
  • Copy file bometadata.dump from the pod to the host's working directory.

  • temporal
    , and
    temporal_visiblity
    databases and an
    immuta
    role.
  • Type \q, and then press Enter to exit the psql prompt.

  • .
  • Perform a database restore while authenticated as role immuta. Refer to the value substituted for <postgres-password> when prompted to enter a password.

  • Type exit, and then press Enter to exit the shell prompt.

  • Delete pod immuta-restore-db that was previously created.

  • resolvable from within the Kubernetes cluster
    accepting connections
    installation guide
    kubectl cp <metadata-database-pod-name>:/tmp/bometadata.dump .
    pg_restore --host=<postgres-fqdn> --port=5432 --username=immuta --password --dbname=immuta --no-owner --role=immuta < /tmp/bometadata.dump
    kubectl delete pod/immuta-restore-db
    helm get metadata --output yaml <helm-release-name>
    kubectl get pod --selector "app.kubernetes.io/component=database" --output name
    kubectl exec --stdin --tty <metadata-database-pod-name> -- sh
    pg_dump --dbname=bometadata --file=/tmp/bometadata.dump --format=custom --no-owner --no-privileges
    kubectl run immuta-setup-db --stdin --tty --rm --image docker.io/bitnami/postgresql:latest -- sh
    psql --host <postgres-fqdn> --username postgres --port 5432 --password
    kubectl run immuta-restore-db --image docker.io/bitnami/postgresql:latest -- sleep infinity
    kubectl cp bometadata.dump immuta-restore-db:/tmp
    mv immuta-values.yaml immuta-values.ihc.yaml
    CREATE ROLE immuta with login encrypted password '<postgres-password>';
    GRANT immuta TO CURRENT_USER;
    
    CREATE DATABASE immuta OWNER immuta;
    CREATE DATABASE temporal OWNER immuta;
    CREATE DATABASE temporal_visibility OWNER immuta;
    
    GRANT all ON DATABASE immuta TO immuta;
    GRANT all ON DATABASE temporal TO immuta;
    GRANT all ON DATABASE temporal_visibility TO immuta;
    ALTER ROLE immuta SET search_path TO bometadata,public;
    REVOKE immuta FROM CURRENT_USER;
    
    \c immuta
    CREATE EXTENSION pgcrypto;
    
    \c temporal
    GRANT CREATE ON SCHEMA public TO immuta;
    
    \c temporal_visibility
    GRANT CREATE ON SCHEMA public TO immuta;
    CREATE EXTENSION btree_gin;
    kubectl exec immuta-restore-db --stdin --tty -- sh