接上一篇 基于helm的方式在k8s集群中部署gitlab – 部署(一),本篇重点对gitlab在k8s集群中进行升级
1. gitlab 升级
本次升级从15.8.0升级到15.11.10
1.1 获取release
helm list -n jihulab
1.2 下载目前版本的gitlab charts
helm repo update #更新repo源
helm search repo gitlab-jh -l #查看对应版本的charts
helm fetch gitlab/gitlab --version 6.11.10 #拉取目标版本的charts
tar -xf gitlab-6.11.10.tgz
mv gitlab gitlab-15.11.10
1.3 获取当前的values文件
cd gitlab-15.11.10
helm get values gitlab -n jihulab > 15.8.0
1.4 升级
cd gitlab-15.11.10 #切换目录
helm upgrade gitlab gitlab-jh/gitlab
--version 6.11.10
--timeout 600s
--set certmanager.install=false
--set global.ingress.configureCertmanager=false
--set global.ingress.tls.enabled=true
--set gitlab.webservice.ingress.tls.secretName=gitlab-jihulab-cn-ssl
--set registry.ingress.tls.secretName=registry-jihulab-cn-ssl
--set minio.ingress.tls.secretName=minio-jihulab-cn-ssl
--set nginx-ingress.service.type=NodePort
--set global.shell.port=31475
--values values.yaml -n jihulab
2. gitlab数据库升级
gitlab15.11.10中数据库版本从12.7升级到14.7
2.1 备份数据库
pre
阶段将使用 Toolbox 中的备份实用程序脚本创建数据库备份,该脚本将保存到配置的 s3 存储桶(默认为 MinIO):
# GITLAB_RELEASE should be the version of the chart you are installing, starting with 'v': v6.0.0
curl -s "https://jihulab.com/gitlab-cn/charts/gitlab/-/raw/${GITLAB_RELEASE}/scripts/database-upgrade" | bash -s pre
这个脚本database-upgrade的中pre其实主要是备份数据库,但是由于toolbox容器中没有kubectl命令行工具,因为我这里还是使用的是原始的备份命令backup–utility来完成数据库的备份操作的。
备份
kubectl exec -it -n jihulab gitlab-toolbox-6dd5d8fc59-7nq52 -- backup-utility --skip registry,uploads,artifacts,lfs,packages,external_diffs,terraform_state,ci_secure_files,repositories
2.2 删除已有的 PostgreSQL 数据
由于 PostgreSQL 数据格式已更改,因此升级需要在升级版本之前删除现有的 PostgreSQL StatefulSet。 StatefulSet 将在下一步中重新创建。
kubectl delete statefulset gitlab-postgresql --namespace jihulab
kubectl delete pvc data-gitlab-postgresql-0 -n jihulab
2.3 升级数据库
请注意以下事项:
-
等待 Toolbox pod 的升级完成。 RELEASE_NAME 应该是
helm list
中 GitLab 版本的名称kubectl rollout status -w deployment/gitlab-toolbox -n jihulab
-
Toolbox pod 部署成功后,运行
post
步骤:(这块和pre一样,可以通过原生自带命令处理)# GITLAB_RELEASE should be the version of the chart you are installing, starting with 'v': v6.0.0 curl -s "https://jihulab.com/gitlab-cn/charts/gitlab/-/raw/${GITLAB_RELEASE}/scripts/database-upgrade" | bash -s post
-
将
webservice
、sidekiq
和gitlab-exporter
deployment 的副本设置为 0。这将防止任何其它应用程序在恢复备份时更改数据库。kubectl scale deployment gitlab-sidekiq-all-in-1-v2 --replicas=0 -n jihulab kubectl scale deployment gitlab-webservice-default --replicas=0 -n jihulab kubectl scale deployment gitlab-gitlab-exporter --replicas=0 -n jihulab
-
从前阶段创建的备份恢复数据库(将minio中的备份数据下载到本地,并拷贝到toolbox容器中,备份文件要在容器中的**/srv/gitlab/tmp/backups**目录下)。
-
修改values文件
vim gitlab-15.8.yaml... ... postgresql: existingSecret: bogus image: tag: 14.8.0 initdbScriptsConfigMap: bogus install: true ... ...
-
升级数据库
在升级命令中使用以下标志禁用迁移:
--set gitlab.migrations.enabled=false
helm upgrade gitlab gitlab-jh/gitlab --version 6.11.10 --timeout 600s --set certmanager.install=false --set global.ingress.configureCertmanager=false --set global.ingress.tls.enabled=true --set gitlab.webservice.ingress.tls.secretName=gitlab-jihulab-cn-ssl --set registry.ingress.tls.secretName=registry-jihulab-cn-ssl --set minio.ingress.tls.secretName=minio-jihulab-cn-ssl --set global.shell.port=31475 --set nginx-ingress.service.type=NodePort --set gitlab.migrations.enabled=false #gitlab.migrations.enabled=false必须要加上 --values gitlab-15.8.yaml -n jihulab
-
kubectl exec -it gitlab-toolbox-6dd5d8fc59-7nq52 -n jihulab /bin/bash cd /srv/gitlab/tmp/backups backup-utility --restore -t 1688440164_2023_07_04_15.11.10-jh
1688440164_2023_07_04_15.11.10-jh 是一种格式要求
-
恢复第一步中的所有 deployment
kubectl scale deployment gitlab-gitlab-exporter --replicas=1 -n jihulab kubectl scale deployment gitlab-webservice-default --replicas=2 -n jihulab kubectl scale deployment gitlab-sidekiq-all-in-1-v2 --replicas=1 -n jihulab
2.4验证
原文地址:https://blog.csdn.net/weixin_44729138/article/details/134632010
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_12543.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!