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.
Menetapkan IAM peran ke akun Kubernetes layanan
Topik ini mencakup cara mengonfigurasi akun Kubernetes layanan untuk mengambil peran AWS Identity and Access Management (IAM) dengan EKS Pod Identity. Apa pun Pods yang dikonfigurasi untuk menggunakan akun layanan kemudian dapat mengakses apa pun Layanan AWS yang peran memiliki izin untuk diakses.
Untuk membuat asosiasi EKS Pod Identity, hanya ada satu langkah; Anda membuat asosiasi EKS melalui AWS Management Console,, AWS CLI AWS SDKs, AWS CloudFormation dan alat-alat lainnya. Tidak ada data atau metadata tentang asosiasi di dalam cluster di Kubernetes objek apa pun dan Anda tidak menambahkan anotasi apa pun ke akun layanan.
Prasyarat
-
Sebuah klaster yang sudah ada. Jika Anda tidak memilikinya, Anda dapat membuatnya dengan mengikuti salah satu Memulai dengan Amazon EKS panduan.
-
IAMKepala sekolah yang menciptakan asosiasi harus memilikiiam:PassRole
.
-
Versi terbaru dari yang AWS CLI diinstal dan dikonfigurasi pada perangkat Anda atau AWS CloudShell. Anda dapat memeriksa versi saat ini dengan aws --version | cut -d / -f2
| cut -d ' ' -f1
. Package manager seperti yum
apt-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 di 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 Mengatur kubectl dan eksctl.
-
kubectl
config
File yang sudah ada yang berisi konfigurasi cluster Anda. Untuk membuat kubectl
config
file, lihatConnect kubectl ke EKS klaster dengan membuat kubeconfig file.
Membuat asosiasi EKS Pod Identity
- AWS Management Console
-
Buka EKS konsol Amazon di https://console.aws.amazon.com/eks/rumah#/cluster.
-
Di panel navigasi kiri, pilih Clusters, lalu pilih nama cluster yang ingin Anda konfigurasikan add-on EKS Pod Identity Agent.
-
Pilih tab Access.
-
Dalam asosiasi Pod Identity, pilih Create.
-
Untuk IAMperan tersebut, pilih IAM peran dengan izin yang Anda inginkan untuk memiliki beban kerja.
Daftar ini hanya berisi peran yang memiliki kebijakan kepercayaan berikut yang memungkinkan EKS Pod Identity untuk menggunakannya.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
"Effect": "Allow",
"Principal": {
"Service": "pods.eks.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
]
}
]
}
-
Untuk Kubernetesnamespace, pilih Kubernetes namespace yang berisi akun layanan dan beban kerja. Secara opsional, Anda dapat menentukan namespace dengan nama yang tidak ada di cluster.
-
Untuk akun Kubernetes layanan, pilih akun Kubernetes layanan yang akan digunakan. Manifes untuk Kubernetes beban kerja Anda harus menentukan akun layanan ini. Secara opsional, Anda dapat menentukan akun layanan berdasarkan nama yang tidak ada di cluster.
-
(Opsional) Untuk Tag, pilih Tambahkan tag untuk menambahkan metadata dalam pasangan kunci dan nilai. Tag ini diterapkan pada asosiasi dan dapat digunakan dalam IAM kebijakan.
Anda dapat mengulangi langkah ini untuk menambahkan beberapa tag.
-
Pilih Buat.
- AWS CLI
-
-
Jika Anda ingin mengaitkan IAM kebijakan yang ada dengan IAM peran Anda, lewati ke langkah berikutnya.
Buat IAM kebijakan. Anda dapat membuat kebijakan sendiri, atau menyalin kebijakan AWS terkelola yang telah memberikan beberapa izin yang Anda perlukan dan menyesuaikannya dengan persyaratan spesifik Anda. Untuk informasi selengkapnya, lihat Membuat IAM kebijakan di Panduan IAM Pengguna.
-
Buat file yang menyertakan izin untuk Layanan AWS yang ingin Anda Pods akses. Untuk daftar semua tindakan untuk semua Layanan AWS, lihat Referensi Otorisasi Layanan.
Anda dapat menjalankan perintah berikut untuk membuat contoh file kebijakan yang memungkinkan akses hanya-baca ke bucket Amazon S3. Anda dapat secara opsional menyimpan informasi konfigurasi atau skrip bootstrap di bucket ini, dan kontainer di dalam Anda Pod dapat membaca file dari bucket dan memuatnya ke dalam aplikasi Anda. Jika Anda ingin membuat kebijakan contoh ini, salin konten berikut ke perangkat Anda. Ganti my-pod-secrets-bucket
dengan nama bucket Anda dan jalankan perintah.
cat >my-policy.json
<<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-pod-secrets-bucket
"
}
]
}
EOF
-
Buat IAM kebijakan.
aws iam create-policy --policy-name my-policy
--policy-document file://my-policy.json
-
Buat IAM peran dan kaitkan dengan akun Kubernetes layanan.
-
Jika Anda memiliki akun Kubernetes layanan yang sudah ada yang ingin Anda ambil IAM peran, maka Anda dapat melewati langkah ini.
Buat akun Kubernetes layanan. Salin konten berikut ke perangkat Anda. Ganti my-service-account
dengan nama yang Anda inginkan dan default
dengan namespace yang berbeda, jika perlu. Jika Anda berubah default
, namespace harus sudah ada.
cat >my-service-account.yaml <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: default
EOF
kubectl apply -f my-service-account.yaml
Jalankan perintah berikut.
kubectl apply -f my-service-account.yaml
-
Jalankan perintah berikut untuk membuat file kebijakan kepercayaan untuk IAM peran tersebut.
cat >trust-relationship.json
<<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
"Effect": "Allow",
"Principal": {
"Service": "pods.eks.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
]
}
]
}
EOF
-
Buat peran. Ganti my-role
dengan nama untuk IAM peran Anda, dan my-role-description
dengan deskripsi untuk peran Anda.
aws iam create-role --role-name my-role
--assume-role-policy-document file://trust-relationship.json
--description "my-role-description
"
-
Lampirkan IAM kebijakan untuk peran Anda. Ganti my-role
dengan nama IAM peran Anda dan my-policy
dengan nama kebijakan yang sudah ada yang Anda buat.
aws iam attach-role-policy --role-name my-role
--policy-arn=arn:aws:iam::111122223333
:policy/my-policy
Tidak seperti IAM peran untuk akun layanan, EKS Pod Identity tidak menggunakan anotasi pada akun layanan.
-
Jalankan perintah berikut untuk membuat asosiasi. Ganti my-cluster
dengan nama cluster, ganti my-service-account
dengan nama yang Anda inginkan dan default
dengan namespace yang berbeda, jika perlu.
aws eks create-pod-identity-association --cluster-name my-cluster
--role-arn arn:aws:iam::111122223333
:role/my-role
--namespace default
--service-account my-service-account
Contoh output adalah sebagai berikut.
{
"association": {
"clusterName": "my-cluster",
"namespace": "default",
"serviceAccount": "my-service-account",
"roleArn": "arn:aws:iam::111122223333:role/my-role",
"associationArn": "arn:aws::111122223333:podidentityassociation/my-cluster/a-abcdefghijklmnop1",
"associationId": "a-abcdefghijklmnop1",
"tags": {},
"createdAt": 1700862734.922,
"modifiedAt": 1700862734.922
}
}
Anda dapat menentukan namespace dan akun layanan berdasarkan nama yang tidak ada di cluster. Anda harus membuat namespace, akun layanan, dan beban kerja yang menggunakan akun layanan agar asosiasi EKS Pod Identity berfungsi.
> Konfirmasikan konfigurasi
Konfirmasikan bahwa akun peran dan layanan dikonfigurasi dengan benar.
-
Konfirmasikan bahwa kebijakan kepercayaan IAM peran dikonfigurasi dengan benar.
aws iam get-role --role-name my-role
--query Role.AssumeRolePolicyDocument
Contoh output adalah sebagai berikut.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow EKS Auth service to assume this role for Pod Identities",
"Effect": "Allow",
"Principal": {
"Service": "pods.eks.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
]
}
]
}
-
Konfirmasikan bahwa kebijakan yang Anda lampirkan pada peran Anda di langkah sebelumnya dilampirkan pada peran tersebut.
aws iam list-attached-role-policies --role-name my-role
--query AttachedPolicies[].PolicyArn --output text
Contoh output adalah sebagai berikut.
arn:aws:iam::111122223333
:policy/my-policy
-
Tetapkan variabel untuk menyimpan Amazon Resource Name (ARN) dari kebijakan yang ingin Anda gunakan. Ganti my-policy
dengan nama kebijakan yang ingin Anda konfirmasikan izin.
export policy_arn=arn:aws:iam::111122223333
:policy/my-policy
-
Lihat versi default kebijakan.
aws iam get-policy --policy-arn $policy_arn
Contoh output adalah sebagai berikut.
{
"Policy": {
"PolicyName": "my-policy
",
"PolicyId": "EXAMPLEBIOWGLDEXAMPLE
",
"Arn": "arn:aws:iam::111122223333
:policy/my-policy
",
"Path": "/",
"DefaultVersionId": "v1
",
[...]
}
}
-
Lihat konten kebijakan untuk memastikan bahwa kebijakan tersebut mencakup semua izin yang Anda Pod butuhkan. Jika perlu, ganti 1
dalam perintah berikut dengan versi yang dikembalikan di output sebelumnya.
aws iam get-policy-version --policy-arn $policy_arn --version-id v1
Contoh output adalah sebagai berikut.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-pod-secrets-bucket"
}
]
}
Jika Anda membuat kebijakan contoh di langkah sebelumnya, maka output Anda sama. Jika Anda membuat kebijakan yang berbeda, maka example
Kontennya berbeda.
Langkah selanjutnya
Konfigurasikan pods untuk mengakses AWS layanan dengan akun layanan