5.4. イメージプルシークレットの使用
コンテナーレジストリーで認証を行い、OpenShift Container Platform プロジェクト全体またはセキュリティー保護されたレジストリーからイメージをプルするには、イメージプルシークレットを設定して使用できます。
まず、レジストリー認証情報を取得します。これは通常、Docker の場合は ~/.docker/config.json ファイル、Podman の場合は ~/.config/containers/auth.json ファイルにあり、Red Hat OpenShift Cluster Manager プロセスからシークレットをプルすること で作成されます。このコンテンツは、クラスター内のグローバルな pullSecret オブジェクトを作成または更新するために使用され、quay.io および registry.redhat.io からのイメージへのアクセスを可能にします。
OpenShift イメージレジストリーを使用しており、同じプロジェクト内にあるイメージストリームからイメージを取得している場合、Pod サービスアカウントにはすでに適切な権限が付与されているはずです。追加の措置は必要ありません。
5.4.1. Pod が複数のプロジェクト間でイメージを参照できるようにする設定 リンクのコピーリンクがクリップボードにコピーされました!
ある OpenShift Container Platform プロジェクト内の Pod が別のプロジェクトのイメージを参照できるようにするには、対象プロジェクトの system:image-puller ロールにサービスアカウントをバインドします。プロジェクト間でイメージへのアクセス権を付与するには 、oc policy add-role-to-user コマンドまたは oc policy add-role-to-group コマンドを使用します。
Pod サービスアカウントまたは名前空間を作成する際は、サービスアカウントに Docker プルシークレットがプロビジョニングされるまでお待ちください。サービスアカウントが完全にプロビジョニングされる前に Pod を作成すると、Pod は OpenShift イメージレジストリーにアクセスできなくなります。
手順
以下のコマンドを入力することで、
プロジェクト aの Pod がプロジェクト bのイメージを参照できるようにします。この例では、プロジェクト aのサービスアカウントのデフォルトが、プロジェクト bのsystem:image-pullerロールにバインドされています。$ oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-bオプション:
add-role-to-groupフラグを使用して、プロジェクト a内の任意のサービスアカウントにアクセスを許可します。以下に例を示します。$ oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b