Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ingin berkontribusi pada panduan pengguna ini? Pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemberian Izin IAM akses pengguna ke Kubernetes dengan ConfigMap
penting
aws-auth ConfigMap
Itu sudah usang. Untuk metode yang disarankan untuk mengelola akses ke Kubernetes APIs, lihatPemberian Izin IAM akses pengguna 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 kepala sekolah IAM tambahan kemampuan untuk berinteraksi dengan cluster Anda, edit bagian dalamnya aws-auth ConfigMap
Kubernetes dan membuat Kubernetes rolebinding
atau clusterrolebinding
dengan nama a group
yang Anda tentukan diaws-auth ConfigMap
.
catatan
Untuk informasi lebih lanjut tentang Kubernetes konfigurasi kontrol akses berbasis peran (RBAC), lihat Menggunakan
-
Tentukan kredensil mana yang
kubectl
digunakan untuk mengakses klaster Anda. Di komputer Anda, Anda dapat melihat kredensil mana yangkubectl
digunakan dengan perintah berikut. Ganti~/.kube/config
dengan jalur kekubeconfig
file Anda jika Anda tidak menggunakan jalur default.cat ~/.kube/config
Contoh 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, kredensil untuk pengguna bernama
admin
dikonfigurasi untuk klaster bernama.my-cluster
Jika 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-auth
Contoh 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-auth
ConfigMap
. Hanya peran instance node yang memiliki akses ke cluster. -
Pastikan bahwa Anda sudah ada Kubernetes
roles
danrolebindings
atauclusterroles
danclusterrolebindings
Anda dapat memetakan kepala sekolah IAM ke. Untuk informasi selengkapnya tentang sumber daya ini, lihat Menggunakan Otorisasi RBACdi Kubernetes dokumentasi. -
Lihat yang sudah ada Kubernetes
roles
atauclusterroles
.Roles
dicakup ke anamespace
, tetapiclusterroles
dicakup ke cluster.kubectl get roles -A
kubectl get clusterroles
-
Lihat detail apa pun
role
atau yangclusterrole
dikembalikan di keluaran sebelumnya dan konfirmasikan bahwa ia memiliki izin (rules
) yang Anda inginkan untuk dimiliki oleh prinsipal IAM Anda di cluster Anda.Ganti
role-name
denganrole
nama yang dikembalikan dalam output dari perintah sebelumnya. Gantikube-system
dengan namespace dari file.role
kubectl describe role role-name -n kube-system
Ganti
cluster-role-name
denganclusterrole
nama yang dikembalikan dalam output dari perintah sebelumnya.kubectl describe clusterrole cluster-role-name
-
Lihat yang sudah ada Kubernetes
rolebindings
atauclusterrolebindings
.Rolebindings
dicakup ke anamespace
, tetapiclusterrolebindings
dicakup ke cluster.kubectl get rolebindings -A
kubectl get clusterrolebindings
-
Lihat detail apa pun
rolebinding
atauclusterrolebinding
dan konfirmasikan bahwa ia memilikirole
atauclusterrole
dari langkah sebelumnya yang terdaftar sebagairoleRef
dan nama grup yang terdaftar untuksubjects
.Ganti
role-binding-name
denganrolebinding
nama yang dikembalikan dalam output dari perintah sebelumnya. Gantikube-system
dengannamespace
darirolebinding
.kubectl describe rolebinding role-binding-name -n kube-system
Contoh 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.io
Ganti
cluster-role-binding-name
denganclusterrolebinding
nama yang dikembalikan dalam output dari perintah sebelumnya.kubectl describe clusterrolebinding cluster-role-binding-name
Contoh 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-auth
ConfigMap
. Anda dapat menggunakan alat sepertieksctl
untuk memperbaruiConfigMap
atau 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-auth
ConfigMap
dapat 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.199.0
atau yang lebih baru dari alat bariseksctl
perintah yang diinstal pada perangkat Anda atau AWS CloudShell. Untuk menginstal atau memperbaruieksctl
, lihat Instalasidalam eksctl
dokumentasi. -
Lihat pemetaan saat ini di.
ConfigMap
Gantimy-cluster
dengan nama klaster Anda. Gantiregion-code
dengan AWS Wilayah tempat cluster Anda berada.eksctl get iamidentitymapping --cluster my-cluster --region=region-code
Contoh 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-role
dengan nama peran Anda. Gantieks-console-dashboard-full-access-group
dengan nama grup yang ditentukan dalam KubernetesRoleBinding
atauClusterRoleBinding
objek. Ganti111122223333
dengan ID akun Anda. Anda dapat menggantiadmin
dengan 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-arns
penting
Peran ARN tidak dapat menyertakan jalur seperti.
role/my-team/developers/my-role
Format ARN harus.arn:aws: iam::
Dalam contoh ini,111122223333
:role/my-role
my-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-user
dengan nama pengguna Anda. Gantieks-console-dashboard-restricted-access-group
dengan nama grup yang ditentukan dalam KubernetesRoleBinding
atauClusterRoleBinding
objek. Ganti111122223333
dengan ID akun Anda. Anda dapat menggantimy-user
dengan 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-arns
Contoh 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.
ConfigMap
eksctl get iamidentitymapping --cluster my-cluster --region=region-code
Contoh 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
ConfigMap
untuk mengedit.kubectl edit -n kube-system configmap/aws-auth
catatan
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.
ConfigMap
Grup IAM bukanlah prinsipal IAM, sehingga tidak dapat ditambahkan ke.ConfigMap
-
Untuk menambahkan peran IAM (misalnya, untuk pengguna federasi): Tambahkan detail peran ke
mapRoles
bagianConfigMap
, di bawah.data
Tambahkan 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-name
arn:aws: iam::
111122223333
:role/role-name
-
Nama pengguna: Nama pengguna di dalam Kubernetes untuk memetakan ke peran IAM.
-
kelompok: Kelompok atau daftar Kubernetes kelompok untuk memetakan peran. Grup dapat berupa grup default, atau grup yang ditentukan dalam
clusterrolebinding
ataurolebinding
. Untuk informasi selengkapnya, lihat Peran default dan binding perandi Kubernetes dokumentasi.
-
-
Untuk menambahkan pengguna IAM: Praktik terbaik IAM menyarankan Anda memberikan izin ke peran, bukan pengguna. Tambahkan detail pengguna ke
mapUsers
bagianConfigMap
, 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 di dalam Kubernetes untuk memetakan ke pengguna IAM.
-
kelompok: Grup, atau daftar Kubernetes grup untuk memetakan pengguna. Grup dapat berupa grup default, atau grup yang ditentukan dalam
clusterrolebinding
ataurolebinding
. Untuk informasi selengkapnya, lihat Peran default dan binding perandi Kubernetes dokumentasi.
-
-
-
Misalnya, blok YAMAL berikut berisi:
-
mapRoles
Bagian yang memetakan instance node IAM ke Kubernetes mengelompokkan sehingga node dapat mendaftarkan diri dengan cluster dan peranmy-console-viewer-role
IAM yang dipetakan ke a Kubernetes kelompok yang dapat melihat semua Kubernetes sumber daya untuk semua cluster. Untuk daftar IAM dan Kubernetes izin grup yang diperlukan untuk peranmy-console-viewer-role
IAM, lihat. Izin yang diperlukan -
mapUsers
Bagian yang memetakan penggunaadmin
IAM dari AWS akun default kesystem:masters
Kubernetes grup danmy-user
pengguna dari AWS akun berbeda yang dipetakan ke Kubernetes kelompok yang dapat melihat Kubernetes sumber daya untuk namespace tertentu. Untuk daftar IAM dan Kubernetes izin grup yang diperlukan untuk penggunamy-user
IAM, lihat. Izin yang diperlukanTambahkan atau hapus baris seperlunya dan ganti semua
example values
dengan 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-auth
ConfigMap
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-auth
ConfigMap
.kubectl describe configmap -n kube-system aws-auth
Jika 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.yaml
file, aturrolearn
ke Amazon Resource Name (ARN) dari peran IAM yang terkait dengan node Anda. Anda dapat melakukan ini dengan editor teks, atau dengan menggantimy-node-instance-role
dan menjalankan perintah berikut:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
Jangan memodifikasi baris lain dalam file ini.
penting
Peran ARN tidak dapat menyertakan jalur seperti.
role/my-team/developers/my-role
Format ARN harus.arn:aws: iam::
Dalam contoh ini,111122223333
:role/my-role
my-team/developers/
perlu dihapus.Anda dapat memeriksa output AWS CloudFormation tumpukan untuk grup node Anda dan mencari nilai berikut:
-
InstanceRoleARN — Untuk grup simpul yang dibuat dengan
eksctl
-
NodeInstanceRole— Untuk grup simpul yang dibuat dengan AWS CloudFormation templat penjual Amazon EKS di AWS Management Console
-
-
Terapkan konfigurasi. Perintah ini mungkin memerlukan waktu beberapa menit untuk diselesaikan.
kubectl apply -f aws-auth-cm.yaml
catatan
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 --watch
Masukkan
Ctrl
+C
untuk kembali ke prompt shell.