OpenShiftのImageStreamを登録する方法

久しぶりに「コピーしておくと便利なコマンド」を書きます。今日はOpenShiftのImageStreamで外部レジストリを登録する方法をご紹介します。

ImageStreamについては、以下の公式ドキュメントをご参照ください。

https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.4/html/images/managing-image-streams

1. 外部レジストリにログインする


認証ファイルを生成するため、docker loginコマンドを使って対象の外部レジストリに一度ログインします。

$ docker login [外部レジストリURL]
→ユーザー名とパスワードを入力する

2. Secretを作成する


pullするときに、外部レジストリにアクセスするための認証情報をSecretで作成します。

$ oc create secret generic [Secret名] --from-file .dockerconfigjson=[認証情報のjsonファイルパス] --type kubernetes.io/dockerconfigjson

「認証情報のjsonファイルパス」は、OS毎に異なります。MacOSの場合は、~/.docker/config.jsonです。

3. SecretをServiceAccountにリンクする


手順2で作成したSecretがImageStreamに紐づいていないと、pullすることができないので、ServiceAccountにリンクします。

$ oc secrets link default [手順2で作成したSecret名]

S2Iビルダーイメージを利用する場合は、builderのServiceAccountにリンクします。

$ oc secrets link builder [手順2で作成したSecret名]

4. ImageStreamを登録する


以下のコマンドでImageStreamを登録します。

$ oc import-image [ImageStream名] --from [外部レジストリのURL] --confirm

 

以上です。