CircleCI で GCR(Container Registry) の private な Docker image を利用する方法
CircleCI 2.0, 2.1 で確認。
会社のプロジェクトなどで、 GCR等で private にした Docker image をそのままCircleCIのジョブで使用したいことがあると思います。特に GCR はやり方を忘れそうだったので備忘録として残しておきます。
手順
① GCRにアクセスするための適当なサービスアカウントをIAMで作成
GCR のDocker imageは GCS に自動作成されたバケットに保存されており、
CircleCI からそのバケットにアクセスする必要がある。
② GCRのimageが保存されているGCSバケットに対して、①に閲覧権限を付与
GCRにDocker imageを置いていれば artifacts.プロジェクト名.appspot.com
のような名前のバケット名が自動的にできており、そこにimageが保存されている。
(GCRのリージョンによっては asia.artifacts.プロジェクト名.appspot.com
のようになる)
GCSの画面にて、このバケットの ストレージオブジェクト閲覧者
の権限を ①で作成したサービスアカウントに対して付与する。
(GCR自体にアクセスするためのロールは存在しないことに注意。 参考: https://cloud.google.com/container-registry/docs/access-control#permissions_and_roles )
③ 権限を付与したサービスアカウントのJSONキーをCircleCIの環境変数に設定
②で権限を付与した後にサービスアカウントのJSONキーをダウンロードし、CircleCIの環境変数に設定する。 (今回は GCR_CREDS
という名前に。)
JSONキーの内容をコピーしてそのまま環境変数の値として入れればOK。
④ .circleci/config.yaml
に認証情報を記述
③で設定した環境変数を使って以下のように記述すれば完成。
_json_key
は、GCRにサービスアカウントからアクセスする際のユーザー名らしい。
(参考: https://cloud.google.com/container-registry/docs/advanced-authentication )
docker:
- image: gcr.io/プロジェクト名/イメージ名:タグ
auth:
username: _json_key
password: $GCR_CREDS
参考: Impossible to use a private gcr.io base image on Circle 2.0?
Author And Source
この問題について(CircleCI で GCR(Container Registry) の private な Docker image を利用する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/asdfghjkl1234/items/b194665c771aa5fd5e48著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .