2021年1月22日金曜日

Gitlab で外部のコンテナレジストリと連携する方法

概要

Gitlab にはコンテナレジストリの機能があり簡単に有効にすることができます (参考)
今回は Gitlab 自体のコンテナレジストリの機能ではなく自分で構築したコンテナレジストリや PaaS のコンテナレジストリのような外部のコンテナレジストリと Gitlab を連携する方法を紹介します

環境

  • Gitlab-ee 13.7.3
  • registry 2.0

コンテナレジストリの構築

過去に docker/registry を使って構築したことがあるのでこれを参考に適当なインスタンスにコンテナレジストリを構築しました

gitlab.rb の編集

Gitlab 側から作成したコンテナレジストリを見るようにします


* vim /etc/gitlab/gitlab.rb

gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "192.168.100.11"
gitlab_rails['registry_port'] = "5000"
gitlab_rails['registry_api_url'] = "http://192.168.100.11:5000"


registry_hostregistry_port は Gitlab の UI 上で表示されるホストとポート名になります
実際に Gitlab が registry の API をコールするして情報を取得する設定は registry_api_url になるのでここに構築したレジストリのエンドポイントを入力しましょう
また当然ですが Gitlab -> registry API へのアクセスはできるようにしておきましょう

動作確認

reconfigure をかけて UI 上でちゃんとイメージの情報が見れるか確認します


* gitlab-ctl reconfigure

再起動できたら適当にイメージを push してみましょう
レジストリにアクセスできる環境からアクセスしましょう
タグ名はちゃんと Gitlab の命名規則に従いましょう


* docker pull alpine
* docker tag 192.168.100.11:5000/root/hoge2
* docker push 192.168.100.11:5000/root/hoge2

Gitlab の UI 上でイメージが確認できれば OK です

最後に

Gitlab で外部のコンテナレジストリと連携する方法を紹介しました
Gitlab のアプリと共存するとストレージなどを逼迫する恐れがあるのでコンテナレジストリは別インスタンスにしたいという場合には使える機能かなと思います

Gitlab のコンテナレジストリ機能だけを有効にしてそれと連携しても良いかなと思います
Gitlab のコンテナレジストリのクリーンアップポリシーなどを使うことができます

参考サイト

0 件のコメント:

コメントを投稿