Daemon kubelet node Amazon EKS melakukan panggilan ke API AWS atas nama Anda. Node menerima izin untuk panggilan API ini melalui profil instans IAM dan kebijakan terkait.
Sebelum Anda dapat meluncurkan dan mendaftarkan node ke dalam klaster, Anda harus membuat peran IAM agar node tersebut dapat digunakan saat diluncurkan. Persyaratan ini berlaku untuk node yang diluncurkan dengan AMI yang dioptimalkan Amazon EKS yang disediakan oleh Amazon, atau dengan AMI node lain yang ingin Anda gunakan. Selain itu, persyaratan ini berlaku untuk grup node terkelola maupun node yang dikelola sendiri.
Sebelum membuat node, Anda harus membuat peran IAM dengan izin berikut:
– Izin kubelet untuk mendeskripsikan EC2 sumber daya Amazon di VPC, seperti yang disediakan oleh kebijakan Amazon EKSWorker NodePolicy. Kebijakan ini juga memberikan izin untuk Agen Identitas Pod Amazon EKS.
– Izin kubelet untuk menggunakan gambar kontainer dari Amazon Elastic Container Registry (Amazon ECR) Registry ECR), seperti yang disediakan oleh kebijakan Amazon. EC2 ContainerRegistryPullOnly Izin untuk menggunakan image kontainer dari Amazon Elastic Container Registry (Amazon ECR) diperlukan karena add-on bawaan untuk pod yang menjalankan jaringan yang menggunakan image kontainer dari Amazon ECR.
– Izin untuk Amazon EKS Pod Identity Agent untuk menggunakan eks-auth:AssumeRoleForPodIdentity action tersebut guna mengambil kredensial Pod. Jika Anda tidak menggunakan Amazon EKSWorker NodePolicy, maka Anda harus memberikan izin ini selain EC2 izin untuk menggunakan EKS Pod Identity (Opsional).
– Jika Anda tidak menggunakan IRSA atau EKS Pod Identity untuk memberikan izin ke pod VPC CNI, maka Anda harus memberikan izin untuk VPC CNI pada peran instance. Anda dapat menggunakan kebijakan AmazonEKS_CNI_Policyterkelola (jika Anda membuat klaster dengan IPv4 keluarga) atau IPv6 kebijakan yang Anda buat (jika Anda membuat klaster dengan IPv6 keluarga). Namun, alih-alih melampirkan kebijakan ke peran ini, sebaiknya Anda melampirkan kebijakan tersebut ke peran terpisah yang digunakan khusus untuk add-on Amazon VPC CNI. Untuk informasi selengkapnya tentang membuat peran terpisah untuk add-on Amazon VPC CNI (Opsional).
Periksa apakah peran simpul sudah ada
Anda dapat menggunakan prosedur berikut untuk memeriksa dan melihat apakah akun Anda sudah memiliki peran simpul Amazon EKS.
– Buka konsol IAM di https://console.aws.amazon.com/iam/.
– Di panel navigasi sebelah kiri, pilih Roles.
– Cari daftar peran untuk eksNodeRole, AmazonEKSNodeRole, atau NodeInstanceRole. Jika role dengan salah satu nama itu tidak ada, maka lihat Membuat IAM role simpul Amazon EKS untuk membuat role tersebut. Jika role yang berisi eksNodeRole, AmazonEKSNodeRole, atau NodeInstanceRole memang ada, maka pilih peran untuk melihat kebijakan terlampir.
– Pilih Permissions.
– Pastikan kebijakan EC2 AmazonEKSWorkerNodePolicy dan AmazonEC2ContainerRegistryPullOnly kebijakan terkelola dilampirkan ke peran atau kebijakan khusus dilampirkan dengan izin minimal.
catatan: Jika kebijakan AmazonEKS_CNI_Policy terlampir pada peran, sebaiknya hapus dan lampirkan kebijakan tersebut ke IAM role yang dipetakan ke akun layanan aws-node Kubernetes sebagai gantinya. Untuk informasi selengkapnya, lihat Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA.
– Pilih Trust relationships, lalu pilih Edit trust policy.
– Verifikasi bahwa hubungan kepercayaan berisi kebijakan berikut. Jika hubungan kepercayaan sesuai dengan kebijakan berikut, pilih Cancel (Batalkan). Jika hubungan kepercayaan tidak cocok, salin kebijakan ke jendela Edit trust policy dan pilih Update policy.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "ec2.amazonaws.com" ] } } ] }
Membuat IAM role simpul Amazon EKS
Anda dapat membuat peran IAM node dengan AWS Management Console atau AWS CLI.
AWS Management Console
– Buka konsol IAM di https://console.aws.amazon.com/iam/.
– Di panel navigasi sebelah kiri, pilih Roles.
– Pada halaman Roles, pilih Create role.
– Pada halaman Select trusted entity, lakukan hal berikut:
— Di bagian Trusted entity type, pilih AWS service.
— Di bawah Use case, pilih EC2.
— Pilih Next.
– Pada halaman Add permissions, lampirkan kebijakan khusus atau lakukan hal berikut:
— Di dalam kotak Filter policies, masukkan AmazonEKSWorkerNodePolicy.
— Pilih kotak centang di sebelah kiri AmazonEKSWorkerNodePolicy di hasil pencarian.
— Pilih Clear filters.
— Di dalam kotak Filter policies, masukkan AmazonEC2ContainerRegistryPullOnly.
— Pilih kotak centang di sebelah kiri AmazonEC2ContainerRegistryPullOnly di hasil pencarian.
Kebijakan terkelola AmazonEKS_CNI_Policy, atau kebijakan yang Anda buat juga harus dilampirkan pada peran ini atau IPv6 peran lain yang dipetakan ke akun layanan Kubernetes.
aws-node Sebaiknya tetapkan kebijakan ke peran yang terkait dengan akun layanan Kubernetes, alih-alih menugaskannya ke peran ini.
— Pilih Next.
– Pada halaman Name, review, dan create, lakukan hal berikut:
— Untuk Role name, masukkan nama unik untuk peran Anda, seperti AmazonEKSNodeRole.
— Untuk Description, ganti teks saat ini dengan teks deskriptif seperti Amazon EKS – Node role.
— Di bawah Add tags (Optional), tambahkan metadata ke peran dengan melampirkan tag sebagai pasangan nilai kunci. Untuk informasi selengkapnya tentang penggunaan tanda di IAM, lihat Menandai sumber daya IAM di Panduan Pengguna IAM.
— Pilih Create role.
AWS CLI
– Jalankan perintah berikut untuk membuat file node-role-trust-relationship.json.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "ec2.amazonaws.com" ] } } ] }
– Create IAM role.
aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
– Lampirkan dua kebijakan terkelola IAM yang diperlukan ke IAM role.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name AmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly \ --role-name AmazonEKSNodeRole
– Lampirkan salah satu kebijakan IAM berikut ke peran IAM, tergantung pada keluarga IP yang Anda gunakan untuk membuat klaster. Kebijakan ini harus dilampirkan ke peran ini atau ke peran yang terkait dengan akun layanan aws-node Kubernetes yang digunakan untuk plugin Amazon VPC CNI untuk Kubernetes. Sebaiknya tetapkan kebijakan ke peran yang terkait dengan akun layanan Kubernetes. Untuk menetapkan kebijakan ke peran yang terkait dengan akun layanan Kubernetes,
— IPv4
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSNodeRole
— IPv6
— 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/*" ] } ] }
— Create IAM policy.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
— Lampirkan IAM policy ke IAM role. Ganti 111122223333 dengan ID akun Anda.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSNodeRole