5.4.2. Pod が他のセキュリティー保護されたレジストリーからイメージを参照できるようにする設定
プルシークレットを使用すると、OpenShift Container Platform の Pod は、セキュリティーで保護されたレジストリーで認証を行い、コンテナーイメージをプルできます。Docker と Podman は認証情報を設定ファイルに保存するため、それを使ってサービスアカウントのプルシークレットを作成できます。
以前にセキュリティー保護されたレジストリーまたはセキュリティー保護されていないレジストリーにログインしたことがある場合、以下のファイルには認証情報が保存されます。
-
Docker: Docker は、デフォルトで
$HOME/.docker/config.jsonを使用します。 -
Podman: Podman は、デフォルトで
$HOME/.config/containers/auth.jsonを使用します。
quay.io や quay.io/<example_repository> のような一意のパスがある場合、Docker と Podman の認証情報ファイルおよび関連するプルシークレットには、同一レジストリーへの複数の参照を含めることができます。ただし、Docker および Podman のいずれも、まったく同じレジストリーパスの複数エントリーはサポートしていません。
config.json ファイルのサンプル
{
"auths":{
"cloud.openshift.com":{
"auth":"b3Blb=",
"email":"you@example.com"
},
"quay.io":{
"auth":"b3Blb=",
"email":"you@example.com"
},
"quay.io/repository-main":{
"auth":"b3Blb=",
"email":"you@example.com"
}
}
}
プルシークレットの例
apiVersion: v1
data:
.dockerconfigjson: ewogICAiYXV0aHMiOnsKICAgICAgIm0iOnsKICAgICAgIsKICAgICAgICAgImF1dGgiOiJiM0JsYj0iLAogICAgICAgICAiZW1haWwiOiJ5b3VAZXhhbXBsZS5jb20iCiAgICAgIH0KICAgfQp9Cg==
kind: Secret
metadata:
creationTimestamp: "2021-09-09T19:10:11Z"
name: pull-secret
namespace: default
resourceVersion: "37676"
uid: e2851531-01bc-48ba-878c-de96cfe31020
type: Opaque
5.4.2.1. プルシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform のコンテナーレジストリーで認証を行うには、既存の Docker または Podman 認証ファイルからプルシークレットを作成できます。oc create secret docker-registry コマンドを使用して、レジストリー認証情報を直接指定することで、シークレットを作成することもできます。
手順
既存の認証ファイルからシークレットを作成します。
.docker/config.jsonを使用する Docker クライアントの場合は、次のコマンドを入力します。$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson.config/containers/auth.jsonを使用する Podman クライアントの場合は、次のコマンドを入力します。$ oc create secret generic <pull_secret_name> \ --from-file=<path/to/.config/containers/auth.json> \ --type=kubernetes.io/podmanconfigjson
オプション: 保護されたレジストリー用の Docker 認証情報がまだない場合は、次のコマンドを実行してシークレットを作成できます。
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>