毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
GitLabのDependency Proxyの話です。
GitLab Premiumの機能でしたが、13.6(2020年11月)からCommunity EditionのCoreの無料版で使えるようになりました。
社内のオンプレGitLabに設定してみたという話になります。(GitLab.comでは2020年11月から利用可能になっています)
The Dependency Proxy is moving to open source | GitLab
https://about.gitlab.com/blog/2020/10/30/minor-breaking-change-dependency-proxy/
Using the Dependency Proxy to improve your pipelines | GitLab
https://about.gitlab.com/blog/2020/12/15/dependency-proxy-updates/
1. Dependency Proxyについて
1-1. Dependency Proxyってなに?
簡単に言うと、DockerHubのDockerイメージをキャッシュしてくれるプロキシーです。
類似製品としてはJFrog ArtifactoryやSonatype Nexus、Harbor(v2.1.1以降Docker Hubのみ)があります。
Category Direction - Dependency Proxy | GitLab https://about.gitlab.com/direction/package/dependency_proxy/
1-2. Dependency Proxyはなぜ必要?
Docker HubのDockerイメージのdocker pullダウンロードに2020年11月から制限がかかるようになりました。
- 無料ユーザー(匿名):6時間あたり100回まで
- 無料ユーザー(登録済み):6時間あたり200回まで
- ProおよびTeamプランユーザー:無制限
GitLab CI/CDでも、DockerHubからDockerイメージをdocker pullすることも多く、制限にかかってしまう可能性もあります。
そうなると、CI/CDにも時間がかかりますし、ネットワークトラフィックが無駄に発生してしまうのもよくありません。
現在は、DockerHubのイメージキャッシュとnpmjs.comが対象です。
2. Dependency Proxyをセットアップ
設定方法は、以下に書かれています。
GitLab Dependency Proxy administration | GitLab
https://docs.gitlab.com/ee/administration/packages/dependency_proxy.html
2-1. gitlab.rbに設定を追記
/etc/gitlab/gitlab.rbに以下の行を追加します。
gitlab_rails['dependency_proxy_enabled'] = true
2-2. Dependency Proxyが保存するイメージのストレージパスを変更
Dockerイメージが沢山ダウンロードされる可能性があるのでデフォルトの/var/opt/gitlab/gitlab-rails/shared/dependency_proxy/
ではなくて別の場所にしておきましょう。
今回は、/var/opt/gitlab-cache/dependency_proxy
にしました。
gitlab_rails['dependency_proxy_storage_path'] = "/var/opt/gitlab-cache/dependency_proxy"
ownerとPermissionは、所有者がgitでパーミッションが700であれば大丈夫でした。
# ls -la /var/opt/gitlab-cache/dependency_proxy/
合計 0
drwx------ 2 git root 6 12月 30 19:34 .
drwxr-xr-x 4 root root 49 12月 30 19:51 ..
2-3. reconfigureして設定を反映させる
$ sudo gitlab reconfigure
reconfigureした後にGitLabを再起動します。
$ sudo service gitlab restart
3. Dependency Proxy(依存関係プロキシ)の動作をグループで確認
Dependency Proxyはグループ単位で利用できます。
DependencyProxyTestGroup
というグループを作ってみました。
グループの設定でDependency Proxyの画面を見てみます。
プロキシーURLは以下になります。https://gitlab.example.jp/dependencyproxytestgroup/dependency_proxy/containers
docker login gitlab.example.jp
でloginしてから
docker pull gitlab.example.jp:443/dependencyproxytestgroup/dependency_proxy/containers/alpine:latest
のようにして利用できるようです。
4. まとめ
omnibusインストールしたGitLabであれば設定自体は難しくありません。
また、GitLab.comの無料アカウントでも既に利用できます。GitLab.comのCI/CDの無料アカウントは利用できる時間が400分に制限されてしまっているので、docker pullの時間が短くなれば全体で利用できる回数も増えるでしょう。
次の利用編は、どういう風に使うか確認します。