Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyiapkan izin akses dengan IAM peran untuk akun layanan () IRSA
Secara default, server Livy dan driver dan pelaksana aplikasi Spark tidak memiliki akses ke sumber daya. AWS Akun layanan server dan akun layanan spark mengontrol akses ke AWS sumber daya untuk server Livy dan pod aplikasi spark. Untuk memberikan akses, Anda perlu memetakan akun layanan dengan IAM peran yang memiliki AWS izin yang diperlukan.
Anda dapat mengatur IRSA pemetaan sebelum menginstal Apache Livy, selama instalasi, atau setelah Anda menyelesaikan instalasi.
Menyiapkan IRSA saat menginstal Apache Livy (untuk akun layanan server)
catatan
Pemetaan ini hanya didukung untuk akun layanan server.
-
Pastikan Anda telah selesai menyiapkan Apache Livy untuk Amazon EKS dan EMR sedang menginstal Apache Livy dengan Amazon aktif. EMR EKS
-
Buat namespace Kubernetes untuk server Livy. Dalam contoh ini, nama namespace adalah.
livy-ns
-
Buat IAM kebijakan yang menyertakan izin untuk Pod yang Anda inginkan Layanan AWS untuk diakses oleh pod Anda. Contoh berikut membuat IAM kebijakan untuk mendapatkan sumber daya Amazon S3 untuk titik masuk Spark.
cat >
my-policy.json
<<EOF{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-spark-entrypoint-bucket
" } ] } EOF aws iam create-policy --policy-namemy-policy
--policy-document file://my-policy.json
-
Gunakan perintah berikut untuk mengatur Akun AWS ID Anda ke variabel.
account_id=$(aws sts get-caller-identity --query "Account" --output text)
-
Setel penyedia identitas OpenID Connect (OIDC) klaster Anda ke variabel lingkungan.
oidc_provider=$(aws eks describe-cluster --name
my-cluster
--region $AWS_REGION --query "cluster.identity.oidc.issuer" --output text | sed -e "s/^https:\/\///") -
Tetapkan variabel untuk namespace dan nama akun layanan. Pastikan untuk menggunakan nilai Anda sendiri.
export namespace=default export service_account=my-service-account
-
Buat file kebijakan kepercayaan dengan perintah berikut. Jika Anda ingin memberikan akses peran ke semua akun layanan dalam namespace, salin perintah berikut, dan ganti dengan dan ganti
StringEquals
denganStringLike
.$service_account
*
cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::$account_id:oidc-provider/$oidc_provider" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "$oidc_provider:aud": "sts.amazonaws.com", "$oidc_provider:sub": "system:serviceaccount:$namespace:$service_account" } } } ] } EOF
-
Buat peran.
aws iam create-role --role-name
my-role
--assume-role-policy-document file://trust-relationship.json --description "my-role-description
" -
Gunakan perintah Helm install berikut untuk mengatur
serviceAccount.executionRoleArn
to mapIRSA. Berikut ini adalah contoh perintah Helm install. Anda dapat menemukanECR-registry-account
nilai yang sesuai untuk akun Wilayah AWS ECR registri Amazon Anda berdasarkan Wilayah.helm install livy-demo \ oci://895885662937.dkr.ecr.us-west-2.amazonaws.com/livy \ --version 7.3.0 \ --namespace
livy-ns
\ --set image=ECR-registry-account.dkr.ecr.region-id
.amazonaws.com/livy/emr-7.3.0:latest \ --set sparkNamespace=spark-ns
\ --set serviceAccount.executionRoleArn=arn:aws:iam::123456789012:role/my-role
Pemetaan IRSA ke akun layanan Spark
Sebelum Anda memetakan IRSA ke akun layanan Spark, pastikan Anda telah menyelesaikan item berikut:
-
Pastikan Anda telah selesai menyiapkan Apache Livy untuk Amazon EKS dan EMR sedang menginstal Apache Livy dengan Amazon aktif. EMR EKS
-
Anda harus memiliki provdider IAM OpenID Connect (OIDC) yang ada untuk klaster Anda. Untuk melihat apakah Anda sudah memilikinya atau cara membuatnya, lihat Membuat IAM OIDC penyedia untuk klaster Anda.
-
Pastikan Anda telah menginstal versi 0.171.0 atau yang lebih baru dari yang
eksctl
CLI diinstal atau. AWS CloudShell Untuk menginstal atau memperbaruieksctl
, lihat Instalasieksctl
dokumentasi.
Ikuti langkah-langkah berikut untuk memetakan IRSA ke akun layanan Spark Anda:
-
Gunakan perintah berikut untuk mendapatkan akun layanan Spark.
SPARK_NAMESPACE=
<spark-ns>
LIVY_APP_NAME=<livy-app-name>
kubectl --namespace $SPARK_NAMESPACE describe sa -l "app.kubernetes.io/instance=$LIVY_APP_NAME" | awk '/^Name:/ {print $2}' -
Tetapkan variabel Anda untuk namespace dan nama akun layanan.
export namespace=
default
export service_account=my-service-account
-
Gunakan perintah berikut untuk membuat file kebijakan kepercayaan untuk IAM peran tersebut. Contoh berikut memberikan izin ke semua akun layanan dalam namespace untuk menggunakan peran. Untuk melakukannya, ganti
StringEquals
denganStringLike
dan ganti$service_account
dengan*.cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::$account_id:oidc-provider/$oidc_provider" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "$oidc_provider:aud": "sts.amazonaws.com", "$oidc_provider:sub": "system:serviceaccount:$namespace:$service_account" } } } ] } EOF
-
Buat peran.
aws iam create-role --role-name
my-role
--assume-role-policy-document file://trust-relationship.json
--description "my-role-description" -
Petakan server atau akun layanan spark dengan
eksctl
perintah berikut. Pastikan untuk menggunakan nilai Anda sendiri.eksctl create iamserviceaccount --name
spark-sa
\ --namespace spark-namespace --clusterlivy-eks-cluster
\ --attach-role-arn arn:aws:iam::0123456789012
:role/my-role
\ --approve --override-existing-serviceaccounts