GitLab 服务迁移记录
GitLab 服务迁移记录
Sat Jan 01
本文为过程记录,供日后参考,已去除账密信息。
将 GitLab 服务,由原服务器,移行至 kubesphere 的公共服务内。
步骤还原
-
ssh 连接到原服务器
-
查看原 GitLab 服务创建命令,筛选有用信息
原服务拉取了 gitlab-ce 的最新镜像。运行的容器暴露了 443、80、22 三个端口,挂载了 config、logs、data、backups 四个存储卷。
-
确认原服务器 GitLab 版本
-
kubesphere 项目,存储 → 持久卷声明 → 创建。 创建 3 个存储卷,分别为
- config /etc/gitlab
- logs /var/log/gitlab
- data /var/opt/gitlab
-
新建负载 DataCopy 用于向存储卷 copy 数据。
-
镜像选择随意,个人熟悉即可。
-
挂载上面新建的 3 个储存卷
-
将原服务器数据 copy 至存储卷。
-
等待数据 copy 完毕
-
删除 DataCopy 负载
-
-
创建无状态服务 GitLab-ce
- 镜像:gitlab/gitlab-ce:11.2.3-ce.0 (从 Docker Hub 查询)
- 使用镜像默认端口,其中端口 80 改为 31903
- 挂载存储卷
- 外部访问-访问模式:NodePort
-
进入 GitLab 服务启动的工作负载终端
-
打开地址,测试功能是否正常。
-
完成迁移
Problem
postgre、redis 没有正常启动
- 页面报 502
- 查看容器 log 发现很多 permission denied 的问题。
- postgresql 报错 could not open lock file “postmaster.pid”: Permission denied
- 通过
gitlab-ctl status
命令发现 postgre 和 redis 的 status 为 down 。期望的状态为 up。 - **解决:**逐一排查修改文件权限即可解决。注意某些文件的 other 权限也需要设置为 rwx 才能正常运行。
总结
这次操作总共进行了 2 个工作日。时间大部分花费在了 熟悉流程、数据传输和备份、问题排查 上。
通过这次迁移操作,巩固了 Linux 、docker 的命令操作以及 kubesphere 的使用流程。
在这次经验的基础上,如果再次进行迁移,时间可以压缩至半个工作日。