Upgrade on Kubernetes

This guide will help you upgrade your OpenMetadata Kubernetes Application with automated helm hooks.

This guide assumes that you have an OpenMetadata deployment that you installed and configured following the Kubernetes Deployment guide.

We also assume that your helm chart release names are openmetadata and openmetadata-dependencies and namespace used is default.

It is advised to go through openmetadata release notes

To run the backup and restore commands, please make sure that you are always in the latest openmetadata-ingestion version to have all the improvements shipped in the CLI.

Before proceeding, please back up your MySQL/Postgres DB behind the OpenMetadata server. This step is crucial for restoring to your current state if any issues arise during the upgrade. It is recommended before upgrading your production instances.

Make sure you have connectivity between your database (MySQL / PostgreSQL) and the host machine where you will be running the below commands. If you are using the default database available with OpenMetadata Dependencies, make sure to port-forward the MySQL service using kubectl port-forward service/mysql 3306:3306.

Then, follow the next steps to create a virtual environment and install the latest OpenMetadata Python package with the backup CLI:

  • Validate the installed metadata version with python -m metadata --version
  • Run the backup using the updated metadata CLI:if using Postgres:
  • The above command will generate a backup file with extension as .sql. You can copy the name from the backup command output.

You can get changes from artifact hub of openmetadata helm chart release. Click on Default Values >> Compare to Version.

Helm Chart Release Comparison

Update Helm Chart Locally for OpenMetadata with the below command:

It will result in the below output on screen.

Verify with the below command to see the latest release available locally.

The above command uses configurations defined here. You can modify any configuration and deploy by passing your own values.yaml.

Make sure that, when using your own values.yaml, you are not overwriting elements such as the image of the containers. This would prevent your new deployment to use the latest containers when running the upgrade.

If you are running into any issues, double-check what are the default values of the helm revision.

We upgrade OpenMetadata with the below command:

You might need to pass your own values.yaml with the --values flag

Go to Settings -> OpenMetadata -> Elasticsearch

create-project

Create a New Project

Click on reindex all in the dialog box choose Recreate Indexes to All

create-project

Reindex

With Release 1.0.0, if you see your helm charts failing to deploy with the below issue -

This means the values passed to the helm charts has a section global.airflow. As per the breaking changes mentioned here, Airflow configs are replaced with pipelineServiceClient for Helm Charts.

The Helm Chart Values JSON Schema helps to catch the above breaking changes and this section will help you resolve and update your configurations for the same. You can read more about JSON Schema with Helm Charts here.

You will need to update the existing section of global.airflow values to match the new configurations.

⛔ Before 1.0.0 Helm Chart Release, the global.airflow section would be like -

✅ After 1.0.0 Helm Chart Release, the global.pipelineServiceClient section will replace the above airflow section -

Run the helm lint command on your custom values after making the changes to validate with the JSON Schema.

If your helm dependencies upgrade fails with the below command result -

This is probably because with 0.13.0, we have default size of mysql persistence set to 50Gi.

Kubernetes does not allow changes to Persistent volume with helm upgrades.

In order to work around this issue, you can either default the persistence size to 8Gi or run the below command which will patch Persistent Volumes and Persistent Volume Claims for mysql helm and then run the above helm upgrade command.

This issue will only occur if you are using openmetadata-dependencies helm chart version 0.0.49 and 0.0.50 and upgrading to latest helm chart release.

If your helm dependencies upgrade fails with the below command result -

This issue is related to a minor change that affected the MySQL Database Engine version upgrade from 8.0.28 to 8.0.29 for the Helm Chart Release 0.0.49 and 0.0.50. Then the registry url was updated as we found a work around to fetch previous versions of bitnami/mysql Helm Releases.

As a result of the above fixes, anyone who is on OpenMetadata Dependencies Helm Chart Version 0.0.49 and 0.0.50 is affected with the above issue when upgrading for mysql. In order to fix this issue, make sure to follow the below steps -

  1. Backup the Database using Metadata Backup CLI as mentioned here

  2. Uninstall OpenMetadata Dependencies Helm Chart (helm uninstall openmetadata-dependencies)

  3. Remove the unmanaged volume for MySQL Stateful Set Kubernetes Object (kubectl delete pvc data-mysql-0)

  4. Install the latest version of OpenMetadata Dependencies Helm Chart

  5. Restore the Database using Metadata Restore CLI as mentioned here

  6. Next, Proceed with upgrade for OpenMetadata Helm Chart as mentioned here