Bantu tingkatkan halaman ini
Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. 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.
Mengaktifkan akses utama IAM ke klaster Anda
penting
aws-auth
ConfigMapItu sudah usang. Metode yang direkomendasikan untuk mengelola akses ke Kubernetes API adalah Entri Akses.
Akses ke klaster Anda menggunakan prinsip IAM diaktifkan oleh AWS IAM Authenticator foraws-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 aws-auth
ConfigMap
dalam Kubernetes dan buat Kubernetes rolebinding
atau clusterrolebinding
dengan nama group
yang Anda tentukan di. aws-auth
ConfigMap
catatan
Untuk informasi selengkapnya tentang konfigurasi kontrol akses Kubernetes berbasis peran (RBAC), lihat Menggunakan Otorisasi RBAC
Untuk menambahkan prinsipal IAM ke cluster Amazon EKS
-
Tentukan kredensil mana yang
kubectl
digunakan untuk mengakses klaster Anda. Di komputer Anda, Anda dapat melihat kredenal mana yangkubectl
digunakan dengan perintah berikut. Ganti
dengan jalur ke~/.kube/config
kubeconfig
file Anda jika Anda tidak menggunakan jalur default.cat
~/.kube/config
Contoh output adalah sebagai berikut.
[...] contexts: - context: cluster:
my-cluster.
user:region-code
.eksctl.ioadmin@my-cluster.
name:region-code
.eksctl.ioadmin@my-cluster.
current-context:region-code
.eksctl.ioadmin@my-cluster.
[...]region-code
.eksctl.ioDalam contoh keluaran sebelumnya, kredensial untuk pengguna bernama
dikonfigurasi untuk klaster bernama.admin
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:my-cluster
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
bahwa Anda dapat memetakan prinsipal IAM ke. Untuk informasi selengkapnya tentang sumber daya ini, lihat Menggunakan Otorisasi RBAC dalam dokumentasi. Kubernetes -
Lihat yang 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
denganrole-name
role
nama yang dikembalikan dalam output dari perintah sebelumnya. Ganti
dengan namespace dari file.kube-system
role
kubectl describe role
role-name
-nkube-system
Ganti
dengancluster-role-name
clusterrole
nama yang dikembalikan dalam output dari perintah sebelumnya.kubectl describe clusterrole
cluster-role-name
-
Lihat yang 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
denganrole-binding-name
rolebinding
nama yang dikembalikan dalam output dari perintah sebelumnya. Ganti
dengankube-system
namespace
darirolebinding
.kubectl describe rolebinding
role-binding-name
-nkube-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.ioGanti
dengancluster-role-binding-name
clusterrolebinding
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 perubahanaws-auth
ConfigMap
padapanduan praktik terbaik Amazon EKS. Format yang tidak benar aws-auth
ConfigMap
dapat menyebabkan Anda kehilangan akses ke cluster 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.
Untuk menerapkan aws-auth
ConfigMap
ke cluster Anda
-
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
file, aturaws-auth-cm.yaml
rolearn
ke Amazon Resource Name (ARN) dari peran IAM yang terkait dengan node Anda. Anda dapat melakukan ini dengan editor teks, atau dengan mengganti
dan menjalankan perintah berikut:my-node-instance-role
sed -i.bak -e 's|<ARN of instance role (not instance profile)>|
my-node-instance-role
|' aws-auth-cm.yamlJangan 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
-
NodeInstancePeran - 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.