将 Rancher 2.0 的 GitLab 迁移到使用 docker-compose 进行管理

首先

尽管以前在Rancher2.0上引入了Gitlab,但由于管理人员有限且在一台主机上运行,因此我认为使用docker-compose可能更方便管理。然而,“期望能够稍微简化管理工作”的想法被证明是错的。

Docker镜像将继续使用与Rancher2.0相同的gitlab/gitlab-ce。

首先,我们尝试复制并挂载当前位于 /opt/gitlab/ /log/gitlab/ /etc/gitlab/ 的文件。
我写了以下类似的 docker-compose.yml。

version: "3"
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    ports:
      - "10080:80"
    volumes:
      - /mnt/gitlab/gitlab/data:/var/opt/gitlab
      - /mnt/gitlab/gitlab/config:/etc/gitlab
      - /mnt/gitlab/gitlab/log:/var/log/gitlab

权限错误

然而,如果继续执行 docker-compose up,将会因为权限错误而受到警告…

尽管尝试使用下面的命令在启动时进行修复,但问题仍然没有解决…

docker-compose run gitlab update-permissions

搜索后找到了以下页面。按照页面上所写的进行命令执行的尝试。
https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2976

docker-compose run gitlab chmod -R 2770 /var/opt/gitlab/git-data/repositories

运行命令后,这个错误好像修复了。

普罗米修斯的错误

然而,它会继续报错。
经过调查,似乎是Prometheus的错误。在Gitlab上似乎正在运行名为Prometheus的监控服务。
https://docs.gitlab.com/ce/administration/monitoring/prometheus/index.html

2018-12-05_08:09:22.10898 time="2018-12-05T08:09:22Z" level=error msg="Error creating HTTP client for job "kubernetes-cadvisor": unable to use specified CA cert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory" source="scrape.go:121" 
2018-12-05_08:09:22.10898 time="2018-12-05T08:09:22Z" level=error msg="Cannot create Kubernetes discovery: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory" source="discovery.go:86" 
2018-12-05_08:09:22.10899 time="2018-12-05T08:09:22Z" level=error msg="Error creating HTTP client for job "kubernetes-nodes": unable to use specified CA cert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory" source="scrape.go:121" 
2018-12-05_08:09:22.10900 time="2018-12-05T08:09:22Z" level=error msg="Cannot create Kubernetes discovery: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory" source="discovery.go:86" 
2018-12-05_08:09:22.10901 time="2018-12-05T08:09:22Z" level=error <img width="785" alt="Screen Shot 2018-12-05 at 5.46.49 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/100996/248fb337-3be7-9ef4-20c0-624496549290.png">
msg="Error creating HTTP client for job "kubernetes-pods": unable to use specified CA cert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory" source="scrape.go:121" 

当Kubernetes环境正在运行时,似乎会从集群的节点和Pod中收集指标。(Rancher 2.0中使用了Kubernetes。)
这次我们想要禁用它,所以按照文档的说明,修改gitlab.rb文件。请取消注释。

prometheus [ 'monitor_kubernetes' ] = false

移动了

Screen Shot 2018-12-05 at 5.46.49 PM.png

追加说明:数据库迁移失败了

由于返回500错误,查看日志后发现是数据库错误。在Rancher2.0的pod控制台上创建了备份,在docker-compose中进行了恢复,目前正常运行。
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore

bannerAds