久しぶりに「コピーしておくと便利なコマンド」を書きます。今日はOpenShiftのImageStreamで外部レジストリを登録する方法をご紹介します。
ImageStreamについては、以下の公式ドキュメントをご参照ください。
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
以上です。