3.8. プライベートレジストリーでの docker 認証情報の使用
プライベートコンテナーレジストリーの有効な認証情報を指定して、.docker/config.json ファイルで builds を提供できます。これにより、プライベートコンテナーイメージレジストリーにアウトプットイメージをプッシュしたり、認証を必要とするプライベートコンテナーイメージレジストリーからビルダーイメージをプルすることができます。
同じレジストリー内に、レジストリーパスに固有の認証情報を指定して、複数のリポジトリーに認証情報を指定できます。
OpenShift Container Platform コンテナーイメージレジストリーでは、OpenShift Container Platform が自動的にシークレットを生成するので、この作業は必要ありません。
デフォルトでは、.docker/config.json ファイルはホームディレクトリーにあり、以下の形式となっています。
複数のコンテナーイメージレジストリーを定義するか、同じレジストリーに複数のリポジトリーを定義することができます。または docker login コマンドを実行して、このファイルに認証エントリーを追加することも可能です。ファイルが存在しない場合には作成されます。
Kubernetes では Secret オブジェクトが提供され、これを使用して設定とパスワードを保存することができます。
前提条件
-
.docker/config.jsonファイルが必要です。
手順
次のコマンドを入力して、ローカルの
.docker/config.jsonファイルからシークレットを作成します。oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson$ oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
dockerhubという名前のシークレットの JSON 仕様が生成され、オブジェクトが作成されます。pushSecretフィールドをBuildConfigのoutputセクションに追加し、作成したsecretの名前 (上記の例では、dockerhub) に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc set build-secretコマンドを使用して、ビルド設定にプッシュするシークレットを設定します。oc set build-secret --push bc/sample-build dockerhub
$ oc set build-secret --push bc/sample-build dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow pushSecretフィールドを指定する代わりに、プッシュシークレットをビルドで使用されるサービスアカウントにリンクできます。デフォルトで、builds はbuilderサービスアカウントを使用します。シークレットにビルドのアウトプットイメージをホストするリポジトリーに一致する認証情報が含まれる場合、プッシュシークレットはビルドに自動的に追加されます。oc secrets link builder dockerhub
$ oc secrets link builder dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow ビルドストラテジー定義に含まれる
pullSecretを指定して、プライベートコンテナーイメージレジストリーからビルダーコンテナーイメージをプルします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc set build-secretコマンドを使用して、ビルド設定でプルシークレットを設定します。oc set build-secret --pull bc/sample-build dockerhub
$ oc set build-secret --pull bc/sample-build dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記以下の例では、ソールビルドに
pullSecretを使用しますが、Docker とカスタム builds にも該当します。pullSecretフィールドを指定する代わりに、プルシークレットをビルドで使用されるサービスアカウントにリンクできます。デフォルトで、builds はbuilderサービスアカウントを使用します。シークレットにビルドのインプットイメージをホストするリポジトリーに一致する認証情報が含まれる場合、プルシークレットはビルドに自動的に追加されます。pullSecretフィールドを指定する代わりに、ビルドで使用されるサービスアカウントにプルシークレットをリンクするには、次のコマンドを入力します。oc secrets link builder dockerhub
$ oc secrets link builder dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この機能を使用するには、
fromイメージをBuildConfig仕様に指定する必要があります。oc new-buildまたはoc new-appで生成される Docker ストラテジービルドは、場合によってこれを実行しない場合があります。