ユーザ管理のコンテナイメージを使用する
このページでは、ユーザ自身が管理するコンテナイメージレジストリに保存されているコンテナイメージを使用するための手順を説明します。 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 をご確認ください。