Gitlab omnibus 8.15.1 升级到 9.5.+

升级场景

由于公司要通过gitlab接入ci和cd功能,经测试一个repo不能正常使用,且gitlab9.5之后增加了很多新功能,比较吸引我们

  • GPG Commit Verification: GPG密钥允许您验证签名提交

  • New Navigation Improvements: 界面窗口有所改进,更便捷和美观,可以在老界面和新界面自由切换

  • Project Template: 新增了更多的项目模板

  • Automatic Retry for Failed CI Jobs:自动重试失败的ci job

  • Automatically Monitor Auto Deployed Apps:自动监控自动部署应用程序

  • Merge Request Diff File Navigation:查看merge request时更清晰

更多的特性请查阅:https://about.gitlab.com/2017/08/22/gitlab-9-5-released/

考虑的点及问题

  • 1.postgresql版本问题: 由于我们公司使用的是外部的postgresql和redis,postgresql的版本为9.3,而gitlab9.5.9依赖postgresql 9.6以上的版本,所以在升级gitlab的时候他会升级数据库,但是我们是外部的(AWS RDS),所以他并不能升级,会抛出异常。

  • 2.postgresql的表结构问题:在升级期间,由于版本变化比较大,所以会涉及表结构及表字段的更改,如果使用外部的postgresql,可能会导致不成功

  • 3.gitlab有可能升级失败,失败后必须理解还原,且不影响线上数据

解决方案

根据上述问题,新启动一台实例,首先保持和线上的版本相同,其次将线上的数据还原到这台实例,然后在将新启动的实例进行升级,不过在这其中有几个点必须注意:

  • 1.新启动的实例必须使用本地的postgresql和redis

  • 2.必须将线上的postgresql的数据还原到当前实例的postgresql

  • 3.当前实例上面的psql和pg_dump工具必须和线上版本保持一致(AWS RDS POSTGRESQL)

  • 4.在测试期间,绝对不能和线上使用同一个redis,必须保持redis只有一个connect

  • 5.在gitlab还原数据的时候,其必须在running状态

实施步骤

一、新实例安装线上同版本gitlab

$ curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

$ sudo yum install gitlab-ce-8.15.1-ce.0.el7.x86_64 -y
二、初始化新实例的gitlab

修改配置文件,修改external_url


$ sudo vim /etc/gitlab/gitlab.rb

external_url 'http://git.test.com'

$ sudo gitlab-ctl reconfigure

# 成功后,通过域名映射来访问(注意,这里如果没有增加dns记录,需要添加hosts)
三、还原postgresqlgit-data,与线上保持一致

还原postgresql

1.清除当前实例pgsql的数据


$ gitlab-psql -h /var/opt/gitlab/postgresql -d template1

template1=> DROP DATABASE gitlabhq_production;

DROP

template1=> CREATE DATABASE gitlabhq_production WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';

CREATE

template1=> ALTER DATABASE gitlabhq_production OWNER TO gitlab;

ALTER

2.还原线上数据


$ pg_dump -U gitlab -h HOST -p 5432 gitlabhq_production > gitlabhq_production.sql

$ gitlab-psql -h /var/opt/gitlab/postgresql -d gitlabhq_production < gitlabhq_production.sql

还原Gitlab data

1.首先下载备份文件,我这里保存在s3上面,所以从s3直接下载,如果没有可以执行下面的命令先进行备份,如果有请忽略


$ sudo gitlab-rake gitlab:backup:create SKIP=db  # // 如果有备份不需要执行 //

$ aws s3 cp s3://git-bak/1505322888_2017_10_27_gitlab_backup.tar .

$ cp 1505322888_2017_10_27_gitlab_backup.tar /var/opt/gitlab/backups/

2.进行还原


$ sudo gitlab-rake gitlab:backup:restore SKIP=db BACKUP=1505322888_2017_09_14_gitlab_backup.tar

3.重新配置并访问查看


$ sudo gitlab-ctl reconfigure
四、对当前实例Gitlab进行升级

1.通过yum升级


sudo yum install gitlab-ce-9.5.9-ce.0.el7.x86_64 -y

2.访问正常后,将当前实例的数据导出


sudo -u gitlab-psql pg_dump -h /var/opt/gitlab/postgresql -U gitlab-psql gitlabhq_production > /tmp/gitlab.sql

3.导入到线上的新postgresql(AWS RDS 9.6+)


psql -U gitlab -h HOST -p 5432 -d gitlabhq_production < gitlabhq_production.sql

4.修改gitlab配置,配置pgsql及nginx等

注意,修改后为https,需要增加证书。禁用默认的pgsql及prometheus等(如果需要可以开启)


$ sudo vim /etc/gitlab/gitlab.rb

external_url 'https://git.test.com'

nginx['redirect_http_to_https'] = true

gitlab_rails['time_zone'] = 'Asia/Shanghai'

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "xxx.xxx.com"

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_user_name'] = "xxx"

gitlab_rails['smtp_password'] = "xxx"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['gitlab_email_from'] = 'xxx@xxx.com'

gitlab_rails['db_adapter'] = 'postgresql'

gitlab_rails['db_encoding'] = 'utf8'

gitlab_rails['db_host'] = 'HOST'

gitlab_rails['db_port'] = '5432'

gitlab_rails['db_username'] = 'gitlab'

gitlab_rails['db_password'] = 'xxxxxx'

postgresql['enable'] = false

redis['enable'] = false

gitlab_rails['redis_host'] = 'xxxx.qm7fjs.ng.0001.cnn1.cache.amazonaws.com.cn'

gitlab_rails['redis_port'] = 6379

nginx['enable'] = true

nginx['ssl_certificate'] = '/etc/gitlab/ssl/xxx.com.chain.crt'

nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/xxx.com.key'

node_exporter['enable'] = false

prometheus_monitoring['enable'] = false

5.重新配置gitlab


$ gitlab-ctl reconfigure

6.重新访问,并确认成功
gitlab-1.png
gitlab-2.png
gitlab-3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值