Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ユーザ管理のコンテナイメージを使用する

Info

このページでは、ユーザ自身が管理するコンテナイメージレジストリに保存されているコンテナイメージを使用するための手順を説明します。 PFCP が提供するコンテナイメージの使用については、PFCP 提供のコンテナイメージについて をご参照ください。

PFCP では Amazon ECR および Google Artifact Registry のプライペートレジストリに保存されているコンテナイメージの取得をサポートしています。 Image pull secrets provisionerというシステムがデプロイされており、 これを使うことで ECR や Google Artifact Registry からイメージを取得するための Secret を自動作成・更新できます。

ECRのコンテナイメージを使用したワークロードの起動

  1. 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
    • AWS のマニフェスト管理に Terraform をご利用であれば、Terraform 設定の例 も参照ください。
  2. 使用する 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
    
  3. Pod の .spec.serviceAccountName フィールドを指定することで、Pod がこの ServiceAccount を使うように設定します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: POD-NAME
    spec:
      serviceAccountName: SERVICE-ACCOUNT-NAME
      ...
    
  4. Pod を起動し、ECR からイメージ取得できることを確認します。

Google Artifact Registryのコンテナイメージを使用したワークロードの起動

  1. 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
    • Google Cloud のマニフェスト管理に Terraform をご利用であれば、Terraform 設定の例 も参照ください。
  2. 使用する 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
    
  3. Pod の .spec.serviceAccountName フィールドを指定することで、Pod がこの ServiceAccount を使うように設定します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: POD-NAME
    spec:
      serviceAccountName: SERVICE-ACCOUNT-NAME
      ...
    
  4. Pod を起動し、Google Artifact Registry からイメージ取得できることを確認します。

より詳細については image pull secrets provisioner の README をご確認ください。


  1. PFCP の複数クラスタをご利用の場合、クラスタごとに設定が必要です。 ↩2