Migrate from the Linux package to the Helm chart

This guide will help you migrate from a package-based GitLab installation to the Helm chart.

Prerequisites

Before the migration, a few prerequisites must be met:

  • The package-based GitLab instance must be up and running. Run gitlab-ctl status and confirm no services report a down state.
  • It is a good practice to verify the integrity of Git repositories prior to the migration.
  • A Helm charts based deployment running the same GitLab version as the package-based installation is required.
  • You need to set up the object storage which the Helm chart based deployment will use. For production use, we recommend you use an external object storage and have the login credentials to access it ready. If you are using the built-in MinIO service, read the docs on how to grab the login credentials from it.

Migration steps

caution
JUnit test report artifact (junit.xml.gz) migration was not supported until GitLab 12.8 by the gitlab:artifacts:migrate script below.
  1. Migrate any existing data from the package-based installation to object storage:

    1. Migrate to object storage.

    2. Visit the package-based GitLab instance and make sure the migrated data are available. For example check if user, group and project avatars are rendered fine, image and other files added to issues load correctly, etc.

  2. Create a backup tarball and exclude all the already migrated directories.

    The backup file will be stored under /var/opt/gitlab/backups, unless you explicitly changed it.

  3. Restore from the package-based installation to the Helm chart, starting with the secrets. You will need to migrate the values of /etc/gitlab/gitlab-secrets.json to the YAML file that will be used by Helm.
  4. Restart all pods to make sure changes are applied:

    kubectl delete pods -lrelease=<helm release name>
    
  5. Visit the Helm-based deployment and confirm projects, groups, users, issues etc. that existed in the package-based installation are restored. Also, verify if the uploaded files (avatars, files uploaded to issues, etc.) are loaded fine.