6.10. AWS Elastic File Service CSI Driver Operator


6.10.1. 概要

OpenShift Container Platform は、AWS Elastic File Service (EFS) の Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。

CSI Operator およびドライバーを使用する場合は、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。

AWS EFS CSI Driver Operator をインストールすると、OpenShift Container Platform はデフォルトで AWS EFS CSI Operator と AWS EFS CSI ドライバーを openshift-cluster-csi-drivers namespace にインストールします。これにより、AWS EFS CSI Driver Operator は、AWS EFS アセットにマウントする CSI がプロビジョニングする PV を作成することができます。

  • AWS EFS CSI Driver Operator をインストールしても、デフォルトでは、永続ボリューム要求 (PVC) の作成に使用されるストレージクラスは作成されません。ただし、AWS EFS StorageClass を手動で作成することは可能です。AWS EFS CSI Driver Operator は、ストレージボリュームをオンデマンドで作成できるようにし、クラスター管理者がストレージを事前にプロビジョニングする必要がなくすことで、動的ボリュームのプロビジョニングをサポートします。
  • AWS EFS CSI ドライバー を使用すると、AWS EFS PV を作成し、マウントできます。

6.10.2. CSI について

ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。

CSI Operator は、インツリーボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。

6.10.3. AWS EFS CSI Driver Operator の設定

  1. AWS EFS と AWS Secure Token Service (STS) を使用している場合は、STS のロール Amazon Resource Name (ARN) を取得します。これは、AWS EFS CSI Driver Operator をインストールするために必要です。
  2. AWS EFS CSI Driver Operator をインストールします。
  3. AWS EFS CSI ドライバーをインストールします。

6.10.3.1. Security Token Service の Amazon リソース名ロールの取得

この手順では、AWS Security Token Service (STS) 上の OpenShift Container Platform で AWS EFS CSI Driver Operator を設定するための Amazon リソース名 (ARN) ロールを取得する方法を説明します。

重要

AWS EFS CSI Driver Operator をインストールする前に、この手順を実行してください (AWS EFS CSI Driver Operator のインストール に記載された手順を参照)。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • AWS アカウントの認証情報。

手順

ARN ロールは複数の方法で取得できます。次の手順は、クラスターのインストールと同じ概念と CCO ユーティリティー (ccoctl) バイナリーツールを使用する 1 つの方法を示しています。

注記

One Zone ファイルシステムを使用している場合は、コントローラー用とドライバーノード用に 1 つずつ、合計 2 つの CredentialRequests を作成する必要があります。詳細は、STS を使用した One Zone ファイルシステムのセットアップ セクションを参照してください。

STS を使用して AWS EFS CSI Driver Operator を設定するための ARN ロールを取得するには、以下を実行します。

  1. STS でクラスターをインストールするために使用した OpenShift Container Platform リリースイメージから ccoctl を展開します。詳細は、「Cloud Credential Operator ユーティリティーの設定」を参照してください。
  2. 以下の例に示されているように EFS CredentialsRequest YAML ファイルを作成および保存してから、それを credrequests ディレクトリーに配置します。

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: openshift-aws-efs-csi-driver
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - action:
          - elasticfilesystem:*
          effect: Allow
          resource: '*'
      secretRef:
        name: aws-efs-cloud-credentials
        namespace: openshift-cluster-csi-drivers
      serviceAccountNames:
      - aws-efs-csi-driver-operator
      - aws-efs-csi-driver-controller-sa
    Copy to Clipboard Toggle word wrap

  3. ccoctl ツールを実行して AWS に新規の IAM ロールを生成し、その YAML ファイルをローカルファイルシステムに作成します (<path_to_ccoctl_output_dir>/manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml)。

    $ ccoctl aws create-iam-roles --name=<name> --region=<aws_region> --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
    Copy to Clipboard Toggle word wrap
    • name=<name> は、追跡用に作成されたクラウドリソースにタグを付けるために使用される名前です。
    • region=<aws_region> は、クラウドリソースが作成される AWS リージョンです。
    • dir=<path_to_directory_with_list_of_credentials_requests>/credrequests は、前のステップの EFS CredentialsRequest ファイルが含まれるディレクトリーです。
    • <aws_account_id> は AWS アカウント ID です。

      $ ccoctl aws create-iam-roles --name my-aws-efs --credentials-requests-dir credrequests --identity-provider-arn arn:aws:iam::123456789012:oidc-provider/my-aws-efs-oidc.s3.us-east-2.amazonaws.com
      Copy to Clipboard Toggle word wrap

      出力例

      2022/03/21 06:24:44 Role arn:aws:iam::123456789012:role/my-aws-efs -openshift-cluster-csi-drivers-aws-efs-cloud- created
      2022/03/21 06:24:44 Saved credentials configuration to: /manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml
      2022/03/21 06:24:45 Updated Role policy for Role my-aws-efs-openshift-cluster-csi-drivers-aws-efs-cloud-
      Copy to Clipboard Toggle word wrap

  4. 前の手順の 出力例 の最初の行から、ARN ロールをコピーします。ARN ロールは、"Role" と "created" の間にあります。この例では、ARN ロールは "arn:aws:iam::123456789012:role/my-aws-efs -openshift-cluster-csi-drivers-aws-efs-cloud" です。

    AWS EFS CSI Driver Operator をインストールするときに、ARN ロールが必要になります。

次のステップ

AWS EFS CSI Driver Operator をインストール します。

6.10.3.2. AWS EFS CSI Driver Operator のインストール

AWS EFS CSI Driver Operator (Red Hat Operator) は、デフォルトでは OpenShift Container Platform にインストールされません。以下の手順を使用して、クラスター内で AWS EFS CSI Driver Operator をインストールおよび設定します。

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

Web コンソールから AWS EFS CSI Driver Operator をインストールするには、以下を実行します。

  1. Web コンソールにログインします。
  2. AWS EFS CSI Operator をインストールします。

    1. Ecosystem Software Catalog をクリックします。
    2. フィルターボックスに AWS EFS CSI と入力して、AWS EFS CSI Operator を探します。
    3. AWS EFS CSI Driver Operator ボタンをクリックします。
    重要

    AWS EFS Operator ではなく AWS EFS CSI Driver Operator を必ず選択してください。AWS EFS Operator はコミュニティー Operator であり、Red Hat ではサポートしていません。

    1. AWS EFS CSI Driver Operator ページで Install をクリックします。
    2. Install Operator のページで、以下のことを確認してください。

      • AWS EFS と AWS Secure Token Service (STS) を使用している場合は、role ARN フィールドに、Security Token Service のロール Amazon Resource Name の取得 の手順の最後のステップでコピーした ARN ロールを入力します。
      • All namespaces on the cluster (default) が選択されている。
      • Installed Namespaceopenshift-cluster-csi-drivers に設定されている。
    3. Install をクリックします。

      インストールが終了すると、AWS EFS CSI Operator が Web コンソールの Installed Operators に表示されます。

次のステップ

AWS EFS CSI ドライバーをインストール します。

6.10.3.3. AWS EFS CSI ドライバーのインストール

AWS EFS CSI Driver Operator (Red Hat Operator) をインストールした後、AWS EFS CSI ドライバー をインストールします。

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

  1. Administration CustomResourceDefinitions ClusterCSIDriver をクリックします。
  2. Instances タブで Create ClusterCSIDriver をクリックします。
  3. 以下の YAML ファイルを使用します。

    apiVersion: operator.openshift.io/v1
    kind: ClusterCSIDriver
    metadata:
        name: efs.csi.aws.com
    spec:
      managementState: Managed
    Copy to Clipboard Toggle word wrap
  4. Create をクリックします。
  5. 以下の条件が "True" に変わるのを待ちます。

    • AWSEFSDriverNodeServiceControllerAvailable
    • AWSEFSDriverControllerServiceControllerAvailable

6.10.4. AWS EFS ストレージクラスの作成

ストレージクラスを使用すると、ストレージのレベルや使用状況を区別し、記述することができます。ストレージクラスを定義することにより、ユーザーは動的にプロビジョニングされた永続ボリュームを取得できます。

AWS EFS CSI Driver Operator (Red Hat Operator) は、インストール後、デフォルトではストレージクラスを作成しません。ただし、AWS EFS ストレージクラスを手動で作成することは可能です。

6.10.4.1. コンソールを使用した AWS EFS ストレージクラスの作成

手順

  1. OpenShift Container Platform Web コンソールで、Storage StorageClasses をクリックします。
  2. StorageClasses ページで、Create StorageClass をクリックします。
  3. StorageClass ページで、次の手順を実行します。

    1. ストレージクラスを参照するための名前を入力します。
    2. オプション: 説明を入力します。
    3. 回収ポリシーを選択します。
    4. Provisioner ドロップダウンリストから efs.csi.aws.com を選択します。
    5. オプション: 選択したプロビジョナーの設定パラメーターを設定します。
  4. Create をクリックします。

6.10.4.2. CLI を使用した AWS EFS ストレージクラスの作成

手順

  • StorageClass オブジェクトを作成します。

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: efs-sc
    provisioner: efs.csi.aws.com
    parameters:
      provisioningMode: efs-ap 
    1
    
      fileSystemId: fs-a5324911 
    2
    
      directoryPerms: "700" 
    3
    
      gidRangeStart: "1000" 
    4
    
      gidRangeEnd: "2000" 
    5
    
      basePath: "/dynamic_provisioning" 
    6
    Copy to Clipboard Toggle word wrap
    1
    動的プロビジョニングを有効にするには、provisioningModeefs-ap を指定する必要があります。
    2
    fileSystemId は、手動で作成した EFS ボリュームの ID にする必要があります。
    3
    directoryPerms は、ボリュームのルートディレクトリーのデフォルトパーミッションです。この場合、ボリュームには所有者のみがアクセスできます。
    4 5
    gidRangeStartgidRangeEnd は、AWS アクセスポイントの GID を設定する際に使用する POSIX グループ ID (GID) の範囲を設定します。指定しないと、デフォルトの範囲は 50000 - 7000000 になります。プロビジョニングされた各ボリューム、つまり AWS のアクセスポイントには、この範囲からの固有 GID が割り当てられます。
    6
    basePath は、動的にプロビジョニングされたボリュームを作成する際に使用される EFS ボリューム上のディレクトリーです。この場合は、EFS ボリューム上に “/dynamic_provisioning/<random uuid>” として PV がプロビジョニングされます。PV を使用する Pod には、そのサブディレクトリーのみがマウントされます。
    注記

    クラスター管理者は、それぞれが異なる EFS ボリュームを使用する複数の StorageClass オブジェクトを作成することができます。

6.10.5. AWS EFS CSI クロスアカウントのサポート

クロスアカウントのサポートにより、1 つの AWS アカウントに OpenShift Container Platform クラスターを配置し、AWS Elastic File System (EFS) Container Storage Interface (CSI) ドライバーを使用して別の AWS アカウントにファイルシステムをマウントできます。

前提条件

  • 管理者権限を持つ OpenShift Container Platform クラスターへのアクセス
  • 2 つの有効な AWS アカウント
  • EFS CSI Operator がインストールされている。EFS CSI Operator のインストール方法は、AWS EFS CSI Driver Operator のインストール セクションを参照してください。
  • OpenShift Container Platform クラスターと EFS ファイルシステムの両方が同じ AWS リージョンに配置されている。
  • 次の手順で使用する 2 つの仮想プライベートクラウド (VPC) が異なるネットワーク Classless Inter-Domain Routing (CIDR) 範囲を使用していることを確認する。
  • OpenShift Container Platform CLI (oc) へのアクセス。
  • AWS CLI へのアクセス。
  • jq コマンドライン JSON プロセッサーへのアクセス。

手順

次の手順では、以下のアカウントを設定する方法を説明します。

  • OpenShift Container Platform AWS アカウント A: VPC 内にデプロイされた Red Hat OpenShift Container Platform クラスター (v4.16 以降) が含まれている。
  • AWS アカウント B: VPC (サブネット、ルートテーブル、ネットワーク接続を含む) が含まれている。この VPC に EFS ファイルシステムを作成します。

アカウント間で AWS EFS を使用するには:

  1. 環境をセットアップします。

    1. 次のコマンドを実行して環境変数を設定します。

      export CLUSTER_NAME="<CLUSTER_NAME>" 
      1
      
      export AWS_REGION="<AWS_REGION>" 
      2
      
      export AWS_ACCOUNT_A_ID="<ACCOUNT_A_ID>" 
      3
      
      export AWS_ACCOUNT_B_ID="<ACCOUNT_B_ID>" 
      4
      
      export AWS_ACCOUNT_A_VPC_CIDR="<VPC_A_CIDR>" 
      5
      
      export AWS_ACCOUNT_B_VPC_CIDR="<VPC_B_CIDR>" 
      6
      
      export AWS_ACCOUNT_A_VPC_ID="<VPC_A_ID>" 
      7
      
      export AWS_ACCOUNT_B_VPC_ID="<VPC_B_ID>" 
      8
      
      export SCRATCH_DIR="<WORKING_DIRECTORY>" 
      9
      
      export CSI_DRIVER_NAMESPACE="openshift-cluster-csi-drivers" 
      10
      
      export AWS_PAGER="" 
      11
      Copy to Clipboard Toggle word wrap
      1
      任意のクラスター名。
      2
      任意の AWS リージョン。
      3
      AWS アカウント A の ID。
      4
      AWS アカウント B の ID。
      5
      アカウント A の VPC の CIDR 範囲。
      6
      アカウント B の VPC の CIDR 範囲。
      7
      アカウント A (クラスター) の VPC ID
      8
      アカウント B の VPC ID (EFS クロスアカウント)
      9
      一時ファイルを保存するために使用する任意の書き込み可能なディレクトリー。
      10
      ドライバーがデフォルト以外の namespace にインストールされている場合は、この値を変更します。
      11
      AWS CLI のすべての出力を stdout に直接出力させます。
    2. 次のコマンドを実行して作業ディレクトリーを作成します。

      mkdir -p $SCRATCH_DIR
      Copy to Clipboard Toggle word wrap
    3. OpenShift Container Platform CLI で次のコマンドを実行して、クラスターの接続を確認します。

      $ oc whoami
      Copy to Clipboard Toggle word wrap
    4. OpenShift Container Platform クラスターのタイプを決定し、ノードセレクターを設定します。

      EFS クロスアカウント機能を使用するには、EFS CSI コントローラー Pod が稼働しているノードに AWS IAM ポリシーを割り当てる必要があります。ただし、割り当て方法は OpenShift Container Platform タイプによって異なります。

      • クラスターが Hosted Control Plane (HyperShift) としてデプロイされている場合は、次のコマンドを実行して、ワーカーノードのラベルを格納するように NODE_SELECTOR 環境変数を設定します。

        export NODE_SELECTOR=node-role.kubernetes.io/worker
        Copy to Clipboard Toggle word wrap
      • それ以外の OpenShift Container Platform タイプの場合は、次のコマンドを実行して、マスターノードのラベルを格納するように NODE_SELECTOR 環境変数を設定します。

        export NODE_SELECTOR=node-role.kubernetes.io/master
        Copy to Clipboard Toggle word wrap
    5. 次のコマンドを実行して、アカウント切り替え用の環境変数として AWS CLI プロファイルを設定します。

      export AWS_ACCOUNT_A="<ACCOUNT_A_NAME>"
      export AWS_ACCOUNT_B="<ACCOUNT_B_NAME>"
      Copy to Clipboard Toggle word wrap
    6. 次のコマンドを実行して、両方のアカウントで AWS CLI のデフォルト出力形式が JSON に設定されていることを確認します。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_A}
      aws configure get output
      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_B}
      aws configure get output
      Copy to Clipboard Toggle word wrap

      上記のコマンドが次の結果を返す場合:

      • 値なし: デフォルト出力形式がすでに JSON に設定されており、変更は必要ありません。
      • 何らかの値: JSON 形式を使用するように AWS CLI を再設定します。出力形式の変更方法は、AWS ドキュメントの Setting the output format in the AWS CLI を参照してください。
    7. 次のコマンドを実行して、AWS_DEFAULT_PROFILE との競合を防ぐために、シェルで AWS_PROFILE を設定解除します。

      unset AWS_PROFILE
      Copy to Clipboard Toggle word wrap
  2. AWS アカウント B の IAM ロールとポリシーを設定します。

    1. 次のコマンドを実行して、アカウント B のプロファイルに切り替えます。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_B}
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、EFS CSI Driver Operator の IAM ロール名を定義します。

      export ACCOUNT_B_ROLE_NAME=${CLUSTER_NAME}-cross-account-aws-efs-csi-operator
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、IAM 信頼ポリシーファイルを作成します。

      cat <<EOF > $SCRATCH_DIR/AssumeRolePolicyInAccountB.json
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::${AWS_ACCOUNT_A_ID}:root"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {}
              }
          ]
      }
      EOF
      Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、EFS CSI Driver Operator の IAM ロールを作成します。

      ACCOUNT_B_ROLE_ARN=$(aws iam create-role \
        --role-name "${ACCOUNT_B_ROLE_NAME}" \
        --assume-role-policy-document file://$SCRATCH_DIR/AssumeRolePolicyInAccountB.json \
        --query "Role.Arn" --output text) \
      && echo $ACCOUNT_B_ROLE_ARN
      Copy to Clipboard Toggle word wrap
    5. 次のコマンドを実行して、IAM ポリシーファイルを作成します。

      cat << EOF > $SCRATCH_DIR/EfsPolicyInAccountB.json
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": [
                      "ec2:DescribeNetworkInterfaces",
                      "ec2:DescribeSubnets"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "VisualEditor1",
                  "Effect": "Allow",
                  "Action": [
                      "elasticfilesystem:DescribeMountTargets",
                      "elasticfilesystem:DeleteAccessPoint",
                      "elasticfilesystem:ClientMount",
                      "elasticfilesystem:DescribeAccessPoints",
                      "elasticfilesystem:ClientWrite",
                      "elasticfilesystem:ClientRootAccess",
                      "elasticfilesystem:DescribeFileSystems",
                      "elasticfilesystem:CreateAccessPoint",
                      "elasticfilesystem:TagResource"
                  ],
                  "Resource": "*"
              }
          ]
      }
      EOF
      Copy to Clipboard Toggle word wrap
    6. 次のコマンドを実行して、IAM ポリシーを作成します。

      ACCOUNT_B_POLICY_ARN=$(aws iam create-policy --policy-name "${CLUSTER_NAME}-efs-csi-policy" \
         --policy-document file://$SCRATCH_DIR/EfsPolicyInAccountB.json \
         --query 'Policy.Arn' --output text) \
      && echo ${ACCOUNT_B_POLICY_ARN}
      Copy to Clipboard Toggle word wrap
    7. 次のコマンドを実行して、ポリシーをロールにアタッチします。

      aws iam attach-role-policy \
         --role-name "${ACCOUNT_B_ROLE_NAME}" \
         --policy-arn "${ACCOUNT_B_POLICY_ARN}"
      Copy to Clipboard Toggle word wrap
  3. AWS アカウント A の IAM ロールとポリシーを設定します。

    1. 次のコマンドを実行して、アカウント A のプロファイルに切り替えます。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_A}
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、IAM ポリシードキュメントを作成します。

      cat << EOF > $SCRATCH_DIR/AssumeRoleInlinePolicyPolicyInAccountA.json
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "${ACCOUNT_B_ROLE_ARN}"
          }
        ]
      }
      EOF
      Copy to Clipboard Toggle word wrap
    3. AWS アカウント A で、次のコマンドを実行して、AWS 管理ポリシー "AmazonElasticFileSystemClientFullAccess" を OpenShift Container Platform クラスターのマスターロールにアタッチします。

      EFS_CLIENT_FULL_ACCESS_BUILTIN_POLICY_ARN=arn:aws:iam::aws:policy/AmazonElasticFileSystemClientFullAccess
      declare -A ROLE_SEEN
      for NODE in $(oc get nodes --selector="${NODE_SELECTOR}" -o jsonpath='{.items[*].metadata.name}'); do
          INSTANCE_PROFILE=$(aws ec2 describe-instances \
              --filters "Name=private-dns-name,Values=${NODE}" \
              --query 'Reservations[].Instances[].IamInstanceProfile.Arn' \
              --output text | awk -F'/' '{print $NF}' | xargs)
          MASTER_ROLE_ARN=$(aws iam get-instance-profile \
              --instance-profile-name "${INSTANCE_PROFILE}" \
              --query 'InstanceProfile.Roles[0].Arn' \
              --output text | xargs)
          MASTER_ROLE_NAME=$(echo "${MASTER_ROLE_ARN}" | awk -F'/' '{print $NF}' | xargs)
          echo "Checking role: '${MASTER_ROLE_NAME}'"
          if [[ -n "${ROLE_SEEN[$MASTER_ROLE_NAME]:-}" ]]; then
              echo "Already processed role: '${MASTER_ROLE_NAME}', skipping."
              continue
          fi
          ROLE_SEEN["$MASTER_ROLE_NAME"]=1
          echo "Assigning policy ${EFS_CLIENT_FULL_ACCESS_BUILTIN_POLICY_ARN} to role ${MASTER_ROLE_NAME}"
          aws iam attach-role-policy --role-name "${MASTER_ROLE_NAME}" --policy-arn "${EEFS_CLIENT_FULL_ACCESS_BUILTIN_POLICY_ARN}"
      done
      Copy to Clipboard Toggle word wrap
  4. ロールの引き受けを許可するために、IAM エンティティーにポリシーをアタッチします。

    この手順はクラスターの設定によって異なります。次のどちらの場合も、EFS CSI Driver Operator はエンティティーを使用して AWS に対して認証します。このエンティティーには、アカウント B でロールを引き受けるための権限を付与する必要があります。

    クラスターで:

    • STS が有効でない場合: EFS CSI Driver Operator は、AWS 認証に IAM ユーザーエンティティーを使用します。「ロールの引き受けを許可するために IAM ユーザーにポリシーをアタッチする」ステップに進んでください。
    • STS が有効な場合: EFS CSI Driver Operator は、AWS 認証に IAM ロールエンティティーを使用します。「ロールの引き受けを許可するために IAM ロールにポリシーをアタッチする」ステップに進んでください。
  5. ロールの引き受けを許可するために IAM ユーザーにポリシーをアタッチします。

    1. 次のコマンドを実行して、EFS CSI Driver Operator によって使用されている IAM ユーザーを特定します。

      EFS_CSI_DRIVER_OPERATOR_USER=$(oc -n openshift-cloud-credential-operator get credentialsrequest/openshift-aws-efs-csi-driver -o json | jq -r '.status.providerStatus.user')
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、その IAM ユーザーにポリシーをアタッチします。

      aws iam put-user-policy \
          --user-name "${EFS_CSI_DRIVER_OPERATOR_USER}"  \
          --policy-name efs-cross-account-inline-policy \
          --policy-document file://$SCRATCH_DIR/AssumeRoleInlinePolicyPolicyInAccountA.json
      Copy to Clipboard Toggle word wrap
  6. ロールの引き受けを許可するために IAM ロールにポリシーをアタッチします。

    1. 次のコマンドを実行して、EFS CSI Driver Operator によって現在使用されている IAM ロール名を特定します。

      EFS_CSI_DRIVER_OPERATOR_ROLE=$(oc -n ${CSI_DRIVER_NAMESPACE} get secret/aws-efs-cloud-credentials -o jsonpath='{.data.credentials}' | base64 -d | grep role_arn | cut -d'/' -f2) && echo ${EFS_CSI_DRIVER_OPERATOR_ROLE}
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、EFS CSI Driver Operator によって使用されている IAM ロールにポリシーをアタッチします。

       aws iam put-role-policy \
          --role-name "${EFS_CSI_DRIVER_OPERATOR_ROLE}"  \
          --policy-name efs-cross-account-inline-policy \
          --policy-document file://$SCRATCH_DIR/AssumeRoleInlinePolicyPolicyInAccountA.json
      Copy to Clipboard Toggle word wrap
  7. VPC ピアリングを設定します。

    1. 次のコマンドを実行して、アカウント A からアカウント B へのピアリングリクエストを開始します。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_A}
      PEER_REQUEST_ID=$(aws ec2 create-vpc-peering-connection --vpc-id "${AWS_ACCOUNT_A_VPC_ID}" --peer-vpc-id "${AWS_ACCOUNT_B_VPC_ID}" --peer-owner-id "${AWS_ACCOUNT_B_ID}" --query VpcPeeringConnection.VpcPeeringConnectionId --output text)
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、アカウント B でピアリングリクエストを承認します。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_B}
      aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id "${PEER_REQUEST_ID}"
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、アカウント A のルートテーブル ID を取得し、アカウント B の VPC にルートを追加します。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_A}
      for NODE in $(oc get nodes --selector=node-role.kubernetes.io/worker | tail -n +2 | awk '{print $1}')
      do
          SUBNET=$(aws ec2 describe-instances --filters "Name=private-dns-name,Values=$NODE" --query 'Reservations[*].Instances[*].NetworkInterfaces[*].SubnetId' | jq -r '.[0][0][0]')
          echo SUBNET is ${SUBNET}
          ROUTE_TABLE_ID=$(aws ec2 describe-route-tables --filters "Name=association.subnet-id,Values=${SUBNET}" --query 'RouteTables[*].RouteTableId' | jq -r '.[0]')
          echo Route table ID is $ROUTE_TABLE_ID
          aws ec2 create-route --route-table-id ${ROUTE_TABLE_ID} --destination-cidr-block ${AWS_ACCOUNT_B_VPC_CIDR} --vpc-peering-connection-id ${PEER_REQUEST_ID}
      done
      Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、アカウント B のルートテーブル ID を取得し、アカウント A の VPC にルートを追加します。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_B}
      for ROUTE_TABLE_ID in $(aws ec2 describe-route-tables   --filters "Name=vpc-id,Values=${AWS_ACCOUNT_B_VPC_ID}"   --query "RouteTables[].RouteTableId" | jq -r '.[]')
      do
          echo Route table ID is $ROUTE_TABLE_ID
          aws ec2 create-route --route-table-id ${ROUTE_TABLE_ID} --destination-cidr-block ${AWS_ACCOUNT_A_VPC_CIDR} --vpc-peering-connection-id ${PEER_REQUEST_ID}
      done
      Copy to Clipboard Toggle word wrap
  8. アカウント A から EFS への NFS トラフィックを許可するように、アカウント B のセキュリティーグループを設定します。

    1. 次のコマンドを実行して、アカウント B のプロファイルに切り替えます。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_B}
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、EFS アクセス用の VPC セキュリティーグループを設定します。

      SECURITY_GROUP_ID=$(aws ec2 describe-security-groups --filters Name=vpc-id,Values="${AWS_ACCOUNT_B_VPC_ID}" | jq -r '.SecurityGroups[].GroupId')
      aws ec2 authorize-security-group-ingress \
       --group-id "${SECURITY_GROUP_ID}" \
       --protocol tcp \
       --port 2049 \
       --cidr "${AWS_ACCOUNT_A_VPC_CIDR}" | jq .
      Copy to Clipboard Toggle word wrap
  9. アカウント B にリージョン全体の EFS ファイルシステムを作成します。

    1. 次のコマンドを実行して、アカウント B のプロファイルに切り替えます。

      export AWS_DEFAULT_PROFILE=${AWS_ACCOUNT_B}
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、リージョン全体の EFS ファイルシステムを作成します。

      CROSS_ACCOUNT_FS_ID=$(aws efs create-file-system --creation-token efs-token-1 \
      --region ${AWS_REGION} \
      --encrypted | jq -r '.FileSystemId') \
      && echo $CROSS_ACCOUNT_FS_ID
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、EFS のリージョン全体のマウントターゲットを設定します。

      for SUBNET in $(aws ec2 describe-subnets \
        --filters "Name=vpc-id,Values=${AWS_ACCOUNT_B_VPC_ID}" \
        --region ${AWS_REGION} \
        | jq -r '.Subnets.[].SubnetId'); do \
          MOUNT_TARGET=$(aws efs create-mount-target --file-system-id ${CROSS_ACCOUNT_FS_ID} \
          --subnet-id ${SUBNET} \
          --region ${AWS_REGION} \
          | jq -r '.MountTargetId'); \
          echo ${MOUNT_TARGET}; \
      done
      Copy to Clipboard Toggle word wrap

      これにより、VPC の各サブネットにマウントポイントが作成されます。

  10. クロスアカウントアクセス用に EFS Operator を設定します。

    1. 次のコマンドを実行して、後のステップで作成するシークレットとストレージクラスのカスタム名を定義します。

      export SECRET_NAME=my-efs-cross-account
      export STORAGE_CLASS_NAME=efs-sc-cross
      Copy to Clipboard Toggle word wrap
    2. OpenShift Container Platform CLI で次のコマンドを実行して、アカウント B のロール ARN を参照するシークレットを作成します。

      oc create secret generic ${SECRET_NAME} -n ${CSI_DRIVER_NAMESPACE} --from-literal=awsRoleArn="${ACCOUNT_B_ROLE_ARN}"
      Copy to Clipboard Toggle word wrap
    3. OpenShift Container Platform CLI で次のコマンドを実行して、新しく作成したシークレットへのアクセス権を CSI ドライバーコントローラーに付与します。

      oc -n ${CSI_DRIVER_NAMESPACE} create role access-secrets --verb=get,list,watch --resource=secrets
      oc -n ${CSI_DRIVER_NAMESPACE} create rolebinding --role=access-secrets default-to-secrets --serviceaccount=${CSI_DRIVER_NAMESPACE}:aws-efs-csi-driver-controller-sa
      Copy to Clipboard Toggle word wrap
    4. OpenShift Container Platform CLI で次のコマンドを実行して、アカウント B の EFS ID と以前に作成したシークレットを参照する新しいストレージクラスを作成します。

      cat << EOF | oc apply -f -
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: ${STORAGE_CLASS_NAME}
      provisioner: efs.csi.aws.com
      parameters:
        provisioningMode: efs-ap
        fileSystemId: ${CROSS_ACCOUNT_FS_ID}
        directoryPerms: "700"
        gidRangeStart: "1000"
        gidRangeEnd: "2000"
        basePath: "/dynamic_provisioning"
        csi.storage.k8s.io/provisioner-secret-name: ${SECRET_NAME}
        csi.storage.k8s.io/provisioner-secret-namespace: ${CSI_DRIVER_NAMESPACE}
      EOF
      Copy to Clipboard Toggle word wrap

6.10.6. One Zone ファイルシステム

6.10.6.1. One Zone ファイルシステムの概要

OpenShift Container Platform は、単一のアベイラビリティーゾーン (AZ) 内にデータを冗長的に格納する EFS ストレージオプションである AWS Elastic File System (EFS) One Zone ファイルシステムをサポートしています。これは、リージョン内の複数の AZ をまたいでデータを冗長的に保存するデフォルトの EFS ストレージオプションとは対照的です。

OpenShift Container Platform 4.19 からアップグレードされたクラスターは、リージョン EFS ボリュームと互換性があります。

注記

One Zone ボリュームの動的プロビジョニングは、シングルゾーンクラスターでのみサポートされます。クラスター内のすべてのノードは、動的プロビジョニングに使用される EFS ボリュームと同じ AZ に存在する必要があります。

永続ボリューム (PV) に、ボリュームが存在するゾーンを示す正しい spec.nodeAffinity があることを前提として、リージョンクラスターで手動でプロビジョニングされた One Zone ボリュームがサポートされます。

Cloud Credential Operator (CCO) Mint モードまたは Passthrough の場合、追加の設定は必要ありません。ただし、Security Token Service (STS) の場合は、STS を使用した One Zone ファイルシステムのセットアップ セクションの手順を使用します。

6.10.6.2. STS を使用した One Zone ファイルシステムのセットアップ

次の手順では、Security Token Service (STS) を使用して AWS One Zone ファイルシステムを設定する方法について説明します。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • AWS アカウントの認証情報。

手順

STS を使用して One Zone ファイルシステムを設定するには、以下を実行します。

  1. Security Token Service のロール Amazon Resource Name の取得 セクションの手順に従って、credrequests ディレクトリーに 2 つCredentialsRequests を作成します。

    • コントローラーCredentialsRequest の場合は、変更せずに手順に従います。
    • ドライバーノードCredentialsRequest の場合は、次のサンプルファイルを使用します。

      ドライバーノードの CredentialsRequest YAML ファイルの例

      apiVersion: cloudcredential.openshift.io/v1
      kind: CredentialsRequest
      metadata:
        annotations:
          credentials.openshift.io/role-arns-vars: NODE_ROLEARN 
      1
      
        name: openshift-aws-efs-csi-driver-node
        namespace: openshift-cloud-credential-operator
      spec:
        providerSpec:
          apiVersion: cloudcredential.openshift.io/v1
          kind: AWSProviderSpec
          statementEntries:
          - action:
            - elasticfilesystem:DescribeMountTargets
            - ec2:DescribeAvailabilityZones
            effect: Allow
            resource: '*'
        secretRef:
          name: node-aws-efs-cloud-credentials
          namespace: openshift-cluster-csi-drivers
        serviceAccountNames:
        - aws-efs-csi-driver-node-sa
      Copy to Clipboard Toggle word wrap

      1
      metadata.annotations.credentials.openshift.io/role-arns-varsNODE_ROLEARN に設定します。

      ccoctl の出力例

      2025/08/26 14:05:24 Role arn:aws:iam::269733383066:role/my-arn-1-blll6-openshift-cluster-csi-drivers-aws-efs-cloud-cre created 
      1
      
      2025/08/26 14:05:24 Saved credentials configuration to: /home/my-arn/project/go/src/github.com/openshift/myinst/aws-sts-compact-1/manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml
      2025/08/26 14:05:24 Updated Role policy for Role my-arn-1-blll6-openshift-cluster-csi-drivers-aws-efs-cloud-cre
      2025/08/26 14:05:24 Role arn:aws:iam::269733383066:role/my-arn-1-blll6-openshift-cluster-csi-drivers-node-aws-efs-clou created 
      2
      
      2025/08/26 14:05:24 Saved credentials configuration to: manifests/openshift-cluster-csi-drivers-node-aws-efs-cloud-credentials-credentials.yaml
      2025/08/26 14:05:24 Updated Role policy for Role my-arn-1-blll6-openshift-cluster-csi-drivers-node-aws-efs-clou
      Copy to Clipboard Toggle word wrap

      1
      コントローラーの Amazon Resource Name (ARN)
      2
      ドライバーノードの ARN
  2. この手順の前半で作成したコントローラー ARN を使用して、AWS EFS CSI ドライバーをインストールします。
  3. 次のようなコマンドを実行して、Operator のサブスクリプションを編集し、ドライバーノードの ARN と NODE_ROLEARN を追加します。

    $ oc -n openshift-cluster-csi-drivers edit subscription aws-efs-csi-driver-operator
    ...
      config:
        env:
        - name: ROLEARN
          value: arn:aws:iam::269733383066:role/my-arn-1-blll6-openshift-cluster-csi-drivers-aws-efs-cloud-cre 
    1
    
        - name: NODE_ROLEARN
          value: arn:aws:iam::269733383066:role/my-arn-1-blll6-openshift-cluster-csi-drivers-node-aws-efs-clou 
    2
    
    ...
    Copy to Clipboard Toggle word wrap
    1
    コントローラーの ARN。すでに存在します。
    2
    ドライバーノードの ARN

6.10.7. Amazon Elastic File Storage の動的プロビジョニング

AWS EFS CSI ドライバー は、他の CSI ドライバーとは異なる形式の動的プロビジョニングをサポートします。既存の EFS ボリュームのサブディレクトリーとして新しい PV をプロビジョニングします。PV はお互いに独立しています。しかし、これらはすべて同じ EFS ボリュームを共有しています。ボリュームが削除されると、そのボリュームからプロビジョニングされたすべての PV も削除されます。EFS CSI ドライバーは、そのようなサブディレクトリーごとに AWS アクセスポイントを作成します。AWS AccessPoint の制限により、単一の StorageClass/EFS ボリュームから動的にプロビジョニングできるのは 1000 PV のみです。

重要

なお、PVC.spec.resources は EFS では強制されません。

以下の例では、5 GiB の容量を要求しています。しかし、作成された PV は無限であり、どんな量のデータ (ペタバイトのような) も保存することができます。ボリュームに大量のデータを保存してしまうと、壊れたアプリケーション、あるいは不正なアプリケーションにより、多額の費用が発生します。

AWS の EFS ボリュームサイズのモニタリングを使用することを強く推奨します。

前提条件

  • Amazon Elastic File Storage (Amazon EFS) ボリュームが作成されている。
  • AWS EFS ストレージクラスを作成している。

手順

動的プロビジョニングを有効にするには、以下の手順を実施します。

  • 以前に作成した StorageClass を参照して、通常どおり PVC (または StatefulSet や Template) を作成します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test
    spec:
      storageClassName: efs-sc
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
    Copy to Clipboard Toggle word wrap

動的プロビジョニングのセットアップに問題がある場合は、AWS EFS のトラブルシューティング を参照してください。

6.10.8. Amazon Elastic File Storage を使用した静的 PV の作成

動的プロビジョニングを行わずに、Amazon Elastic File Storage (Amazon EFS) ボリュームを単一の PV として使用できます。ボリューム全体が Pod にマウントされます。

前提条件

  • Amazon EFS ボリュームが作成されている。

手順

  • 以下の YAML ファイルで PV を作成します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs-pv
    spec:
      capacity: 
    1
    
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteMany
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: efs.csi.aws.com
        volumeHandle: fs-ae66151a 
    2
    
        volumeAttributes:
          encryptInTransit: "false" 
    3
    Copy to Clipboard Toggle word wrap
    1
    spec.capacity には意味がなく、CSI ドライバーでは無視されます。PVC へのバインディング時にのみ使用されます。アプリケーションは、ボリュームに任意の量のデータを保存することができます。
    2
    volumeHandle は、AWS で作成した EFS ボリュームと同じ ID である必要があります。独自のアクセスポイントを提供する場合、volumeHandle<EFS volume ID>::<access point ID> とします。たとえば、fs-6e633ada::fsap-081a1d293f0004630 です。
    3
    必要に応じて、転送中の暗号化を無効にすることができます。デフォルトでは、暗号化が有効になっています。

静的 PV の設定に問題がある場合は、AWS EFS のトラブルシューティング を参照してください。

6.10.9. Amazon Elastic File Storage のセキュリティー

次の情報は、Amazon Elastic File Storage (Amazon EFS) のセキュリティーに重要です。

前述の動的プロビジョニングなどでアクセスポイントを使用する場合、Amazon はファイルの GID をアクセスポイントの GID に自動的に置き換えます。また、EFS では、ファイルシステムの権限を評価する際に、アクセスポイントのユーザー ID、グループ ID、セカンダリーグループ ID を考慮します。EFS は、NFS クライアントの ID を無視します。アクセスポイントの詳細は、https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html を参照してください。

その結果、EFS ボリュームは FSGroup を静かに無視します。OpenShift Container Platform は、ボリューム上のファイルの GID を FSGroup で置き換えることができません。マウントされた EFS アクセスポイントにアクセスできる Pod は、そこにあるすべてのファイルにアクセスできます。

これとは関係ありませんが、転送中の暗号化はデフォルトで有効になっています。詳細は、https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html を参照してください。

6.10.10. AWS EFS ストレージ CSI 使用状況メトリクス

6.10.10.1. 使用状況メトリクスの概要

Amazon Web Services (AWS) Elastic File Service (EFS) Container Storage Interface (CSI) 使用状況メトリクスを使用すると、動的または静的にプロビジョニングされた EFS ボリュームによって使用されているスペースの量を監視できます。

重要

メトリクスを有効にするとパフォーマンスが低下する可能性があるため、この機能はデフォルトで無効になっています。

AWS EFS 使用状況メトリクス機能は、ボリューム内のファイルを再帰的にウォークスルーし、AWS EFS CSI ドライバーのボリュームメトリクスを収集します。この作業によりパフォーマンスが低下する可能性があるため、管理者はこの機能を明示的に有効にする必要があります。

6.10.10.2. Web コンソールを使用した使用状況メトリクスの有効化

Web コンソールを使用して Amazon Web Services (AWS) Elastic File Service (EFS) Container Storage Interface (CSI) の使用状況メトリクスを有効にするには、次の手順を実行します。

  1. Administration > CustomResourceDefinitions をクリックします。
  2. CustomResourceDefinitions ページの Name ドロップダウンボックスの横に、clustercsidriver と入力します。
  3. CRD ClusterCSIDriver をクリックします。
  4. YAML タブをクリックします。
  5. spec.aws.efsVolumeMetrics.state の下で、値を RecursiveWalk に設定します。

    RecursiveWalk は、AWS EFS CSI ドライバーのボリュームメトリクス収集が、ボリューム内のファイルを再帰的にウォークスルーすることによって実行されることを示します。

    ClusterCSIDriver efs.csi.aws.com YAML ファイルの例

    spec:
        driverConfig:
            driverType: AWS
            aws:
                efsVolumeMetrics:
                  state: RecursiveWalk
                  recursiveWalk:
                    refreshPeriodMinutes: 100
                    fsRateLimit: 10
    Copy to Clipboard Toggle word wrap

  6. オプション: 再帰ウォークの動作を定義するために、次のフィールドを設定することもできます。

    • refreshPeriodMinutes: ボリュームメトリクスの更新頻度を分単位で指定します。このフィールドを空白のままにすると、適切なデフォルトが選択されますが、これは時間の経過とともに変更される可能性があります。現在のデフォルトは 240 分です。有効な範囲は 1 - 43,200 分です。
    • fsRateLimit: ファイルシステムごとに、goroutine でボリュームメトリクスを処理するためのレート制限を定義します。このフィールドを空白のままにすると、適切なデフォルトが選択されますが、これは時間の経過とともに変更される可能性があります。現在のデフォルトは 5 つの goroutine です。有効な範囲は 1 - 100 の goroutine です。
  7. Save をクリックします。
注記

AWS EFS CSI 使用状況メトリクスを 無効化 するには、前述の手順を使用しますが、spec.aws.efsVolumeMetrics.state の値を RecursiveWalk から Disabled に変更します。

6.10.10.3. CLI を使用した使用状況メトリクスの有効化

CLI を使用して Amazon Web Services (AWS) Elastic File Service (EFS) Container Storage Interface (CSI) 使用状況メトリクスを有効にするには、次の手順を実行します。

  1. 次のコマンドを実行して ClusterCSIDriver を編集します。

    $ oc edit clustercsidriver efs.csi.aws.com
    Copy to Clipboard Toggle word wrap
  2. spec.aws.efsVolumeMetrics.state の下で、値を RecursiveWalk に設定します。

    RecursiveWalk は、AWS EFS CSI ドライバーのボリュームメトリクス収集が、ボリューム内のファイルを再帰的にウォークスルーすることによって実行されることを示します。

    ClusterCSIDriver efs.csi.aws.com YAML ファイルの例

    spec:
        driverConfig:
            driverType: AWS
            aws:
                efsVolumeMetrics:
                  state: RecursiveWalk
                  recursiveWalk:
                    refreshPeriodMinutes: 100
                    fsRateLimit: 10
    Copy to Clipboard Toggle word wrap

  3. オプション: 再帰ウォークの動作を定義するために、次のフィールドを設定することもできます。

    • refreshPeriodMinutes: ボリュームメトリクスの更新頻度を分単位で指定します。このフィールドを空白のままにすると、適切なデフォルトが選択されますが、これは時間の経過とともに変更される可能性があります。現在のデフォルトは 240 分です。有効な範囲は 1 - 43,200 分です。
    • fsRateLimit: ファイルシステムごとに、goroutine でボリュームメトリクスを処理するためのレート制限を定義します。このフィールドを空白のままにすると、適切なデフォルトが選択されますが、これは時間の経過とともに変更される可能性があります。現在のデフォルトは 5 つの goroutine です。有効な範囲は 1 - 100 の goroutine です。
  4. efs.csi.aws.com オブジェクトへの変更を保存します。
注記

AWS EFS CSI 使用状況メトリクスを 無効化 するには、前述の手順を使用しますが、spec.aws.efsVolumeMetrics.state の値を RecursiveWalk から Disabled に変更します。

6.10.11. Amazon Elastic File Storage のトラブルシューティング

次の情報は、Amazon Elastic File Storage (Amazon EFS) に関する問題のトラブルシューティング方法に関するガイダンスです。

  • AWS EFS Operator と CSI ドライバーは、namespace openshift-cluster-csi-drivers で実行されます。
  • AWS EFS Operator と CSI ドライバーのログ収集を開始するには、以下のコマンドを実行します。

    $ oc adm must-gather
    [must-gather      ] OUT Using must-gather plugin-in image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:125f183d13601537ff15b3239df95d47f0a604da2847b561151fedd699f5e3a5
    [must-gather      ] OUT namespace/openshift-must-gather-xm4wq created
    [must-gather      ] OUT clusterrolebinding.rbac.authorization.k8s.io/must-gather-2bd8x created
    [must-gather      ] OUT pod for plug-in image quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:125f183d13601537ff15b3239df95d47f0a604da2847b561151fedd699f5e3a5 created
    Copy to Clipboard Toggle word wrap
  • AWS EFS Operator のエラーを表示するには、ClusterCSIDriver のステータスを表示します。

    $ oc get clustercsidriver efs.csi.aws.com -o yaml
    Copy to Clipboard Toggle word wrap
  • Pod にボリュームをマウントできない場合 (以下のコマンドの出力に示す):

    $ oc describe pod
    ...
      Type     Reason       Age    From               Message
      ----     ------       ----   ----               -------
      Normal   Scheduled    2m13s  default-scheduler  Successfully assigned default/efs-app to ip-10-0-135-94.ec2.internal
      Warning  FailedMount  13s    kubelet            MountVolume.SetUp failed for volume "pvc-d7c097e6-67ec-4fae-b968-7e7056796449" : rpc error: code = DeadlineExceeded desc = context deadline exceeded 
    1
    
      Warning  FailedMount  10s    kubelet            Unable to attach or mount volumes: unmounted volumes=[persistent-storage], unattached volumes=[persistent-storage kube-api-access-9j477]: timed out waiting for the condition
    Copy to Clipboard Toggle word wrap
    1
    ボリュームがマウントされていないことを示す警告メッセージ。

    このエラーは、OpenShift Container Platform ノードと Amazon EFS 間のパケットを AWS がドロップすることで頻繁に発生します。

    以下が正しいことを確認します。

    • AWS のファイアウォールとセキュリティーグループ
    • ネットワーク: ポート番号と IP アドレス

6.10.12. AWS EFS CSI Driver Operator のアンインストール

AWS EFS CSI Driver Operator (Red Hat Operator) をアンインストールすると、すべての EFS PV にアクセスできなくなります。

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

Web コンソールから AWS EFS CSI Driver Operator をアンインストールするには、以下を実行します。

  1. Web コンソールにログインします。
  2. AWS EFS PV を使用するすべてのアプリケーションを停止します。
  3. すべての AWS EFS PV を削除します。

    1. Storage PersistentVolumeClaims をクリックします。
    2. AWS EFS CSI Driver Operator が使用している各 PVC を選択し、PVC の右端にあるドロップダウンメニューをクリックして、Delete PersistentVolumeClaims をクリックします。
  4. AWS EFS CSI ドライバー をアンインストールします。

    注記

    Operator をアンインストールする前に、まず CSI ドライバーを削除する必要があります。

    1. Administration CustomResourceDefinitions ClusterCSIDriver をクリックします。
    2. Instances タブの efs.csi.aws.com の左端にあるドロップダウンメニューをクリックし、Delete ClusterCSIDriver をクリックします。
    3. プロンプトが表示されたら、Delete をクリックします。
  5. AWS EFS CSI Operator をアンインストールします。

    1. Ecosystem Installed Operators をクリックします。
    2. Installed Operators ページで、スクロールするか、Search by name ボックスに AWS EFS CSI と入力して Operator を見つけてクリックします。
    3. Installed Operators > Operator details ページの右上にある Actions Uninstall Operator をクリックします。
    4. Uninstall Operator ウィンドウでプロンプトが表示されたら、Uninstall ボタンをクリックして namespace から Operator を削除します。Operator によってクラスターにデプロイされたアプリケーションは手動でクリーンアップする必要があります。

      アンインストールすると、AWS EFS CSI Driver Operator が Web コンソールの Installed Operators セクションにリスト表示されなくなります。

注記

クラスターを破棄 (openshift-install destroy cluster) する前に、AWS の EFS ボリュームを削除する必要があります。クラスターの VPC を使用する EFS ボリュームがある場合、OpenShift Container Platform クラスターを破棄することはできません。Amazon はこのような VPC の削除を許可していません。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat