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.
Berikan akses kepada pengguna IAM ke Kubernetes dengan a ConfigMap
penting
aws-auth ConfigMapItu sudah usang. Untuk metode yang direkomendasikan untuk mengelola akses ke Kubernetes APIs, lihat. Berikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS
Akses ke klaster Anda menggunakan prinsipal IAM diaktifkan oleh AWS IAM Authenticator for Kubernetesaws-auth ConfigMap Untuk semua aws-auth ConfigMap pengaturan, lihat Format Konfigurasi Lengkap
Tambahkan prinsipal IAM ke kluster Amazon EKS Anda
Saat Anda membuat klaster Amazon EKS, prinsipal IAM yang membuat klaster secara otomatis diberikan system:masters izin dalam konfigurasi kontrol akses berbasis peran (RBAC) klaster di bidang kontrol Amazon EKS. Prinsipal ini tidak muncul dalam konfigurasi yang terlihat, jadi pastikan untuk melacak prinsipal mana yang awalnya membuat cluster. Untuk memberikan prinsipal IAM tambahan kemampuan untuk berinteraksi dengan klaster Anda, edit bagian aws-auth ConfigMap dalam Kubernetes dan buat Kubernetes rolebinding atau clusterrolebinding dengan nama yang Anda tentukan di dalamnya. group aws-auth ConfigMap
catatan
Untuk informasi selengkapnya tentang konfigurasi kontrol akses berbasis peran Kubernetes (RBAC), lihat Menggunakan
-
Tentukan kredensyal mana yang
kubectldigunakan untuk mengakses klaster Anda. Di komputer Anda, Anda dapat melihat kredensyal mana yangkubectldigunakan dengan perintah berikut. Ganti~/.kube/configdengan jalur kekubeconfigfile Anda jika Anda tidak menggunakan jalur default.cat ~/.kube/configContoh output adalah sebagai berikut.
[...] contexts: - context: cluster: my-cluster.region-code.eksctl.io user: admin@my-cluster.region-code.eksctl.io name: admin@my-cluster.region-code.eksctl.io current-context: admin@my-cluster.region-code.eksctl.io [...]Dalam contoh keluaran sebelumnya, kredensyal untuk pengguna bernama
admindikonfigurasi untuk klaster bernama.my-clusterJika ini adalah pengguna yang membuat cluster, maka ia sudah memiliki akses ke cluster Anda. Jika bukan pengguna yang membuat cluster, maka Anda perlu menyelesaikan langkah-langkah yang tersisa untuk mengaktifkan akses cluster untuk prinsipal IAM lainnya. Praktik terbaik IAM menyarankan agar Anda memberikan izin untuk peran, bukan pengguna. Anda dapat melihat prinsipal lain mana yang saat ini memiliki akses ke cluster Anda dengan perintah berikut:kubectl describe -n kube-system configmap/aws-authContoh output adalah sebagai berikut.
Name: aws-auth Namespace: kube-system Labels: <none> Annotations: <none> Data ==== mapRoles: ---- - groups: - system:bootstrappers - system:nodes rolearn: arn:aws: iam::111122223333:role/my-node-role username: system:node:{{EC2PrivateDNSName}} BinaryData ==== Events: <none>
Contoh sebelumnya adalah default
aws-authConfigMap. Hanya peran instance node yang memiliki akses ke cluster. -
Pastikan Anda memiliki Kubernetes
rolesdanrolebindingsorclusterrolesdan Anda dapat memetakanclusterrolebindingsprinsipal IAM. Untuk informasi selengkapnya tentang sumber daya ini, lihat Menggunakan Otorisasi RBACdi dokumentasi Kubernetes. -
Lihat Kubernetes
rolesatau.clusterrolesRolesdicakup ke anamespace, tetapiclusterrolesdicakup ke cluster.kubectl get roles -Akubectl get clusterroles -
Lihat detail apa pun
roleatau yangclusterroledikembalikan di keluaran sebelumnya dan konfirmasikan bahwa ia memiliki izin (rules) yang Anda inginkan untuk dimiliki oleh prinsipal IAM Anda di cluster Anda.Ganti
role-namedenganrolenama yang dikembalikan dalam output dari perintah sebelumnya. Gantikube-systemdengan namespace dari file.rolekubectl describe role role-name -n kube-systemGanti
cluster-role-namedenganclusterrolenama yang dikembalikan dalam output dari perintah sebelumnya.kubectl describe clusterrole cluster-role-name -
Lihat Kubernetes
rolebindingsatau.clusterrolebindingsRolebindingsdicakup ke anamespace, tetapiclusterrolebindingsdicakup ke cluster.kubectl get rolebindings -Akubectl get clusterrolebindings -
Lihat detail apa pun
rolebindingatauclusterrolebindingdan konfirmasikan bahwa ia memilikiroleatauclusterroledari langkah sebelumnya yang terdaftar sebagairoleRefdan nama grup yang terdaftar untuksubjects.Ganti
role-binding-namedenganrolebindingnama yang dikembalikan dalam output dari perintah sebelumnya. Gantikube-systemdengannamespacedarirolebinding.kubectl describe rolebinding role-binding-name -n kube-systemContoh output adalah sebagai berikut.
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: eks-console-dashboard-restricted-access-role-binding namespace: default subjects: - kind: Group name: eks-console-dashboard-restricted-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: eks-console-dashboard-restricted-access-role apiGroup: rbac.authorization.k8s.ioGanti
cluster-role-binding-namedenganclusterrolebindingnama yang dikembalikan dalam output dari perintah sebelumnya.kubectl describe clusterrolebinding cluster-role-binding-nameContoh output adalah sebagai berikut.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks-console-dashboard-full-access-binding subjects: - kind: Group name: eks-console-dashboard-full-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: eks-console-dashboard-full-access-clusterrole apiGroup: rbac.authorization.k8s.io
-
-
Edit
aws-authConfigMap. Anda dapat menggunakan alat sepertieksctluntuk memperbaruiConfigMapatau Anda dapat memperbaruinya secara manual dengan mengeditnya.penting
Kami merekomendasikan menggunakan
eksctl, atau alat lain, untuk mengeditConfigMap. Untuk informasi tentang alat lain yang dapat Anda gunakan, lihat Menggunakan alat untuk membuat perubahan pada aws- authConfigMapdalam panduan praktik terbaik Amazon EKS. Format yang tidak benar aws-authConfigMapdapat menyebabkan Anda kehilangan akses ke cluster Anda.-
Lihat langkah-langkah untuk mengedit configmap dengan eksctl.
-
Lihat langkah-langkah untuk mengedit configmap secara manual.
-
Edit Configmap dengan Eksctl
-
Anda memerlukan versi
0.212.0atau yang lebih baru dari alat bariseksctlperintah yang diinstal pada perangkat Anda atau AWS CloudShell. Untuk menginstal atau memperbaruieksctl, lihat Instalasidalam eksctldokumentasi. -
Lihat pemetaan saat ini di.
ConfigMapGantimy-clusterdengan nama klaster Anda. Gantiregion-codedengan AWS Wilayah tempat cluster Anda berada.eksctl get iamidentitymapping --cluster my-cluster --region=region-codeContoh output adalah sebagai berikut.
ARN USERNAME GROUPS ACCOUNT arn:aws: iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes -
Tambahkan pemetaan untuk peran. Ganti
my-roledengan nama peran Anda. Gantieks-console-dashboard-full-access-groupdengan nama grup yang ditentukan dalam KubernetesRoleBindingatau objek Anda.ClusterRoleBindingGanti111122223333dengan ID akun Anda. Anda dapat menggantiadmindengan nama apa pun yang Anda pilih.eksctl create iamidentitymapping --cluster my-cluster --region=region-code \ --arn arn:aws: iam::111122223333:role/my-role --username admin --group eks-console-dashboard-full-access-group \ --no-duplicate-arnspenting
Peran ARN tidak dapat menyertakan jalur seperti.
role/my-team/developers/my-roleFormat ARN harus.arn:aws: iam::Dalam contoh ini,111122223333:role/my-rolemy-team/developers/perlu dihapus.Contoh output adalah sebagai berikut.
[...] 2022-05-09 14:51:20 [ℹ] adding identity "{arn-aws}iam::111122223333:role/my-role" to auth ConfigMap -
Tambahkan pemetaan untuk pengguna. Praktik terbaik IAM menyarankan agar Anda memberikan izin untuk peran, bukan pengguna. Ganti
my-userdengan nama pengguna Anda. Gantieks-console-dashboard-restricted-access-groupdengan nama grup yang ditentukan dalam KubernetesRoleBindingatau objek Anda.ClusterRoleBindingGanti111122223333dengan ID akun Anda. Anda dapat menggantimy-userdengan nama apa pun yang Anda pilih.eksctl create iamidentitymapping --cluster my-cluster --region=region-code \ --arn arn:aws: iam::111122223333:user/my-user --username my-user --group eks-console-dashboard-restricted-access-group \ --no-duplicate-arnsContoh output adalah sebagai berikut.
[...] 2022-05-09 14:53:48 [ℹ] adding identity "arn:aws: iam::111122223333:user/my-user" to auth ConfigMap -
Lihat pemetaan di lagi.
ConfigMapeksctl get iamidentitymapping --cluster my-cluster --region=region-codeContoh output adalah sebagai berikut.
ARN USERNAME GROUPS ACCOUNT arn:aws: iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes arn:aws: iam::111122223333:role/admin my-role eks-console-dashboard-full-access-group arn:aws: iam::111122223333:user/my-user my-user eks-console-dashboard-restricted-access-group
Edit Configmap secara manual
-
Buka
ConfigMapuntuk mengedit.kubectl edit -n kube-system configmap/aws-authcatatan
Jika Anda menerima kesalahan yang menyatakan "
Error from server (NotFound): configmaps "aws-auth" not found“, maka gunakan prosedur di Terapkan aws-auth ConfigMap ke cluster Anda untuk menerapkan stok.ConfigMap -
Tambahkan prinsip IAM Anda ke.
ConfigMapGrup IAM bukanlah prinsipal IAM, sehingga tidak dapat ditambahkan ke.ConfigMap-
Untuk menambahkan peran IAM (misalnya, untuk pengguna federasi): Tambahkan detail peran ke
mapRolesbagianConfigMap, di bawah.dataTambahkan bagian ini jika belum ada di dalam file. Setiap masuk mendukung parameter berikut:-
rolearn: ARN IAM role untuk menambahkan. Nilai ini tidak dapat menyertakan jalur. Misalnya, Anda tidak dapat menentukan ARN seperti.
arn:aws: iam::ARN harus sebagai gantinya.111122223333:role/my-team/developers/role-namearn:aws: iam::111122223333:role/role-name -
nama pengguna: Nama pengguna dalam Kubernetes untuk memetakan ke dalam IAM role.
-
grup: Grup atau daftar grup Kubernetes untuk memetakan peran. Grup dapat berupa grup default, atau grup yang ditentukan dalam
clusterrolebindingataurolebinding. Untuk informasi selengkapnya, lihat Peran default dan binding perandalam dokumentasi Kubernetes.
-
-
Untuk menambahkan pengguna IAM: Praktik terbaik IAM menyarankan Anda memberikan izin ke peran, bukan pengguna. Tambahkan detail pengguna ke
mapUsersbagianConfigMap, di bawahdata. Tambahkan bagian ini jika belum ada di dalam file. Setiap entri mendukung parameter berikut:-
userarn: ARN pengguna IAM untuk ditambahkan.
-
nama pengguna: nama pengguna dalam Kubernetes untuk memetakan ke pengguna IAM.
-
grup: Grup, atau daftar grup Kubernetes untuk memetakan pengguna. Grup dapat berupa grup default, atau grup yang ditentukan dalam
clusterrolebindingataurolebinding. Untuk informasi selengkapnya, lihat Peran default dan binding perandalam dokumentasi Kubernetes.
-
-
-
Misalnya, blok YAMAL berikut berisi:
-
mapRolesBagian yang memetakan instance node IAM ke grup Kubernetes sehingga node dapat mendaftarkan diri mereka sendiri dengan klaster dan peranmy-console-viewer-roleIAM yang dipetakan ke grup Kubernetes yang dapat melihat semua sumber daya Kubernetes untuk semua cluster. Untuk daftar izin grup IAM dan Kubernetes yang diperlukan untuk peran IAM, lihat.my-console-viewer-roleIzin yang diperlukan -
mapUsersBagian yang memetakan penggunaadminIAM dari AWS akun default ke grupsystem:mastersKubernetes danmy-userpengguna dari AWS akun lain yang dipetakan ke grup Kubernetes yang dapat melihat sumber daya Kubernetes untuk namespace tertentu. Untuk daftar izin grup IAM dan Kubernetes yang diperlukan untuk pengguna IAM, lihat.my-userIzin yang diperlukanTambahkan atau hapus baris seperlunya dan ganti semua
example valuesdengan nilai Anda sendiri.# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws: iam::111122223333:role/my-role username: system:node:{{EC2PrivateDNSName}} - groups: - eks-console-dashboard-full-access-group rolearn: arn:aws: iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role mapUsers: | - groups: - system:masters userarn: arn:aws: iam::111122223333:user/admin username: admin - groups: - eks-console-dashboard-restricted-access-group userarn: arn:aws: iam::444455556666:user/my-user username: my-user
-
-
Simpan file dan keluar dari editor teks Anda.
Terapkan aws-authConfigMap ke cluster Anda
Secara otomatis aws-auth ConfigMap dibuat dan diterapkan ke cluster Anda ketika Anda membuat grup node terkelola atau ketika Anda membuat grup node menggunakaneksctl. Ini awalnya dibuat untuk memungkinkan node bergabung dengan cluster Anda, tetapi Anda juga menggunakan ini ConfigMap untuk menambahkan akses kontrol akses berbasis peran (RBAC) ke prinsip-prinsip IAM. Jika Anda telah meluncurkan node yang dikelola sendiri dan belum menerapkannya aws-auth ConfigMap ke cluster Anda, Anda dapat melakukannya dengan prosedur berikut.
-
Periksa untuk melihat apakah Anda sudah menerapkan
aws-authConfigMap.kubectl describe configmap -n kube-system aws-authJika Anda menerima kesalahan yang menyatakan "
Error from server (NotFound): configmaps "aws-auth" not found“, maka lanjutkan dengan langkah-langkah berikut untuk menerapkan stokConfigMap. -
Unduh, edit, dan terapkan peta konfigurasi AWS autentikator.
-
Unduh peta konfigurasi.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml -
Dalam
aws-auth-cm.yamlfile, aturrolearnke Amazon Resource Name (ARN) dari peran IAM yang terkait dengan node Anda. Anda dapat melakukan ini dengan editor teks, atau dengan menggantimy-node-instance-roledan menjalankan perintah berikut:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yamlJangan mengubah baris lain dalam file ini.
penting
Peran ARN tidak dapat menyertakan jalur seperti.
role/my-team/developers/my-roleFormat ARN harus.arn:aws: iam::Dalam contoh ini,111122223333:role/my-rolemy-team/developers/perlu dihapus.Anda dapat memeriksa output AWS CloudFormation tumpukan untuk grup node Anda dan mencari nilai berikut:
-
InstanceRoleARN — Untuk grup node yang dibuat dengan
eksctl -
NodeInstanceRole— Untuk grup simpul yang dibuat dengan AWS CloudFormation templat penjual Amazon EKS di Konsol Manajemen AWS
-
-
Terapkan konfigurasi. Perintah ini mungkin memerlukan waktu beberapa menit untuk diselesaikan.
kubectl apply -f aws-auth-cm.yamlcatatan
Jika Anda menerima kesalahan otorisasi atau jenis sumber daya, lihat Tidak sah atau akses ditolak (kubectl) di topik pemecahan masalah.
-
-
Perhatikan status simpul Anda dan tunggu sampai simpul mencapai Status
Ready.kubectl get nodes --watchMasukkan
Ctrl+Cuntuk kembali ke prompt shell.