はじめに
以前Rancher2.0でGitlabを導入した のですが、結局管理する人は限られている、かつ1ホストで動いているのでdocker-composeを使ったほうが管理が楽なのではと感じてきました。「少しは管理が楽になるのではないかという淡い期待」は裏切られました。
Docker imageは、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
すると permission error で怒られます...
起動時に表示される、下記のコマンドでなそうとするものの直らず...
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のエラー
しかし、さらにエラーを吐かれます。
調べてみると、どうやら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"
Kubenetes環境でうごいているときには、クラスタのノードとポットからメトリックを収集するようです。(Rancher2.0にはKubernetesが使われてます。)
今回は無効にしたいので、ドキュメントのとおり、gitlab.rb
を書き換えます。 コメントは外してください。
prometheus [ 'monitor_kubernetes' ] = false
動いた
docker-compose up -d
すると動きました。
追記:データベースの移行に失敗してた
500エラーを返すようになるので、ログを見たらデータベースのエラーだった。Rancher2.0のpodのコンソールでバックアップを作成して、docker-composeのほうでリストアしたら、今のところは普通に動いています。
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore