

 **Bantu tingkatkan halaman ini** 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih **Edit halaman ini pada GitHub** tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA
<a name="cni-iam-role"></a>

Plugin [Amazon VPC CNI untuk Kubernetes adalah plugin](https://github.com/aws/amazon-vpc-cni-k8s) jaringan untuk jaringan Pod di cluster Amazon EKS. Plugin ini bertanggung jawab untuk mengalokasikan alamat IP VPC ke pod Kubernetes dan mengonfigurasi jaringan yang diperlukan untuk Pod pada setiap node.

**catatan**  
Plugin Amazon VPC CNI juga mendukung Amazon EKS Pod Identities. Untuk informasi selengkapnya, lihat [Menetapkan peran IAM ke akun layanan Kubernetes](pod-id-association.md).

Plugin:
+ Memerlukan AWS izin Identity and Access Management (IAM). Jika klaster Anda menggunakan `IPv4` keluarga, izin akan ditentukan dalam kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html) AWS terkelola. Jika klaster Anda menggunakan `IPv6` keluarga, maka izin harus ditambahkan ke kebijakan IAM yang Anda buat; untuk instruksi, lihat. [Buat kebijakan IAM untuk cluster yang menggunakan keluarga `IPv6`](#cni-iam-role-create-ipv6-policy) Anda dapat melampirkan kebijakan ke peran IAM node Amazon EKS, atau ke peran IAM terpisah. Untuk petunjuk untuk melampirkan kebijakan ke peran IAM node Amazon EKS, lihat[IAM role simpul Amazon EKS](create-node-role.md). Kami menyarankan Anda menetapkannya ke peran terpisah, seperti yang dijelaskan dalam topik ini.
+ Membuat dan dikonfigurasi untuk menggunakan akun layanan Kubernetes yang diberi nama `aws-node` saat di-deploy. Akun layanan terikat ke `clusterrole` Kubernetes bernama `aws-node`, yang ditugaskan izin Kubernetes yang diperlukan.

**catatan**  
Pod untuk plugin Amazon VPC CNI untuk Kubernetes memiliki akses ke izin yang ditetapkan ke [peran IAM node Amazon EKS](create-node-role.md), kecuali jika Anda memblokir akses ke IMDS. Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
+ Membutuhkan cluster Amazon EKS yang ada. Untuk menyebarkan satu, lihat[Memulai dengan Amazon EKS](getting-started.md).
+ Memerlukan penyedia OpenID Connect (OIDC) AWS Identity and Access Management (IAM) yang sudah ada untuk klaster Anda. Untuk menentukan apakah Anda sudah memiliki satu, atau harus membuat satu, lihat [Buat penyedia IAM OIDC untuk klaster Anda](enable-iam-roles-for-service-accounts.md).

## Langkah 1: Buat plugin Amazon VPC CNI untuk peran IAM Kubernetes
<a name="cni-iam-role-create-role"></a>

1. Tentukan keluarga IP cluster Anda.

   ```
   aws eks describe-cluster --name my-cluster | grep ipFamily
   ```

   Contoh output adalah sebagai berikut.

   ```
   "ipFamily": "ipv4"
   ```

   Output dapat kembali `ipv6` sebagai gantinya.

1. Buat peran IAM. Anda dapat menggunakan `eksctl` atau `kubectl` dan AWS CLI untuk membuat peran IAM Anda.  
eksctl  
   + Buat peran IAM dan lampirkan kebijakan IAM ke peran dengan perintah yang cocok dengan keluarga IP cluster Anda. Perintah membuat dan menerapkan AWS CloudFormation tumpukan yang membuat peran IAM, melampirkan kebijakan yang Anda tentukan padanya, dan membubuhi keterangan akun layanan `aws-node` Kubernetes yang ada dengan ARN dari peran IAM yang dibuat.
     +  `IPv4` 

       Ganti *my-cluster* dengan nilai milik Anda sendiri.

       ```
       eksctl create iamserviceaccount \
           --name aws-node \
           --namespace kube-system \
           --cluster my-cluster \
           --role-name AmazonEKSVPCCNIRole \
           --attach-policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \
           --override-existing-serviceaccounts \
           --approve
       ```
     +  `IPv6` 

       Ganti *my-cluster* dengan nilai milik Anda sendiri. Ganti *111122223333* dengan ID akun Anda dan ganti *AmazonEKS\$1CNI\$1IPv6\$1Policy* dengan nama `IPv6` polis Anda. Jika Anda tidak memiliki `IPv6` kebijakan, lihat [Buat kebijakan IAM untuk cluster yang menggunakan keluarga `IPv6`](#cni-iam-role-create-ipv6-policy) untuk membuatnya. Untuk digunakan `IPv6` dengan cluster Anda, itu harus memenuhi beberapa persyaratan. Untuk informasi selengkapnya, lihat [Pelajari tentang IPv6 alamat ke klaster, Pod, dan layanan](cni-ipv6.md).

       ```
       eksctl create iamserviceaccount \
           --name aws-node \
           --namespace kube-system \
           --cluster my-cluster \
           --role-name AmazonEKSVPCCNIRole \
           --attach-policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \
           --override-existing-serviceaccounts \
           --approve
       ```  
kubectl dan CLI AWS   

   1. Lihat URL penyedia OIDC klaster Anda.

      ```
      aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
      ```

      Contoh output adalah sebagai berikut.

      ```
      https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
      ```

      Jika tidak ada output yang dikembalikan, maka Anda harus [membuat penyedia IAM OIDC untuk](enable-iam-roles-for-service-accounts.md) cluster Anda.

   1. Salin isi berikut ke file bernama *vpc-cni-trust-policy.json*. Ganti *111122223333* dengan ID akun Anda dan *EXAMPLED539D4633E53DE1B71EXAMPLE* dengan output yang dikembalikan pada langkah sebelumnya. Ganti *region-code* dengan AWS Wilayah tempat klaster Anda berada.

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
                  },
                  "Action": "sts:AssumeRoleWithWebIdentity",
                  "Condition": {
                      "StringEquals": {
                          "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
                          "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-node"
                      }
                  }
              }
          ]
      }
      ```

   1. Buat peran. Anda dapat mengganti *AmazonEKSVPCCNIRole* dengan nama apa pun yang Anda pilih.

      ```
      aws iam create-role \
        --role-name AmazonEKSVPCCNIRole \
        --assume-role-policy-document file://"vpc-cni-trust-policy.json"
      ```

   1. Lampirkan kebijakan IAM yang diperlukan ke peran tersebut. Jalankan perintah yang cocok dengan keluarga IP cluster Anda.
      +  `IPv4` 

        ```
        aws iam attach-role-policy \
          --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \
          --role-name AmazonEKSVPCCNIRole
        ```
      +  `IPv6` 

        Ganti *111122223333* dengan ID akun Anda dan *AmazonEKS\$1CNI\$1IPv6\$1Policy* dengan nama `IPv6` polis Anda. Jika Anda tidak memiliki `IPv6` kebijakan, lihat [Buat kebijakan IAM untuk cluster yang menggunakan keluarga `IPv6`](#cni-iam-role-create-ipv6-policy) untuk membuatnya. Untuk digunakan `IPv6` dengan cluster Anda, itu harus memenuhi beberapa persyaratan. Untuk informasi selengkapnya, lihat [Pelajari tentang IPv6 alamat ke klaster, Pod, dan layanan](cni-ipv6.md).

        ```
        aws iam attach-role-policy \
          --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \
          --role-name AmazonEKSVPCCNIRole
        ```

   1. Jalankan perintah berikut untuk membuat anotasi akun `aws-node` layanan dengan ARN dari peran IAM yang Anda buat sebelumnya. Ganti nilai contoh dengan nilai Anda sendiri.

      ```
      kubectl annotate serviceaccount \
          -n kube-system aws-node \
          eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
      ```

1. (Opsional) Konfigurasikan tipe endpoint AWS Security Token Service yang digunakan oleh akun layanan Kubernetes Anda. Untuk informasi selengkapnya, lihat [Konfigurasikan titik akhir Layanan Token AWS Keamanan untuk akun layanan](configure-sts-endpoint.md).

## Langkah 2: Menerapkan ulang plugin Amazon VPC CNI untuk Kubernetes Pods
<a name="cni-iam-role-redeploy-pods"></a>

1. Hapus dan buat ulang Pod yang ada yang terkait dengan akun layanan untuk menerapkan variabel lingkungan kredensi. Anotasi tidak diterapkan pada Pod yang saat ini berjalan tanpa anotasi. Perintah berikut menghapus `aws-node` DaemonSet Pod yang ada dan menerapkannya dengan anotasi akun layanan.

   ```
   kubectl delete Pods -n kube-system -l k8s-app=aws-node
   ```

1. Konfirmasikan bahwa semua Pod dimulai ulang.

   ```
   kubectl get pods -n kube-system -l k8s-app=aws-node
   ```

1. Jelaskan salah satu Pod dan verifikasi bahwa variabel `AWS_WEB_IDENTITY_TOKEN_FILE` dan `AWS_ROLE_ARN` lingkungan ada. Ganti *cpjw7* dengan nama salah satu Pod Anda yang dikembalikan pada output dari langkah sebelumnya.

   ```
   kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'
   ```

   Contoh output adalah sebagai berikut.

   ```
   AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
         AWS_WEB_IDENTITY_TOKEN_FILE:  /var/run/secrets/eks.amazonaws.com/serviceaccount/token
         AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
         AWS_WEB_IDENTITY_TOKEN_FILE:            /var/run/secrets/eks.amazonaws.com/serviceaccount/token
   ```

   Dua set hasil duplikat dikembalikan karena Pod berisi dua kontainer. Kedua kontainer memiliki nilai yang sama.

   Jika Pod Anda menggunakan endpoint AWS Regional, maka baris berikut juga dikembalikan pada output sebelumnya.

   ```
   AWS_STS_REGIONAL_ENDPOINTS=regional
   ```

## Langkah 3: Hapus kebijakan CNI dari peran IAM node
<a name="remove-cni-policy-node-iam-role"></a>

Jika [peran IAM node Amazon EKS](create-node-role.md) Anda saat ini memiliki [IPv6 kebijakan `AmazonEKS_CNI_Policy`](#cni-iam-role-create-ipv6-policy) IAM (`IPv4`) yang dilampirkan padanya, dan Anda telah membuat peran IAM terpisah, melampirkan kebijakan ke dalamnya, dan menetapkannya ke akun layanan `aws-node` Kubernetes, maka sebaiknya Anda menghapus kebijakan tersebut dari peran node Anda dengan perintah CLI yang cocok dengan keluarga IP AWS klaster Anda. Ganti *AmazonEKSNodeRole* dengan nama peran node Anda.
+  `IPv4` 

  ```
  aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
  ```
+  `IPv6` 

  Ganti *111122223333* dengan ID akun Anda dan *AmazonEKS\$1CNI\$1IPv6\$1Policy* dengan nama `IPv6` polis Anda.

  ```
  aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy
  ```

## Buat kebijakan IAM untuk cluster yang menggunakan keluarga `IPv6`
<a name="cni-iam-role-create-ipv6-policy"></a>

Jika Anda membuat klaster yang menggunakan `IPv6` keluarga dan klaster memiliki versi `1.10.1` atau yang lebih baru dari plugin Amazon VPC CNI untuk add-on Kubernetes yang dikonfigurasi, maka Anda perlu membuat kebijakan IAM yang dapat Anda tetapkan ke peran IAM. Jika Anda memiliki cluster yang sudah ada yang tidak Anda konfigurasikan dengan `IPv6` keluarga saat Anda membuatnya, maka untuk menggunakannya`IPv6`, Anda harus membuat cluster baru. Untuk informasi selengkapnya tentang penggunaan `IPv6` dengan cluster Anda, lihat[Pelajari tentang IPv6 alamat ke klaster, Pod, dan layanan](cni-ipv6.md).

1. Salin teks berikut dan simpan ke file bernama `vpc-cni-ipv6-policy.json`.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:AssignIpv6Addresses",
                   "ec2:DescribeInstances",
                   "ec2:DescribeTags",
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:DescribeInstanceTypes"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateTags"
               ],
               "Resource": [
                   "arn:aws:ec2:*:*:network-interface/*"
               ]
           }
       ]
   }
   ```

1. Buat kebijakan IAM.

   ```
   aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
   ```