{"id":22315,"date":"2023-02-08T18:01:10","date_gmt":"2023-02-08T17:01:10","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=22315"},"modified":"2023-02-08T18:01:11","modified_gmt":"2023-02-08T17:01:11","slug":"gitlab-migration-and-upgrade","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/","title":{"rendered":"GitLab Migration and Upgrade"},"content":{"rendered":"\n<p>I&#8217;ve worked with my mate <strong>Donovan Winter<\/strong> (we are called Thomson and Thompson!) on a very interesting project for one of our customer that&#8217;s worth sharing. They had an old version of GitLab (release 13.3.4) running in a pod in OpenShift and wanted to migrate it into a Virtual Machine under Rocky Linux 8.<\/p>\n\n\n\n<p>They then wanted to upgrade it to the latest GitLab release (release 15.7.3). I&#8217;ll share here all the steps required for doing such migration and upgrade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setting up the new GitLab Server<\/h2>\n\n\n\n<p>The first step is to prepare a new Virtual Machine and install the prerequisite packages and services for GitLab:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo dnf install -y curl openssh-server perl checkpolicy policycoreutils-python-utils python3-audit python3-libsemanage python3-setools python3-policycoreutils policycoreutils-python-utils\n\n$ sudo systemctl enable sshd\n$ sudo systemctl start sshd\n\n$ sudo firewall-cmd --permanent --add-service=http\n$ sudo firewall-cmd --permanent --add-service=https\n$ sudo systemctl reload firewalld\n<\/pre><\/div>\n\n\n<p>Then install GitLab 13.3.4 on this new server as this is the same release as the one in OpenShift:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ curl https:\/\/packages.gitlab.com\/install\/repositories\/gitlab\/gitlab-ce\/script.rpm.sh| sudo bash\n\n$ sudo dnf install gitlab-ce-13.3.4-ce.0.el8\n<\/pre><\/div>\n\n\n<p>The curl command above adds the GitLab repository in our system so we can then install the GitLab package in release 13.3.4 (in our case). Note also that there are 2 flavours of GitLab: <strong>ce<\/strong> (Community Edition) and <strong>ee<\/strong> (Enterprise Edition). We installed the <strong>ce<\/strong> one because this is the one used in OpenShift and it has to match in order to be able to backup\/restore data between these 2 instances.<\/p>\n\n\n\n<p>Then, set the initial GitLab configuration by editing the file <strong>\/etc\/gitlab\/gitlab.rb<\/strong> and removing the <strong>#<\/strong> in front of the line <strong># gitlab_rails[&#8216;initial_root_password&#8217;] = &#8220;password&#8221;<\/strong><\/p>\n\n\n\n<p>We also changed in this file the URL of the GitLab Server on which to connect for the graphical interface: <strong>external_url &#8216;http:\/\/&lt;url_of_this_server&gt;&#8217;<\/strong><\/p>\n\n\n\n<p>Each time this GitLab configuration file is changed, you&#8217;ll need to reconfigure GitLab to take those modifications into account with the following command:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo gitlab-ctl reconfigure\n<\/pre><\/div>\n\n\n<p>In our case we had the following errors after running the reconfigure command:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nRunning handlers:\nThere was an error running gitlab-ctl reconfigure:\nexecute&#x5B;\/opt\/gitlab\/embedded\/bin\/initdb -D \/var\/opt\/gitlab\/postgresql\/data -E UTF8] (postgresql::enable line 75) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with &#x5B;0], but received &#039;1&#039;\n---- Begin output of \/opt\/gitlab\/embedded\/bin\/initdb -D \/var\/opt\/gitlab\/postgresql\/data -E UTF8 ----\nSTDOUT: The files belonging to this database system will be owned by user &quot;gitlab-psql&quot;.\nThis user must also own the server process.\nSTDERR: initdb: invalid locale settings; check LANG and LC_* environment variables\n---- End output of \/opt\/gitlab\/embedded\/bin\/initdb -D \/var\/opt\/gitlab\/postgresql\/data -E UTF8 ----\nRan \/opt\/gitlab\/embedded\/bin\/initdb -D \/var\/opt\/gitlab\/postgresql\/data -E UTF8 returned 1\n<\/pre><\/div>\n\n\n<p>This can be resolved as follows:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ export LC_ALL=&quot;en_US.UTF-8&quot;\n$ export LC_CTYPE=&quot;en_US.UTF-8&quot;\n\n$ sudo gitlab-ctl reconfigure\n<\/pre><\/div>\n\n\n<p>And then the reconfigure was successful.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Backup of GitLab in OpenShift<\/h2>\n\n\n\n<p>Connect to the OpenShift cluster, backup GitLab and transfer the backup file to the new GitLab server.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ oc login --server=https:\/\/&lt;cluster-server-name&gt; -u admin\n$ oc project gitlab-prod\n\n$ oc get pods\nNAME                READY   STATUS    RESTARTS   AGE\ngitlab-ce-9-p5xzx   1\/1     Running   0          9d\nredis-2-jwxzl       1\/1     Running   0          1y\n\n$ oc describe pod\/gitlab-ce-9-p5xzx\n<\/pre><\/div>\n\n\n<p>In an OpenShift cluster, you first login to it and then enter into a project (which is the equivalent of a namespace in Vanilla Kubernetes).<\/p>\n\n\n\n<p>There are only 2 pods in this project, one that contain the GitLab server and another one with the Redis database. There is no GitLab operator pod that would have helped creating a backup of this instance.<\/p>\n\n\n\n<p>Using <strong>describe<\/strong> on this GitLab pod will show all the environment variables that we may need in our new GitLab server. I&#8217;ll come back to this later on.<\/p>\n\n\n\n<p>We&#8217;ll then have to connect to the GitLab pod and do the backup as shown below:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ oc rsh gitlab-ce-9-p5xzx\n# su git\ngit@gitlab-ce-9-p5xzx:~\/gitlab$ \/home\/git\/gitlab\/bin\/rake gitlab:backup:create\n<\/pre><\/div>\n\n\n<p>This GitLab pod didn\u2019t contain any of the usual GitLab binaries in <strong>\/usr\/bin<\/strong> so we can only rely on the rake tool that is part of the core of GitLab in order to do a backup. The backup file is then stored into the folder <strong>\/home\/git\/data\/backups<\/strong> of the pod as configured in its configuration file <strong><strong>\/etc\/gitlab\/gitlab.rb<\/strong><\/strong><\/p>\n\n\n\n<p>We then just need to transfer this backup file using the OpenShift command below and transfer it to the new GitLab server:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ oc rsync gitlab-ce-9-p5xzx:\/home\/git\/data\/backups\/1673909524_2023_01_31_13.3.4_gitlab_backup.tar .\/\n\n$ scp &lt;source&gt; &lt;destination&gt;\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Restore data in the new GitLab Server<\/h2>\n\n\n\n<p>First, set the backup path into the file <strong>\/etc\/gitlab\/gitlab.rb<\/strong> by uncommenting and editing the following line : <strong>gitlab_rails[&#8216;backup_path&#8217;] = &#8220;\/data\/gitlab\/backups&#8221;<\/strong><\/p>\n\n\n\n<p>Create this new backup repository and make git the owner :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo mkdir -p \/data\/gitlab\/backups &amp;&amp; sudo chown -R git:git \/data\/gitlab\n<\/pre><\/div>\n\n\n<p>Copy the backup file to this new repository and set the owner of this file to git:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo cp 1673909524_2023_01_31_13.3.4_gitlab_backup.tar \/data\/gitlab\/backups\/\n\n$ sudo chown git:git \/data\/gitlab\/backups\/1673909524_2023_01_31_13.3.4_gitlab_backup.tar\n<\/pre><\/div>\n\n\n<p>Stop only the GitLab processes that are connected to the database:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo gitlab-ctl stop unicorn \n$ sudo gitlab-ctl stop puma \n$ sudo gitlab-ctl stop sidekiq\n<\/pre><\/div>\n\n\n<p>Reconfigure to apply changes in the <strong>gitlab.rb<\/strong> file (the backup path set above)<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo gitlab-ctl reconfigure\n<\/pre><\/div>\n\n\n<p>As the backup file has been copied into the backup folder of the new GitLab Server, we just have to restore it and restart everything:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo gitlab-backup restore BACKUP=1673909524_2023_01_31_13.3.4\n\n$ sudo gitlab-ctl reconfigure \n$ sudo gitlab-ctl restart\n$ sudo gitlab-rake gitlab:check SANITIZE=true\n<\/pre><\/div>\n\n\n<p>At this stage we have successfully migrated GitLab 13.3.4 from OpenShift to a new VM. Let&#8217;s now continue with the upgrade process to the latest release.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GitLab Upgrade<\/h2>\n\n\n\n<p>GitLab provides a great tool (thank you to my mate <strong>Donovan Winter<\/strong> &#8211; one of our rising star in DevOps and our GitLab guru &#8211; for finding this out!) to see at a glance the upgrade path to follow by using the following link <a href=\"https:\/\/gitlab-com.gitlab.io\/support\/toolbox\/upgrade-path\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gitlab-com.gitlab.io\/support\/toolbox\/upgrade-path<\/a><\/p>\n\n\n\n<p>Below is the path to follow:<\/p>\n\n\n\n<p>[`13.1.11`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1310\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1310<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`13.8.8`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1388\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1388<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`13.12.15`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#13120\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#13120<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`14.0.12`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1400\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1400<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`14.3.6`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1430\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1430<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`14.9.5`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1490\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1490<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`14.10.Z`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#14100\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#14100<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`15.0.Z`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1500\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1500<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[`15.1.Z`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1510\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1510<\/a>) (for GitLab instances with multiple web nodes)<\/p>\n\n\n\n<p>-&gt;\u00a0[`15.4.0`](<a href=\"https:\/\/docs.gitlab.com\/ee\/update\/#1540\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.gitlab.com\/ee\/update\/#1540<\/a>)<\/p>\n\n\n\n<p>-&gt;\u00a0[latest\u00a0`15.Y.Z`](<a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\/-\/releases\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gitlab.com\/gitlab-org\/gitlab\/-\/releases<\/a>)<\/p>\n\n\n\n<p>Below are all the commands of this upgrade path:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# Upgrade to 13.8.8\n$ sudo dnf install -y gitlab-ce-13.8.8\n\n# Upgrade to 13.12.15\n$ sudo dnf install -y gitlab-ce-13.12.15\n\n# Upgrade to 14.0.12\n$ sudo dnf install -y gitlab-ce-14.0.12\n\n# Upgrade to 14.3.6\n$ sudo dnf install -y gitlab-ce-14.3.6\n$ sudo gitlab-ctl restart redis\n$ sudo gitlab-ctl restart postgresql\n$ sudo gitlab-rake db:migrate\n\n# Upgrade to 14.9.5\n$ sudo dnf install -y gitlab-ce-14.9.5\n\n# Upgrade to 14.10.5\n$ sudo dnf install -y gitlab-ce-14.10.5\n\n# Upgrade to 15.0.5\n$ sudo dnf install -y gitlab-ce-15.0.5\n\n# Upgrade to 15.4.6\n$ sudo dnf install -y gitlab-ce-15.4.6\n$ sudo gitlab-ctl restart redis\n\n# Upgrade to 15.7.3\n$ sudo dnf install -y gitlab-ce-15.7.3\n$ sudo gitlab-ctl restart redis\n<\/pre><\/div>\n\n\n<p>When Redis or Postgresql needs to be restarted, it is mentioned at the end of output of the release installation. For some release, this is required because the running service version is different than the new one.<\/p>\n\n\n\n<p>The new GitLab server is now upgraded to release 15.7.3<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final configuration<\/h2>\n\n\n\n<p>You may remember that at the very beginning we&#8217;ve looked at the environment variables of the GitLab pod. It is now time to transfer the required parameters to this new shiny GitLab server to complete our migration. In our case we only had to set back the parameters used for SMTP. For everything else, we kept the default settings of the new GitLab server. Below are the SMTP parameters of the file <strong>\/etc\/gitlab\/gitlab.rb<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngitlab_rails&#x5B;&#039;gitlab_email_enabled&#039;] = true\ngitlab_rails&#x5B;&#039;gitlab_email_from&#039;] = &#039;no-reply@&lt;smtp_domain&gt;&#039;\ngitlab_rails&#x5B;&#039;smtp_enable&#039;] = true\ngitlab_rails&#x5B;&#039;smtp_address&#039;] = &quot;mail.&lt;smtp_domain&gt;&quot;\ngitlab_rails&#x5B;&#039;smtp_port&#039;] = 25\ngitlab_rails&#x5B;&#039;smtp_domain&#039;] = &quot;smtp_domain&quot;\n<\/pre><\/div>\n\n\n<p>As usual we reconfigure GitLab to take those parameters into account:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo gitlab-ctl reconfigure\n<\/pre><\/div>\n\n\n<p>To test that SMTP is working properly, you can do a test and send an email to yourself, if it works (and it did for us) you are all set!<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ sudo gitlab-rails console\n&gt; Notify.test_email(&#039;benoit.entzmann@dbi-services.com&#039;, &#039;Benoit Test&#039;, &#039;Test ok :)&#039;).deliver_now\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Migration and Upgrade done!<\/h2>\n\n\n\n<p>This is it! Those were all the steps required to migrate and upgrade a GitLab instance from a pod in OpenShift to a Virtual Machine.<\/p>\n\n\n\n<p>I hope this will help you if you have to do the same operation. Note that this procedure is also valid if you want to migrate and upgrade from another server (or Virtual Machine) instead of a pod in a Kubernetes cluster or if you just want to upgrade a GitLab instance. Just follow the steps in the section that match your needs!<\/p>\n\n\n\n<p>For a migration from another GitLab server, the backup is easily done with the command <strong>sudo gitlab-backup create<\/strong> on that instance and then you can follow this procedure for the restore (and upgrade if required).<\/p>\n\n\n\n<p>Have fun with it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve worked with my mate Donovan Winter (we are called Thomson and Thompson!) on a very interesting project for one of our customer that&#8217;s worth sharing. They had an old version of GitLab (release 13.3.4) running in a pod in OpenShift and wanted to migrate it into a Virtual Machine under Rocky Linux 8. They [&hellip;]<\/p>\n","protected":false},"author":109,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1320,1522],"tags":[2648,89,15,1344],"type_dbi":[],"class_list":["post-22315","post","type-post","status-publish","format-standard","hentry","category-devops","category-kubernetes","tag-gitlab","tag-kubernetes","tag-migration","tag-openshift"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>GitLab Migration and Upgrade - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitLab Migration and Upgrade\" \/>\n<meta property=\"og:description\" content=\"I&#8217;ve worked with my mate Donovan Winter (we are called Thomson and Thompson!) on a very interesting project for one of our customer that&#8217;s worth sharing. They had an old version of GitLab (release 13.3.4) running in a pod in OpenShift and wanted to migrate it into a Virtual Machine under Rocky Linux 8. They [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-08T17:01:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-08T17:01:11+00:00\" \/>\n<meta name=\"author\" content=\"DevOps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DevOps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\"},\"author\":{\"name\":\"DevOps\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"headline\":\"GitLab Migration and Upgrade\",\"datePublished\":\"2023-02-08T17:01:10+00:00\",\"dateModified\":\"2023-02-08T17:01:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\"},\"wordCount\":1118,\"commentCount\":0,\"keywords\":[\"GitLab\",\"kubernetes\",\"Migration\",\"OpenShift\"],\"articleSection\":[\"DevOps\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\",\"name\":\"GitLab Migration and Upgrade - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2023-02-08T17:01:10+00:00\",\"dateModified\":\"2023-02-08T17:01:11+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitLab Migration and Upgrade\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\",\"name\":\"DevOps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"caption\":\"DevOps\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/devops\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GitLab Migration and Upgrade - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/","og_locale":"en_US","og_type":"article","og_title":"GitLab Migration and Upgrade","og_description":"I&#8217;ve worked with my mate Donovan Winter (we are called Thomson and Thompson!) on a very interesting project for one of our customer that&#8217;s worth sharing. They had an old version of GitLab (release 13.3.4) running in a pod in OpenShift and wanted to migrate it into a Virtual Machine under Rocky Linux 8. They [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/","og_site_name":"dbi Blog","article_published_time":"2023-02-08T17:01:10+00:00","article_modified_time":"2023-02-08T17:01:11+00:00","author":"DevOps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DevOps","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/"},"author":{"name":"DevOps","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"headline":"GitLab Migration and Upgrade","datePublished":"2023-02-08T17:01:10+00:00","dateModified":"2023-02-08T17:01:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/"},"wordCount":1118,"commentCount":0,"keywords":["GitLab","kubernetes","Migration","OpenShift"],"articleSection":["DevOps","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/","url":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/","name":"GitLab Migration and Upgrade - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2023-02-08T17:01:10+00:00","dateModified":"2023-02-08T17:01:11+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/gitlab-migration-and-upgrade\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GitLab Migration and Upgrade"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735","name":"DevOps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","caption":"DevOps"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/devops\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/22315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=22315"}],"version-history":[{"count":37,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/22315\/revisions"}],"predecessor-version":[{"id":22422,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/22315\/revisions\/22422"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=22315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=22315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=22315"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=22315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}