如果要在物理机上进行gitlab 迁移应该是一件比较容易的事,
数据迁移过程其实很简单,官方有很详细的说明,详情见链接
但这次我想将其迁移到 kubernetes 集群,所以遇到了一系列的问题。
0. 持久化数据文件
这个比较容易解决,kubernetes 目前支持 PersistentVolume ,即通过配置一个 NFS 来进行访问
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
namespace: gitlab-nscc
labels:
pv: nfs-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /usr/local/work/nfs
server: kn2
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs-pvc
namespace: gitlab-nscc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
selector:
matchLabels:
pv: nfs-pv
做完发现 10G有些小了;目前已经用掉了 5.2 G
2. 通过 gitlab 官方镜像 gitlab/gitlab-ce
进行部署
优先放上来最终方案,更准确的应该称为 omnibus-docker 方案 。对应的docker 命令是:
docker run --name="gitlab" -it --publish 8808:80 --detach --hostname git.example.cn -v /usr/local/work/nfs-mount/gitlab/config:/etc/gitlab -v /usr/local/work/nfs-mount/gitlab/logs:/var/log/gitlab -v /usr/local/work/nfs-mount/gitlab:/var/opt/gitlab gitlab/gitlab-ce:9.5.2-ce.0
https://docs.gitlab.com/omnibus/docker/
# 关闭服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status
# This command will overwrite the contents of your GitLab database!
sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce
# 重启服务并检查
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
最终采用的方案其实是基于这个方案的 kuberntes 部署方案, svc, deployment, ingress 等的配置参考 #2 进行即可
2. 通过 github.com/lwolf/kubernetes-gitlab
部署
这其实是一个不错的方案,功能很强大,结合#1 也运行起来了,但是在读入旧数据后,进入项目内部的文档后,一直显示是空的。原因应该是在 迁移数据时需要停掉 sidekiq 和 unicorn ; 然而在这个容器环境中没有 gitlab-ctl , 一直没有找到停掉sidekiq 的方式。
如果需要部署一个新的 gitlab@k8s ,这是个值得推荐的方案,但是由于没有 omnibus 工具,需要对 k8s 有比较多的了解来进行使用。
3. 通过 ubuntu 基础镜像来进行安装 gitlab-omnibus
一开始安装过程会卡住,换了国内的软件源后可以 apt-get ; 但安装过程会卡住
: ruby_block[supervise_redis_sleep] action run
而且由于位于容器的原因没有方便的办法来进行处理这个问题。
3。 通过 helm 安装
这其实也是官方推荐的部署方式;然而由于GW的原因,helm ,helm 无法下载位于 google 服务器上的镜像。
不过在这个过程中发现 helm 确实是一个不错的工具;可以考虑用其来进行目前部署的服务的管理。
如果网络通畅,这应该是最优的 (毕竟是官方的)gitlab@k8s 方案
网友评论