Konfigurasikan AWS Security Token Service titik akhir untuk akun layanan - Amazon EKS

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.

Konfigurasikan AWS Security Token Service titik akhir untuk akun layanan

Jika Anda menggunakan akun Kubernetes layananIAM role untuk akun layanan, maka Anda dapat mengonfigurasi jenis AWS Security Token Service titik akhir yang digunakan oleh akun layanan jika versi cluster dan platform Anda sama atau lebih lambat dari yang tercantum dalam tabel berikut. Jika versi Anda Kubernetes atau platform lebih awal dari yang tercantum dalam tabel, maka akun layanan Anda hanya dapat menggunakan titik akhir global.

Versi Kubernetes Versi platform Jenis titik akhir default
1.30 eks.2 Regional
1.29 eks.1 Regional
1.28 eks.1 Regional
1.27 eks.1 Regional
1.26 eks.1 Regional
1.25 eks.1 Regional
1.24 eks.2 Regional
1.23 eks.1 Regional

AWS merekomendasikan penggunaan titik AWS STS akhir regional alih-alih titik akhir global. Ini mengurangi latensi, menyediakan redundansi bawaan, dan meningkatkan validitas token sesi. AWS Security Token Service Harus aktif di Wilayah AWS tempat yang Pod sedang berjalan. Selain itu, aplikasi Anda harus memiliki redundansi bawaan untuk yang berbeda Wilayah AWS jika terjadi kegagalan layanan di. Wilayah AWS Untuk informasi selengkapnya, lihat Mengelola AWS STSWilayah AWS dalam Panduan Pengguna IAM.

Prasyarat
Untuk mengonfigurasi tipe titik akhir yang digunakan oleh akun Kubernetes layanan

Contoh berikut semua menggunakan akun aws-node Kubernetes layanan yang digunakan oleh plugin Amazon VPC CNI. Anda dapat mengganti example values dengan akun layanan Anda sendiri, ruang namaPods, dan sumber daya lainnya.

  1. Pilih Pod yang menggunakan akun layanan yang ingin Anda ubah endpoint. Tentukan mana Wilayah AWS yang Pod berjalan. Ganti aws-node-6mfgv dengan Pod nama Anda dan kube-system dengan Pod namespace Anda.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:

    Contoh output adalah sebagai berikut.

    ip-192-168-79-166.us-west-2/192.168.79.166

    Wilayah AWS

  2. Tentukan jenis titik akhir yang digunakan akun Pod's layanan.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Contoh output adalah sebagai berikut.

    AWS_STS_REGIONAL_ENDPOINTS: regional

    Jika titik akhir saat ini bersifat global, global maka dikembalikan dalam output. Jika tidak ada output yang dikembalikan, maka tipe endpoint default sedang digunakan dan belum diganti.

  3. Jika versi cluster atau platform Anda sama atau lebih lambat dari yang tercantum dalam tabel, maka Anda dapat mengubah jenis titik akhir yang digunakan oleh akun layanan Anda dari tipe default ke tipe yang berbeda dengan salah satu perintah berikut. Ganti aws-node dengan nama akun layanan Anda dan kube-system dengan namespace untuk akun layanan Anda.

    • Jika tipe titik akhir default atau saat ini bersifat global dan Anda ingin mengubahnya menjadi regional:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=true

      Jika Anda menggunakan IAM role untuk akun layanan untuk membuat URL S3 yang telah ditandatangani sebelumnya dalam aplikasi Anda yang berjalan di Pods 'container, format URL untuk titik akhir regional mirip dengan contoh berikut:

      https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...
    • Jika tipe titik akhir default atau saat ini bersifat regional dan Anda ingin mengubahnya menjadi global:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=false

      Jika aplikasi Anda secara eksplisit membuat permintaan ke titik akhir AWS STS global dan Anda tidak mengganti perilaku default menggunakan titik akhir regional di kluster Amazon EKS, permintaan akan gagal dengan kesalahan. Untuk informasi selengkapnya, lihat Kontainer pod menerima kesalahan berikut: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.

      Jika Anda menggunakan IAM role untuk akun layanan untuk menghasilkan URL S3 yang telah ditandatangani sebelumnya dalam aplikasi Anda yang berjalan di Pods 'container, format URL untuk titik akhir global mirip dengan contoh berikut:

      https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...

    Jika Anda memiliki otomatisasi yang mengharapkan URL yang telah ditandatangani sebelumnya dalam format tertentu atau jika aplikasi atau dependensi hilir yang menggunakan URL yang telah ditandatangani sebelumnya memiliki harapan untuk Wilayah AWS target, maka buat perubahan yang diperlukan untuk menggunakan titik akhir yang sesuai. AWS STS

  4. Hapus dan buat ulang semua Pods yang ada yang terkait dengan akun layanan untuk menerapkan variabel lingkungan kredensyal. Kait web yang bermutasi tidak menerapkannya pada Pods yang sudah berjalan. Anda dapat menggantiPods,kube-system, dan -l k8s-app=aws-node dengan informasi untuk Pods yang Anda tetapkan anotasi Anda.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Konfirmasikan bahwa semua Pods dimulai ulang.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. Lihat variabel lingkungan untuk salah satuPods. Verifikasi bahwa AWS_STS_REGIONAL_ENDPOINTS nilainya adalah apa yang Anda atur pada langkah sebelumnya.

    kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Contoh output adalah sebagai berikut.

    AWS_STS_REGIONAL_ENDPOINTS=regional