openssl
GitLab
GitLab-CI
GitLab-CI-Runner

オレオレ証明書なGitlabサーバにGitlab Runner を登録する

Gitlab CIを使ってみようと思ったが
自己証明書を使っているサーバに Gitlab runner を登録するとこで
ハマったので手順をメモ

手順

1. 証明書を取得

Gitlabサーバに使用されている証明書を取得します
opensslコマンドを使って取得するのが楽そうです

$ openssl s_client -connect my.gitlab.domain:443 -showcerts < /dev/null | openssl x509 -outform PEM > /etc/gitlab-runner/certs/my.gitlab.domain.crt

openssl s_client -showcerts でサーバの証明書を確認することができます。
-showcerts は標準入力からの入力を待ちますので /dev/null 入力することによって
すぐに終了するようにしています。

crtファイルのファイル名はGitlabサーバのドメインと合わせて、
/etc/gitlab-runner/certs/以下に配置します。

ここに置いておくことで gitlab-runner register コマンドを実行した際に
証明書ファイルを読み込んでくれるようです

2. gitlab-runner register コマンドを実行

あとはコマンドを実行するだけです

$ sudo gitlab-runner register

その他

実際は docker in docker で動かすので
/etc/gitlab-runner/certsをボリュームマウントしてあげたりする

参考

https://docs.gitlab.com/runner/register/index.html
https://github.com/ayufan/gitlab-ci-multi-runner/blob/master/docs/configuration/tls-self-signed.md
https://gitlab.com/gitlab-org/gitlab-runner/issues/1388