3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitLabAdvent Calendar 2020

Day 11

オンプレGitLabで依存関係プロキシ(Dependency Proxy)を設定してDockerHubのダウンロード制限を回避する(設定編)

Last updated at Posted at 2020-12-31

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

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/

image.png

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の画面を見てみます。

image.png

プロキシー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の時間が短くなれば全体で利用できる回数も増えるでしょう。

次の利用編は、どういう風に使うか確認します。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?