ユーザ管理のコンテナイメージを使用する
このページでは、ユーザ自身が管理するコンテナイメージレジストリに保存されているコンテナイメージを使用するための手順を説明します。 PFCP が提供するコンテナイメージの使用については、PFCP 提供のコンテナイメージについて をご参照ください。
PFCP では Amazon ECR および Google Artifact Registry のプライペートレジストリに保存されているコンテナイメージの取得をサポートしています。 Image pull secrets provisionerというシステムがデプロイされており、 これを使うことで ECR や Google Artifact Registry からイメージを取得するための Secret を自動作成・更新できます。
ECRのコンテナイメージを使用したワークロードの起動
- 
AWS 側で、使用する Kubernetes ServiceAccount に対する ID 連携を構成します。
- この Kubernetes ServiceAccount を使う Pod が、ECR からイメージを取得できるように信頼関係を構成します。
 - 構成方法については、AWS ドキュメント Create an OpenID Connect (OIDC) identity provider in IAM - AWS Identity and Access Management をご確認ください。
 - プロバイダー URL は以下の値をお使いください。1
- SR1-01 クラスタ: 
https://token.sr1-01.kubernetes.pfcomputing.com - IK1-01 クラスタ: 
https://token.ik1-01.kubernetes.pfcomputing.com 
 - SR1-01 クラスタ: 
 - AWS のマニフェスト管理に Terraform をご利用であれば、Terraform 設定の例 も参照ください。
 
 - 
使用する ServiceAccount に、以下のアノテーションを付与します。
apiVersion: v1 kind: ServiceAccount metadata: namespace: NAMESPACE name: SERVICE-ACCOUNT-NAME annotations: # 使用したいコンテナイメージが格納されているECRレジストリを指定します。 imagepullsecrets.preferred.jp/registry: 999999999999.dkr.ecr.LOCATION.amazonaws.com # ID連携を用いたECRアクセスにおいて使用されるaud値を指定します。 imagepullsecrets.preferred.jp/audience: sts.amazonaws.com # ECRアクセスの際に、AssumeRoleにより使用されるIAM Roleを指定します。 imagepullsecrets.preferred.jp/aws-role-arn: arn:aws:iam::999999999999:role/ROLE-NAME - 
Pod の
.spec.serviceAccountNameフィールドを指定することで、Pod がこの ServiceAccount を使うように設定します。apiVersion: v1 kind: Pod metadata: name: POD-NAME spec: serviceAccountName: SERVICE-ACCOUNT-NAME ... - 
Pod を起動し、ECR からイメージ取得できることを確認します。
 
Google Artifact Registryのコンテナイメージを使用したワークロードの起動
- 
Google Cloud 側で、使用する Kubernetes ServiceAccount に対する ID 連携を構成します。
- この Kubernetes ServiceAccount を使う Pod が、Google Artifact Registry からイメージを取得できるように信頼関係を構成します。
 - 構成方法については、Google Cloud ドキュメント Configure workload identity federation with Kubernetes | IAM Documentation | Google Cloud をご確認ください。
 - 発行者(issuer)URL は以下の値をお使いください。1
- SR1-01 クラスタ: 
https://token.sr1-01.kubernetes.pfcomputing.com - IK1-01 クラスタ: 
https://token.ik1-01.kubernetes.pfcomputing.com 
 - SR1-01 クラスタ: 
 - Google Cloud のマニフェスト管理に Terraform をご利用であれば、Terraform 設定の例 も参照ください。
 
 - 
使用する ServiceAccount に、以下のアノテーションを付与します。
apiVersion: v1 kind: ServiceAccount metadata: namespace: NAMESPACE name: SERVICE-ACCOUNT-NAME annotations: # 使用したいコンテナイメージが格納されているGoogle Artifact Registryのレジストリを指定します。 imagepullsecrets.preferred.jp/registry: LOCATION-docker.pkg.dev # ID連携を用いたGoogle Artifact Registryアクセスにおいて使用されるaud値を指定します。 imagepullsecrets.preferred.jp/audience: //iam.googleapis.com/projects/999999999999/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME # ID連携に使うWorkload Identityプロバイダのリソース名を指定します。 imagepullsecrets.preferred.jp/googlecloud-workload-identity-provider: projects/999999999999/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME # ID連携に使うGoogleサービスアカウントのEメールアドレスを指定します。 imagepullsecrets.preferred.jp/googlecloud-service-account-email: SERVICE-ACCOUNT-ID@PROJECT-NAME.iam.gserviceaccount.com - 
Pod の
.spec.serviceAccountNameフィールドを指定することで、Pod がこの ServiceAccount を使うように設定します。apiVersion: v1 kind: Pod metadata: name: POD-NAME spec: serviceAccountName: SERVICE-ACCOUNT-NAME ... - 
Pod を起動し、Google Artifact Registry からイメージ取得できることを確認します。
 
より詳細については image pull secrets provisioner の README をご確認ください。