私の会社は認証局を変更しました(以前は単一のCAでしたが、現在はルートCAと中間CAがあります)。GitLabインスタンスの設定を変更して成功し、ランナー(Ubuntu 18.04.5 LTS)に移行しました。GitLabドキュメント成功しませんでした。
私はデフォルトのアプローチに従いましたここ「デフォルト - システム証明書を読み取ります」と表示されているので、証明書 (CA および中間) を Ubuntu CA リストに追加しました。ランナーが GitLab に表示されるので、すべてが機能しているようです。
仕事を始めると、次のような結果が得られます。
Running with gitlab-runner 11.5.0 (3afdaba6)
on RUN01 12ccbb74
Using Docker executor with image node:latest ...
Pulling docker image node:latest ...
Using docker image sha256:ab773999a02271b25a9f3bce46018fc3ad46a7f922a5e3e8712b6d1c7087c415 for node:latest ...
Running on runner-12ccbb74-project-73-concurrent-0 via (...)...
00:02
Fetching changes...
00:01
HEAD is now at 60b6860 Update dependency mocha to v9
fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@(...).git/': SSL certificate problem: unable to get issuer certificate
ERROR: Job failed: exit code 1
次に、(GitLab インスタンス上で) 証明書ファイルに完全なチェーンを追加すると、エラーが に変わりましたSSL certificate problem: self signed certificate in certificate chain
。
私の考え*: Ubuntuでは動作するが、Dockerでは動作しない。そこで、Docker および Kubernetes Executor の TLS 証明書の信頼セクション。
これまで試してみたが、成功しなかったこと:
- ルート CA 証明書を に追加しました
/etc/gitlab-runner/certs/ca.crt
。 - ルート CA と中間 CA がチェーンになったファイルも試しました。
volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]
ファイルに追加しましたconfig.toml
。しかし、何かを置き換える必要があることはほぼ確実です/path/to-ca-cert-dir
。ただ、何を置き換えるのかがわかりません。
*更新: GitLab Runnerをインストールしたとき、私はDebian/Ubuntu/CentOS/RedHatのGitLabリポジトリを使用してインストールするなので、Docker/K8sの指示は意味をなさなかった。答えこれをどうやって解決できたかについて。
答え1
私は3番目のオプションに従ってそれを動作させることができましたGitLab サーバーをターゲットとする自己署名証明書のサポートオプション、それは言う:
PEM 証明書の読み取り: GitLab Runner は、定義済みファイルから PEM 証明書 (DER 形式はサポートされていません) を読み取ります。
GitLab Runner が root として実行される場合の *nix システム上の /etc/gitlab-runner/certs/hostname.crt。
サーバーアドレスがhttps://my.gitlab.server.com:8443/、/etc/gitlab-runner/certs/my.gitlab.server.com.crt に証明書ファイルを作成します。
そこで、完全なチェーン (GitLab 証明書、中間証明書、ルート) をファイル名に追加しました/etc/gitlab-runner/certs/<gitlab-url>.crt
。 でサービスを再起動するgitlab-runner restart
と、ジョブが機能しています。