PodsKonfigurasikan untuk menggunakan akun Kubernetes 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.

PodsKonfigurasikan untuk menggunakan akun Kubernetes layanan

Jika Pod perlu mengakses Layanan AWS, maka Anda harus mengkonfigurasinya untuk menggunakan akun Kubernetes layanan. Akun layanan harus dikaitkan dengan peran AWS Identity and Access Management (IAM) yang memiliki izin untuk mengakses. Layanan AWS

Prasyarat
  • Sebuah klaster yang sudah ada. Jika Anda tidak memilikinya, Anda dapat membuatnya menggunakan salah satu panduan Memulai dengan Amazon EKS.

  • Penyedia IAM OpenID Connect (OIDC) yang ada untuk cluster Anda. Untuk mengetahui apakah Anda sudah memilikinya atau cara membuatnya, lihatBuat OIDC penyedia IAM untuk klaster Anda.

  • Akun Kubernetes layanan yang ada yang terkait dengan peran IAM. Akun layanan harus dianotasi dengan Nama Sumber Daya Amazon (ARN) dari peran IAM. Peran harus memiliki kebijakan IAM terkait yang berisi izin yang Pods ingin Anda gunakan. Layanan AWS Untuk informasi selengkapnya tentang cara membuat akun dan peran layanan, dan mengonfigurasinya, lihatMengonfigurasi akun Kubernetes layanan untuk mengambil peran IAM.

  • Versi 2.12.3 atau yang lebih baru atau versi 1.27.160 atau yang lebih baru dari AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi pada perangkat Anda atau AWS CloudShell. Untuk memeriksa versi Anda saat ini, gunakanaws --version | cut -d / -f2 | cut -d ' ' -f1. Package manager seperti yumapt-get,, atau Homebrew untuk macOS sering beberapa versi di belakang versi terbaru dari file AWS CLI. Untuk menginstal versi terbaru, lihat Menginstal, memperbarui, dan menghapus konfigurasi AWS CLI dan Cepat dengan aws configure di Panduan AWS Command Line Interface Pengguna. AWS CLI Versi yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat Menginstal AWS CLI ke direktori home Anda di Panduan AWS CloudShell Pengguna.

  • Alat baris kubectl perintah diinstal pada perangkat Anda atau AWS CloudShell. Versi dapat sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari Kubernetes versi cluster Anda. Misalnya, jika versi cluster Anda1.29, Anda dapat menggunakan kubectl versi1.28,1.29, atau 1.30 dengan itu. Untuk menginstal atau memutakhirkan kubectl, lihat Menginstal atau memperbarui kubectl.

  • kubectlconfigFile yang sudah ada yang berisi konfigurasi cluster Anda. Untuk membuat kubectl config file, lihatMembuat atau memperbarui kubeconfig file untuk kluster Amazon EKS.

Untuk mengkonfigurasi Pod untuk menggunakan akun layanan
  1. Gunakan perintah berikut untuk membuat manifes penerapan yang dapat digunakan Pod untuk mengonfirmasi konfigurasi. Ganti example values dengan nilai-nilai milik Anda sendiri.

    cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF
  2. Terapkan manifes ke cluster Anda.

    kubectl apply -f my-deployment.yaml
  3. Konfirmasikan bahwa variabel lingkungan yang diperlukan ada untuk AndaPod.

    1. Lihat Pods yang digunakan dengan penerapan pada langkah sebelumnya.

      kubectl get pods | grep my-app

      Contoh output adalah sebagai berikut.

      my-app-6f4dfff6cb-76cv9   1/1     Running   0          3m28s
    2. Lihat ARN dari peran IAM yang digunakan. Pod

      kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_ROLE_ARN:

      Contoh output adalah sebagai berikut.

      AWS_ROLE_ARN:                 arn:aws:iam::111122223333:role/my-role

      Peran ARN harus cocok dengan ARN peran yang Anda anotasi dengan akun layanan yang ada. Untuk informasi selengkapnya tentang membuat anotasi akun layanan, lihat. Mengonfigurasi akun Kubernetes layanan untuk mengambil peran IAM

    3. Konfirmasikan bahwa Pod memiliki mount file token identitas web.

      kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_WEB_IDENTITY_TOKEN_FILE:

      Contoh output adalah sebagai berikut.

      AWS_WEB_IDENTITY_TOKEN_FILE:  /var/run/secrets/eks.amazonaws.com/serviceaccount/token

      kubeletMeminta dan menyimpan token atas namaPod. Secara default, token akan kubelet menyegarkan jika token lebih tua dari 80 persen dari total waktu untuk hidup atau lebih dari 24 jam. Anda dapat mengubah durasi kedaluwarsa untuk akun apa pun selain akun layanan default dengan menggunakan pengaturan dalam spesifikasi AndaPod. Untuk informasi selengkapnya, lihat Proyeksi Volume Token Akun Layanan dalam Kubernetes dokumentasi.

      Amazon EKS Pod Identity Webhook pada kluster Pods mengawasinya menggunakan akun layanan dengan anotasi berikut:

      eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-role

      Webhook menerapkan variabel lingkungan sebelumnya ke variabel tersebutPods. Cluster Anda tidak perlu menggunakan webhook untuk mengonfigurasi variabel lingkungan dan pemasangan file token. Anda dapat mengonfigurasi secara manual Pods untuk memiliki variabel lingkungan ini. Versi AWS SDK yang didukung mencari variabel lingkungan ini terlebih dahulu di penyedia rantai kredenal. Kredensi peran digunakan untuk Pods yang memenuhi kriteria ini.

  4. Konfirmasikan bahwa Anda Pods dapat berinteraksi dengan Layanan AWS menggunakan izin yang ditetapkan dalam kebijakan IAM yang dilampirkan pada peran Anda.

    catatan

    Saat Pod menggunakan AWS kredensi dari peran IAM yang terkait dengan akun layanan, SDK AWS CLI atau lainnya dalam container untuk itu Pod menggunakan kredenal yang disediakan oleh peran tersebut. Jika Anda tidak membatasi akses ke kredensial yang diberikan ke peran IAM node Amazon EKS, Pod masih memiliki akses ke kredenal ini. Untuk informasi selengkapnya, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja.

    Jika Anda tidak Pods dapat berinteraksi dengan layanan seperti yang Anda harapkan, selesaikan langkah-langkah berikut untuk mengonfirmasi bahwa semuanya telah dikonfigurasi dengan benar.

    1. Konfirmasikan bahwa Anda Pods menggunakan versi AWS SDK yang mendukung asumsi peran IAM melalui file token identitas OpenID Connect web. Untuk informasi selengkapnya, lihat Menggunakan AWS SDK yang didukung.

    2. Konfirmasikan bahwa penyebaran menggunakan akun layanan.

      kubectl describe deployment my-app | grep "Service Account"

      Contoh output adalah sebagai berikut.

      Service Account:  my-service-account
    3. Jika Anda Pods masih tidak dapat mengakses layanan, tinjau langkah-langkah yang dijelaskan Mengonfigurasi akun Kubernetes layanan untuk mengambil peran IAM untuk mengonfirmasi bahwa akun peran dan layanan Anda telah dikonfigurasi dengan benar.