

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

# Langkah 1: Konfigurasikan cluster Amazon EKS dan setel izin IAM
<a name="EKS-tutorial-step1"></a>

**Konfigurasikan kluster Amazon EKS dan buat resource IAM yang diperlukan agar akun layanan Amazon EKS dapat terhubung ke tabel Amazon Keyspaces**

1. Buat penyedia Open ID Connect (OIDC) untuk klaster Amazon EKS. Ini diperlukan untuk menggunakan peran IAM untuk akun layanan. *Untuk informasi selengkapnya tentang penyedia OIDC dan cara membuatnya, lihat [Membuat penyedia IAM OIDC untuk klaster Anda di](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) Panduan Pengguna Amazon EKS.*

   1. Buat penyedia identitas IAM OIDC untuk klaster Anda dengan perintah berikut. Contoh ini mengasumsikan bahwa nama cluster Anda adalah`my-eks-cluster`. Jika Anda memiliki cluster dengan nama yang berbeda, ingatlah untuk memperbarui nama di semua perintah future.

      ```
      eksctl utils associate-iam-oidc-provider --cluster my-eks-cluster --approve 
      ```

   1. Konfirmasikan bahwa penyedia identitas OIDC telah terdaftar dengan IAM dengan perintah berikut.

      ```
      aws iam list-open-id-connect-providers --region us-east-1
      ```

      Outputnya akan terlihat mirip dengan ini. Perhatikan Nama Sumber Daya Amazon (ARN) OIDC, Anda memerlukannya di langkah berikutnya saat membuat kebijakan kepercayaan untuk akun layanan.

      ```
      {
          "OpenIDConnectProviderList": [
              ..
              {
                  "Arn": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
              }
          ]
      }
      ```

1. Buat akun layanan untuk kluster Amazon EKS. Akun layanan menyediakan identitas untuk proses yang berjalan di *Pod*. Pod adalah objek Kubernetes terkecil dan paling sederhana yang dapat Anda gunakan untuk menyebarkan aplikasi kontainer. Selanjutnya, buat peran IAM yang dapat diasumsikan oleh akun layanan untuk mendapatkan izin ke sumber daya. Anda dapat mengakses AWS layanan apa pun dari Pod yang telah dikonfigurasi untuk menggunakan akun layanan yang dapat mengambil peran IAM dengan izin akses ke layanan tersebut.

   1. Buat namespace baru untuk akun layanan. Namespace membantu mengisolasi sumber daya cluster yang dibuat untuk tutorial ini. Anda dapat membuat namespace baru menggunakan perintah berikut.

      ```
      kubectl create namespace my-eks-namespace
      ```

   1. Untuk menggunakan namespace khusus, Anda harus mengaitkannya dengan profil Fargate. Kode berikut adalah contoh dari ini.

      ```
      eksctl create fargateprofile \
          --cluster my-eks-cluster \
          --name my-fargate-profile \
          --namespace my-eks-namespace \
          --labels *=*
      ```

   1. Buat akun layanan dengan nama `my-eks-serviceaccount` di namespace `my-eks-namespace` untuk cluster Amazon EKS Anda dengan menggunakan perintah berikut.

      ```
      cat >my-serviceaccount.yaml <<EOF
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: my-eks-serviceaccount
        namespace: my-eks-namespace
      EOF
      kubectl apply -f my-serviceaccount.yaml
      ```

   1. Jalankan perintah berikut untuk membuat file kebijakan kepercayaan yang menginstruksikan peran IAM untuk mempercayai akun layanan Anda. Hubungan kepercayaan ini diperlukan sebelum kepala sekolah dapat mengambil peran. Anda perlu melakukan pengeditan berikut pada file:
      + Untuk`Principal`, masukkan ARN yang IAM kembali ke perintah. `list-open-id-connect-providers` ARN berisi nomor akun dan Wilayah Anda.
      + Dalam `condition` pernyataan itu, ganti Wilayah AWS dan id OIDC.
      + Konfirmasikan bahwa nama akun layanan dan namespace sudah benar.

      Anda perlu melampirkan file kebijakan kepercayaan di langkah berikutnya saat Anda membuat peran IAM.

      ```
      cat >trust-relationship.json <<EOF
      {
          "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:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount",
                          "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
                      }
                  }
              }
          ]
      }
      EOF
      ```

      Opsional: Anda juga dapat menambahkan beberapa entri dalam `StringLike` kondisi `StringEquals` atau untuk memungkinkan beberapa akun layanan atau ruang nama mengambil peran. Untuk mengizinkan akun layanan Anda mengambil peran IAM di AWS akun lain, lihat Izin [IAM lintas akun di](https://docs.aws.amazon.com/eks/latest/userguide/cross-account-access.html) Panduan Pengguna *Amazon* EKS.

1. Buat peran IAM dengan nama `my-iam-role` untuk akun layanan Amazon EKS untuk diasumsikan. Lampirkan file kebijakan kepercayaan yang dibuat pada langkah terakhir ke peran. Kebijakan kepercayaan menentukan akun layanan dan penyedia OIDC yang dapat dipercaya oleh peran IAM. 

   ```
   aws iam create-role --role-name my-iam-role --assume-role-policy-document file://trust-relationship.json --description "EKS service account role"
   ```

1. Tetapkan izin peran IAM ke Amazon Keyspaces dengan melampirkan kebijakan akses. 

   1. Lampirkan kebijakan akses untuk menentukan tindakan yang dapat dilakukan peran IAM pada resource Amazon Keyspaces tertentu. Untuk tutorial ini kami menggunakan kebijakan AWS terkelola`AmazonKeyspacesFullAccess`, karena aplikasi kami akan menulis data ke tabel Amazon Keyspaces Anda. Namun, sebagai praktik terbaik, disarankan untuk membuat kebijakan akses khusus yang menerapkan prinsip hak istimewa paling sedikit. Untuk informasi selengkapnya, lihat [Cara Amazon Keyspaces bekerja dengan IAM](security_iam_service-with-iam.md).

      ```
      aws iam attach-role-policy --role-name my-iam-role --policy-arn=arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess
      ```

      Konfirmasikan bahwa kebijakan telah berhasil dilampirkan ke peran IAM dengan pernyataan berikut.

      ```
      aws iam list-attached-role-policies --role-name my-iam-role
      ```

      Outputnya akan terlihat seperti ini.

      ```
      {
          "AttachedPolicies": [
              {
                  "PolicyName": "AmazonKeyspacesFullAccess",
                  "PolicyArn": "arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess"
              }
          ]
      }
      ```

   1. Beri anotasi akun layanan dengan Nama Sumber Daya Amazon (ARN) dari peran IAM yang dapat diasumsikan. Pastikan untuk memperbarui peran ARN dengan ID akun Anda.

      ```
      kubectl annotate serviceaccount -n my-eks-namespace my-eks-serviceaccount eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/my-iam-role
      ```

1. Konfirmasikan bahwa peran IAM dan akun layanan dikonfigurasi dengan benar.

   1. Konfirmasikan bahwa kebijakan kepercayaan peran IAM telah dikonfigurasi dengan benar dengan pernyataan berikut.

      ```
      aws iam get-role --role-name my-iam-role --query Role.AssumeRolePolicyDocument
      ```

      Outputnya akan terlihat mirip dengan ini.

      ```
      {
          "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/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
                          "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount"
                      }
                  }
              }
          ]
      }
      ```

   1. Konfirmasikan bahwa akun layanan Amazon EKS dianotasi dengan peran IAM.

      ```
      kubectl describe serviceaccount my-eks-serviceaccount -n my-eks-namespace
      ```

      Outputnya akan terlihat mirip dengan ini.

      ```
      Name: my-eks-serviceaccount 
      Namespace:my-eks-namespace
      Labels: <none>
      Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-iam-role 
      Image pull secrets: <none> 
      Mountable secrets: <none> 
      Tokens: <none> 
      [...]
      ```

Setelah Anda membuat akun layanan Amazon EKS, peran IAM, dan mengonfigurasi hubungan dan izin yang diperlukan, lanjutkan ke. [Langkah 2: Konfigurasikan aplikasi](EKS-tutorial-step2.md)