Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Berikan akses beban kerja Kubernetes untuk AWS menggunakan Akun Layanan Kubernetes
A Kubernetes akun layanan memberikan identitas untuk proses yang berjalan di Pod. Untuk informasi selengkapnya lihat Mengelola Akun Layanan
Token akun layanan
BoundServiceAccountTokenVolume
-
Versi Go
0.15.7
dan yang lebih baru -
Versi
12.0.0
Python dan yang lebih baru -
Versi Java
9.0.0
dan yang lebih baru -
JavaScript versi
0.10.3
dan yang lebih baru -
Cabang Ruby
master
-
Versi Haskell
0.3.0.0
-
C# versi
7.0.5
dan yang lebih baru
Jika beban kerja Anda menggunakan versi klien sebelumnya, maka Anda harus memperbaruinya. Untuk mengaktifkan kelancaran migrasi klien ke token akun layanan terikat waktu yang lebih baru, Kubernetes menambahkan periode kedaluwarsa yang diperpanjang ke token akun layanan selama satu jam default. Untuk EKS cluster Amazon, periode kedaluwarsa yang diperpanjang adalah 90 hari. EKSCluster Amazon Anda Kubernetes APIserver menolak permintaan dengan token yang berusia lebih dari 90 hari. Kami menyarankan Anda memeriksa aplikasi Anda dan dependensinya untuk memastikan bahwa klien Kubernetes sama atau lebih lambat dari versi yang SDKs tercantum sebelumnya.
Ketika API server menerima permintaan dengan token yang berumur lebih dari satu jam, server akan memberi anotasi pada peristiwa log API audit. annotations.authentication.k8s.io/stale-token
Nilai anotasi terlihat seperti contoh berikut:
subject: system:serviceaccount:common:fluent-bit, seconds after warning threshold: 4185802.
Jika klaster Anda mengaktifkan pencatatan bidang Kirim log pesawat kontrol ke CloudWatch Log kontrol, maka anotasi ada di log audit. Anda dapat menggunakan kueri Wawasan CloudWatch Log berikut untuk mengidentifikasi semua Pods di EKS cluster Amazon Anda yang menggunakan token basi:
fields @timestamp |filter @logStream like /kube-apiserver-audit/ |filter @message like /seconds after warning threshold/ |parse @message "subject: *, seconds after warning threshold:*\"" as subject, elapsedtime
subject
Ini mengacu pada akun layanan yang Pod digunakan. elapsedtime
Ini menunjukkan waktu yang telah berlalu (dalam detik) setelah membaca token terbaru. Permintaan ke API server ditolak ketika elapsedtime
melebihi 90 hari (7.776.000 detik). Anda harus secara proaktif memperbarui aplikasi Anda Kubernetes klien SDK untuk menggunakan salah satu versi yang terdaftar sebelumnya yang secara otomatis menyegarkan token. Jika token akun layanan yang digunakan mendekati 90 hari dan Anda tidak memiliki cukup waktu untuk memperbarui SDK versi klien Anda sebelum token kedaluwarsa, maka Anda dapat menghentikan yang ada Pods dan membuat yang baru. Ini menghasilkan refetching token akun layanan, memberi Anda tambahan 90 hari untuk memperbarui versi klien Anda. SDKs
Jika Pod adalah bagian dari penerapan, cara yang disarankan untuk mengakhiri Pods sambil menjaga ketersediaan tinggi adalah melakukan roll out dengan perintah berikut. Ganti my-deployment
dengan nama penyebaran Anda.
kubectl rollout restart deployment/my-deployment
Pengaya klaster
Add-on cluster berikut telah diperbarui untuk menggunakan Kubernetes klien SDKs yang secara otomatis mengisi ulang token akun layanan. Sebaiknya pastikan bahwa versi yang terdaftar, atau versi yang lebih baru, diinstal pada cluster Anda.
-
Amazon VPC CNI plugin for Kubernetes dan plugin pembantu metrik versi
1.8.0
dan yang lebih baru. Untuk memeriksa versi Anda saat ini atau memperbaruinya, lihat Amazon VPC CNI dan cni-metrics-helper. -
CoreDNS versi
1.8.4
dan yang lebih baru. Untuk memeriksa versi Anda saat ini atau memperbaruinya, lihatKelola Core DNS untuk DNS di EKS kluster Amazon. -
AWS Load Balancer Controller versi
2.0.0
dan yang lebih baru. Untuk memeriksa versi Anda saat ini atau memperbaruinya, lihatRute lalu lintas internet dengan AWS Load Balancer Controller. -
kube-proxy
Versi saat ini. Untuk memeriksa versi Anda saat ini atau memperbaruinya, lihatKelola kube-proxy di EKS kluster Amazon. -
AWS untuk versi Fluent Bit
2.25.0
atau yang lebih baru. Untuk memperbarui versi Anda saat ini, lihat Rilisdi GitHub. -
Fluentd image versi 1.14.6-1.2
atau yang lebih baru dan plugin filter Fluentd untuk metadata Kubernetes versi 2.11.1 atau yang lebih baru.
Memberikan izin AWS Identity and Access Management untuk beban kerja di klaster Amazon Elastic Kubernetes Service
Amazon EKS menyediakan dua cara untuk memberikan izin AWS Identity and Access Management ke beban kerja yang berjalan di EKS klaster Amazon: IAMperan untuk akun layanan, dan EKS Pod Identities.
- IAMperan untuk akun layanan
-
IAMrole for service account (IRSA) mengonfigurasi aplikasi Kubernetes yang berjalan AWS dengan IAM izin berbutir halus untuk mengakses berbagai sumber daya lain AWS seperti bucket Amazon S3, tabel Amazon DynamoDB, dan banyak lagi. Anda dapat menjalankan beberapa aplikasi bersama-sama di EKS cluster Amazon yang sama, dan memastikan setiap aplikasi hanya memiliki set izin minimum yang diperlukan. IRSAdibangun untuk mendukung berbagai Kubernetes opsi penyebaran yang didukung oleh AWS seperti AmazonEKS, Amazon EKS Anywhere, Red Hat OpenShift Service aktif AWS, dan dikelola sendiri Kubernetes cluster di EC2 instans Amazon. Jadi, IRSA dibangun menggunakan AWS layanan dasar sepertiIAM, dan tidak mengambil ketergantungan langsung pada EKS layanan Amazon dan. EKS API Untuk informasi selengkapnya, lihat IAMperan untuk akun layanan.
- EKSIdentitas Pod
-
EKSPod Identity menawarkan kepada administrator klaster alur kerja yang disederhanakan untuk mengautentikasi aplikasi untuk mengakses berbagai AWS sumber daya lain seperti bucket Amazon S3, tabel Amazon DynamoDB, dan banyak lagi. EKSPod Identity EKS hanya untuk, dan sebagai hasilnya, Pod Identity menyederhanakan bagaimana administrator klaster dapat mengkonfigurasi aplikasi Kubernetes untuk mendapatkan izin. IAM Izin ini sekarang dapat dengan mudah dikonfigurasi dengan lebih sedikit langkah langsung melalui AWS Management Console, EKSAPI, dan AWS CLI, dan tidak ada tindakan apa pun untuk diambil di dalam cluster di mana pun Kubernetes benda. Administrator klaster tidak perlu beralih antara IAM layanan EKS dan layanan, atau menggunakan IAM operasi istimewa untuk mengonfigurasi izin yang diperlukan oleh aplikasi Anda. IAMperan sekarang dapat digunakan di beberapa cluster tanpa perlu memperbarui kebijakan kepercayaan peran saat membuat cluster baru. IAMkredensil yang disediakan oleh EKS Pod Identity mencakup tag sesi peran, dengan atribut seperti nama klaster, namespace, nama akun layanan. Tag sesi peran memungkinkan administrator untuk membuat peran tunggal yang dapat bekerja di seluruh akun layanan dengan mengizinkan akses ke AWS sumber daya berdasarkan tag yang cocok. Untuk informasi selengkapnya, lihat Pelajari caranya EKS Pod Identity memberikan akses pod ke layanan AWS.
Membandingkan Identitas EKS Pod dan IRSA
Pada tingkat tinggi, baik EKS Pod Identity dan IRSA memungkinkan Anda untuk memberikan IAM izin untuk aplikasi yang berjalan pada klaster Kubernetes. Tetapi mereka pada dasarnya berbeda dalam cara Anda mengonfigurasinya, batas yang didukung, dan fitur yang diaktifkan. Di bawah ini, kami membandingkan beberapa aspek kunci dari kedua solusi.
Atribut | EKSIdentitas Pod | IRSA |
---|---|---|
Ekstensibilitas peran |
Anda harus mengatur setiap peran sekali untuk membangun kepercayaan dengan prinsipal EKS layanan Amazon yang baru diperkenalkan. |
Anda harus memperbarui kebijakan kepercayaan IAM peran dengan EKS klaster baru OIDC titik akhir penyedia setiap kali Anda ingin menggunakan peran di cluster baru. |
Skalabilitas cluster |
EKSPod Identity tidak mengharuskan pengguna untuk menyiapkan IAM OIDC penyedia, jadi batasan ini tidak berlaku. |
Setiap EKS cluster memiliki OpenID Connect (OIDC) penerbit URL yang terkait dengannya. Untuk digunakanIRSA, unik OpenID Connect penyedia perlu dibuat untuk setiap EKS cluster diIAM. IAMmemiliki batas global default 100 OIDC penyedia untuk setiap AWS akun. Jika Anda berencana untuk memiliki lebih dari 100 EKS cluster untuk setiap AWS akun denganIRSA, maka Anda akan mencapai IAM OIDC batas penyedia. |
Skalabilitas peran |
EKSPod Identity tidak mengharuskan pengguna untuk mendefinisikan hubungan kepercayaan antara IAM peran dan akun layanan dalam kebijakan kepercayaan, sehingga batasan ini tidak berlaku. |
DalamIRSA, Anda menentukan hubungan kepercayaan antara IAM peran dan akun layanan dalam kebijakan kepercayaan peran. Secara default, panjang ukuran kebijakan kepercayaan adalah |
Peran dapat digunakan kembali |
AWS STSKredensi sementara yang disediakan oleh EKS Pod Identity mencakup tag sesi peran, seperti nama klaster, namespace, nama akun layanan. Tag sesi peran memungkinkan administrator untuk membuat IAM peran tunggal yang dapat digunakan dengan beberapa akun layanan, dengan izin efektif yang berbeda, dengan mengizinkan akses ke AWS sumber daya berdasarkan tag yang dilampirkan padanya. Ini juga disebut kontrol akses berbasis atribut ()ABAC. Untuk informasi selengkapnya, lihat Pemberian Izin pods akses ke AWS sumber daya berdasarkan tag. |
AWS STStag sesi tidak didukung. Anda dapat menggunakan kembali peran antar klaster, tetapi setiap pod menerima semua izin peran tersebut. |
Lingkungan yang didukung |
EKSPod Identity hanya tersedia di AmazonEKS. |
IRSAdapat digunakan seperti AmazonEKS, Amazon EKS Anywhere, Red Hat OpenShift Service on AWS, dan self-managed Kubernetes cluster di EC2 instans Amazon. |
EKSversi yang didukung |
EKS Kubernetes versi |
Semua versi EKS cluster yang didukung. |