美文网首页
gitlab 迁移

gitlab 迁移

作者: tongesysu | 来源:发表于2018-12-29 16:18 被阅读0次

    如果要在物理机上进行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 方案

    相关文章

      网友评论

          本文标题:gitlab 迁移

          本文链接:https://www.haomeiwen.com/subject/jhfplqtx.html