View a markdown version of this page

Otentikasi entri akses Amazon EKS - AWS Batch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Otentikasi entri akses Amazon EKS

Amazon EKS mendukung dua mekanisme untuk memberikan izin utama IAM untuk memanggil API cluster: Kubernetes API entri akses lama aws-auth ConfigMap dan API entri akses yang lebih baru. Entri akses memberikan akses Kubernetes API ke prinsipal IAM tanpa mengharuskan Anda untuk mengedit a ConfigMap. AWS Batch dapat mengotentikasi ke cluster Anda melalui salah satu mekanisme.

Ketika Anda eksConfiguration.accessEntry.desiredState mengatur ENABLED pada lingkungan komputasi, AWS Batch dapat mengelola entri akses untuk lingkungan komputasi tersebut di cluster. Anda tidak perlu lagi mengedit secara manual aws-auth ConfigMap.

Apakah AWS Batch menyediakan entri akses tergantung pada lingkungan AWS Batch komputasi dan konfigurasi cluster Amazon EKS Anda. Lihat Interaksi dengan AuthenticationMode cluster untuk detail.

Nilai untuk akses Entry.desiredState

Bid desiredState ang pada EksAccessEntry menyatakan status entri akses yang diinginkan untuk lingkungan komputasi. Nilai yang valid adalah:

ENABLED

AWS Batch membuat entr AWS Batch i akses yang dikelola pada cluster untuk lingkungan komputasi. AWS Batch hanya akan membuat entri AWS Batch akses yang dikelola jika semua lingkungan komputasi di cluster telah disetel desiredState ke ENABLED (lihat Bagaimana AWS Batch mendamaikan DesiredState di seluruh lingkungan komputasi untuk detailnya).

DISABLED

AWS Batch menghapus entri akses AWS Batch-managed untuk cluster. AWS Batch hanya akan menghapus entri AWS Batch akses yang dikelola jika semua lingkungan komputasi di cluster telah disetel desiredState ke DISABLED (lihat Bagaimana AWS Batch mendamaikan DesiredState di seluruh lingkungan komputasi untuk detailnya). Akses ke cluster harus dikonfigurasi melalui aws-auth ConfigMap.

INHERIT_FROM_CLUSTER

AWS Batch menyimpang ke entr status i akses cluster saat ini. Pada cluster Amazon EKS yang mode otentikasinya adalah API AWS Batch , membuat dan mengelola entri akses karena cluster tidak memiliki tempat aws-auth ConfigMap untuk kembali. Pada cluster yang mode otentikasinya adalah CONFIG_MAP atauAPI_AND_CONFIG_MAP, AWS Batch tidak menambahkan atau menghapus entri akses.

Lingkungan komputasi juga mengekspos bidang read-only dalam responsaccessEntry.status. DescribeComputeEnvironments ACTIVEberarti bahwa entri akses yang AWS Batch dikelola -untuk lingkungan komputasi ada di cluster dan diutamakan daripada. aws-auth ConfigMap INACTIVEberarti tidak ada AWS Batch entri akses yang dikelola. Ini bisa karena desiredStateDISABLED, karena lingkungan komputasi yang menargetkan cluster belum setujudesiredState, atau karena entri belum disediakan. Jika accessEntry.status yaINACTIVE, Batch menggunakan aws-auth ConfigMap untuk akses cluster.

catatan

Entri akses ACTIVE melaporkan segera setelah ada di cluster, meskipun AWS Batch belum selesai mengaitkan kebijakan akses yang membuatnya dapat digunakan. Jika status lingkungan komputasi berubah menjadi INVALID while accessEntry.status isACTIVE, lihatPengaturan entri akses Amazon EKS tidak lengkap.

catatan

Jika Anda menghilangkan accessEntry bidang, AWS Batch tidak merekam a desiredState untuk lingkungan komputasi, dan DescribeComputeEnvironments tidak mengembalikannya. Untuk tujuan penyediaan entri akses, AWS Batch berperilaku seperti yang dilakukannya. INHERIT_FROM_CLUSTER

Interaksi dengan AuthenticationMode cluster

Bagaimana AWS Batch berperilaku untuk tertentu desiredState tergantung pada mode otentikasi cluster. Tabel berikut berlaku untuk keduanya CreateComputeEnvironment danUpdateComputeEnvironment.

Cluster authenticationMode

Lingkungan komputasi accessEntry.desiredState=ENABLED

Lingkungan komputasi accessEntry.desiredState=DISABLED

Lingkungan komputasi accessEntry.desiredState=INHERIT_FROM_CLUSTER

CONFIG_MAP

Entri akses tidak tersedia di cluster, jadi AWS Batch tidak membuat atau menghapusnya. AWS Batch masih mencatat nilai yang Anda tentukan. Setelah Anda mengubah mode otentikasi cluster, nilai yang direkam akan berlaku pada panggilan berikutnya CreateComputeEnvironment atau UpdateComputeEnvironment panggilan yang ditentukandesiredState.

API_AND_CONFIG_MAP

AWS Batch membandingkan nilai yang direkam di seluruh lingkungan komputasi yang berbagi cluster — lihatBagaimana AWS Batch mendamaikan DesiredState di seluruh lingkungan komputasi.

Mode akses yang ada dipertahankan. AWS Batch tidak menambah atau menghapus entri akses.

API

Entri akses dibuat dan dipelihara di cluster.

Permintaan ditolak. Cluster dalam mode ini tidak mendukung aws-auth ConfigMap, dan ConfigMap metode tidak dapat diaktifkan setelah pembuatan cluster, sehingga lingkungan komput DISABLED asi tidak memiliki cara untuk mengotentikasi.

Entri akses dibuat dan dipelihara di cluster. Ketika cluster API hanya -only, mewarisi setara dengan. ENABLED

Bagaimana AWS Batch mendamaikan DesiredState di seluruh lingkungan komputasi

Karena satu cluster Amazon EKS dapat mendukung beberapa lingkungan AWS Batch komputasi, konfigurasi akses cluster adalah sumber daya bersama. AWS Batch oleh karena itu mendamaikan, atau membandingkan dan menyelesaikan, desiredState nilai-nilai yang dicatat di seluruh lingkungan komputasi tersebut.

Ketika cluster authenticationMode adaAPI_AND_CONFIG_MAP, bandingkan rekaman AWS Batch untuk setiap lingkungan komputasi di AWS akun dan Wilayah yang sama yang AWS menargetkan cluster. desiredState AWS Batch menggunakan perbandingan ini untuk menentukan apakah akan menambah atau menghapus entri akses pada masing-masing CreateComputeEnvironment atau UpdateComputeEnvironment operasi yang menentukandesiredState.

Setiap lingkungan komputasi memiliki desiredState=ENABLED

AWS Batch membuat entri akses pada cluster.

Setiap lingkungan komputasi memiliki desiredState=DISABLED

AWS Batch menghapus entri akses dari cluster jika ada.

desiredStateNilai yang direkam tidak semuanya cocok

AWS Batch mempertahankan mode akses yang ada. Entri akses tidak ditambahkan atau dihapus. Ini termasuk campuranENABLED,, dan DISABLEDINHERIT_FROM_CLUSTER, dan juga mencakup lingkungan komputasi apa pun yang tidak memiliki catatandesiredState.

catatan

Untuk mentransisi cluster yang mode otentikasinya adalah API_AND_CONFIG_MAP dari aws-auth ConfigMap ke otentikasi entri akses, atur desiredState=ENABLED pada setiap lingkungan AWS Batch komputasi yang menargetkan cluster. Untuk transisi kembali, atur desiredState=DISABLED pada masing-masing dari mereka.

Apa AWS Batch membuat di cluster Anda

AWS Batch membuat satu entri akses per cluster yang memenuhi persyaratan di atas, kemudian mengaitkan kebijakan akses AWSBatchClusterPolicy Amazon EKS dengan entri akses tersebut. Entri akses adalah per cluster daripada per lingkungan komputasi, sehingga semua lingkungan AWS Batch komputasi yang menargetkan cluster yang sama membagikannya.

catatan

Menghapus lingkungan komputasi tidak menghapus entri akses, bahkan jika itu adalah lingkungan AWS Batch komputasi terakhir di cluster. Untuk menghapus entri akses yang AWS Batch dikelola -, panggil UpdateComputeEnvironment dengan desiredState=DISABLED pada setiap lingkungan AWS Batch komputasi yang menargetkan cluster sebelum Anda menghapusnya.

Entri akses tidak cukup dengan sendirinya untuk menjalankan pekerjaan di cluster. Untuk Kubernetes izin dan akses node yang harus Anda konfigurasikan sendiri, lihatKonfigurasi cluster yang masih harus Anda berikan.

Izin yang diperlukan

AWS Batch mengelola entri akses menggunakan kredenSIAL identitas IAM yang memanggil UpdateComputeEnvironment operasi CreateComputeEnvironment atau. Identitas itu harus diizinkan untuk melakukan tindakan Amazon EKS berikut:

  • eks:DescribeCluster

  • eks:DescribeAccessEntry

  • eks:CreateAccessEntry

  • eks:AssociateAccessPolicy

  • eks:DeleteAccessEntry

Konfigurasikan entri akses

Anda dapat mengonfigurasi entri akses pada lingkungan komputasi melalui eksConfiguration.accessEntry bidang UpdateComputeEnvironment API CreateComputeEnvironment atau.

AWS CLI

Aktifkan AWS Batch entri akses yang dikelola saat membuat lingkungan komputasi

$ aws batch create-compute-environment \ --compute-environment-name my-eks-ce \ --type MANAGED \ --eks-configuration 'eksClusterArn=arn:aws:eks:us-east-1:123456789012:cluster/my-cluster,kubernetesNamespace=my-aws-batch-namespace,accessEntry={desiredState=ENABLED}' \ --compute-resources 'type=EC2,maxvCpus=128,subnets=subnet-a123456b,securityGroupIds=sg-a12b3456,instanceRole=arn:aws:iam::123456789012:instance-profile/my-node-instance-profile'

Mengaktifkan entr AWS Batch i akses yang dikelola pada lingkungan komputasi yang ada

$ aws batch update-compute-environment \ --compute-environment my-eks-ce \ --eks-configuration 'accessEntry={desiredState=ENABLED}'

Periksa statusnya

$ aws batch describe-compute-environments \ --compute-environments my-eks-ce \ --query "computeEnvironments[0].eksConfiguration.accessEntry"

Responsnya mencakup desiredState yang Anda tentukan dan yang diamatistatus:

{ "desiredState": "ENABLED", "status": "ACTIVE" }
catatan

AWS Batch mengembalikan accessEntry.status untuk semua lingkungan komputasi Amazon EKS, dan mengembalikan desiredState hanya jika Anda telah mengaturnya. Lingkungan komputasi di mana Anda tidak pernah menentukan pengem accessEntry balian status saja.

Untuk berhenti mengelola AWS Batch entri akses, setel desiredState ke sebagai DISABLED gantinya. Sebelum Anda melakukannya, reviewInteraksi dengan AuthenticationMode cluster: DISABLED ditolak pada cluster yang mode otentikasinyaAPI, dan pada cluster yang mode otentikasinya adalah entr API_AND_CONFIG_MAP i akses dihapus hanya setelah setiap lingkungan AWS Batch komputasi yang menargetkan cluster diatur keDISABLED.

API

Gunakan eksConfiguration.accessEntry objek dalam CreateComputeEnvironment UpdateComputeEnvironment permintaan Anda.

Buat lingkungan komputasi dengan entri akses yang AWS Batch dikelola

Sertakan accessEntry dalam badan permintaan:

{ "computeEnvironmentName": "my-eks-ce", "type": "MANAGED", "state": "ENABLED", "eksConfiguration": { "eksClusterArn": "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster", "kubernetesNamespace": "my-aws-batch-namespace", "accessEntry": { "desiredState": "ENABLED" } }, "computeResources": { "type": "EC2", "maxvCpus": 128, "subnets": ["subnet-a123456b"], "securityGroupIds": ["sg-a12b3456"], "instanceRole": "arn:aws:iam::123456789012:instance-profile/my-node-instance-profile" } }

Memperbarui entri akses pada lingkungan komputasi yang ada

{ "computeEnvironment": "my-eks-ce", "eksConfiguration": { "accessEntry": { "desiredState": "ENABLED" } } }

Untuk informasi selengkapnya EksAccessEntry, lihat CreateComputeEnvironment,, dan UpdateComputeEnvironment di Refer AWS Batch ensi API.

Konfigurasi cluster yang masih harus Anda berikan

Entri akses hanya mengontrol cara mengo AWS Batch tentikasi ke cluster Anda. Itu tidak memberikan Kubernetes izin AWS Batch yang diperlukan untuk menjalankan pekerjaan Anda, dan tidak membiarkan instans yang dil AWS Batch uncurkan bergabung dengan cluster. Terlepas dari mekanisme otentikasi yang Anda gunakan, Anda masih harus mengonfigurasi kedua hal berikut ini.

penting

Setelah entri akses AWS Batch-managed dibuat untuk peran AWS Batch terkait layanan pada cluster (accessEntry.status=ACTIVE), itu diutamakan daripada aws-auth ConfigMap konfigurasi untuk peran tersebut. En ConfigMap tri untuk peran AWS Batch terkait layanan tidak digunakan, dan mengo AWS Batch tentikasi menggunakan entri akses sebagai gantinya. Untuk kembali ke ConfigMap otentikasi, atur desiredState=DISABLED pada semua lingkungan komputasi yang menargetkan cluster. Ini menghapus entri akses AWS Batch-managed.

Kubernetesizin untuk nam AWS Batch espace

AWS Batch membutuhkan Kubernetes izin untuk membuat dan mengelola pod di namespace yang Anda tentukan. eksConfiguration.kubernetesNamespace Buat namespace, lalu konfigurasikan izin tersebut menggunakan salah satu metode berikut tergantung pada pendekatan otentikasi Anda:

  • Asosiasi kebijakan akses (diperlukan saat entri aksesstatus=ACTIVE) — Saat Anda mengatur desiredState=ENABLED semua lingkungan komputasi yang menargetkan cluster, AWS Batch membuat entri akses dengan tingkat clusterAWSBatchClusterPolicy. Anda kemudian harus mengaitkan ruang nama yang dicakup untuk memberikan AWS Batch izin AWSBatchNamespacePolicy untuk membuat dan mengelola pod.

    Setelah entri akses mencapaistatus=ACTIVE, kaitkan kebijakan namespace menggunakan: AWS CLI

    $ aws eks associate-access-policy \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AWSBatchNamespacePolicy \ --access-scope type=namespace,namespaces=my-aws-batch-namespace

    Ganti my-aws-batch-namespace dengan nilai yang Anda tentukaneksConfiguration.kubernetesNamespace.

    penting

    Tanpa asosiasi kebijakan ruang nama, pekerjaan akan tetap terjebak dalam status. RUNNABLE Kebijakan tingkat cluster saja tidak memberikan izin pengelolaan pod.

  • Kubernetesrole and role binding (saat entri aksesstatus=INACTIVE) — Jika entri akses yang AWS Batch dikelola tidak aktif, buat Kubernetes peran dan binding peran yang memberikan izin tersebut, seperti yang dijelaskan dalam. Langkah 2: Siapkan cluster Amazon EKS Anda untuk AWS Batch Anda melakukan ini sekali untuk setiap cluster.

    catatan

    Ketika entri AWS Batch akses yang dikelola aktif (status=ACTIVE), peran Kubernetes RBAC dilewati. Anda harus menggunakan metode asosiasi kebijakan akses sebagai gantinya.

AWS Batch tidak membuat sumber daya ini untuk Anda, dan entri AWS Batch akses yang dikelola tidak menggantikannya. Jika hilang, lingkungan komputasi masih bisa menjadi VALID sementara pekerjaan Anda gagal dimulai.

Akses cluster untuk peran instance node

Instans yang dil AWS Batch uncurkan bergabung dengan cluster menggunakan profil instance yang Anda tentukancomputeResources.instanceRole. Peran itu membutuhkan aksesnya sendiri ke cluster, yang terpisah dari entri akses AWS Batch yang dikelola dan yang AWS Batch tidak dikonfigurasi.

Metode konfigurasi tergantung pada cluster AndaauthenticationMode:

  • Pada cluster yang authenticationMode adalah CONFIG_MAP — Anda harus menggunakan aws-auth ConfigMap. Entri akses tidak didukung pada cluster ini.

  • Pada cluster yang authenticationMode adalah API_AND_CONFIG_MAP — Peran instance node dapat mengotentikasi menggunakan entri aws-auth ConfigMap atau akses. Jika peran instance sudah dipetakan di ConfigMap, node akan berhasil bergabung tanpa membuat entri akses untuk peran tersebut.

  • Pada cluster yang authenticationMode adalah API — Anda harus membuat entri akses untuk peran instance node. Tidak aws-auth ConfigMap digunakan untuk otentikasi pada cluster ini.

Untuk membuat entri akses untuk peran instance node, gunakan AWS CLI:

$ aws eks create-access-entry \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::123456789012:role/my-node-instance-role \ --type EC2_LINUX
$ aws eks associate-access-policy \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::123456789012:role/my-node-instance-role \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSWorkerNodePolicy \ --access-scope type=cluster

Untuk informasi selengkapnya, lihat Membuat entr i akses di Panduan Pengguna Amazon EKS .

penting

Tanpa akses cluster yang tepat untuk peran instance node, instans EC2 tidak dapat bergabung dengan cluster. Pekerjaan akan tetap di RUNNABLE negara bagian karena tidak ada kapasitas yang terdaftar dengan cluster.

Memilih antara aws-auth ConfigMap dan entri akses

Otentikasi entri akses adalah jalur yang direkomendasikan untuk lingkungan komputasi Amazon EKS baru AWS Batch , dan menawarkan keuntungan berikut:

  • Menghilangkan kebutuhan untuk mengedit secara manual aws-auth ConfigMap untuk AWS Batch memberikan akses ke cluster.

  • Menyediakan API-driven catatan yang dapat diaudit dari prinsipal yang memiliki akses ke cluster.

  • Diperlukan untuk cluster yang authenticationMode adaAPI, yang tidak mendukung aws-auth ConfigMap.

Jika cluster Anda authenticationMode adaCONFIG_MAP, entri akses tidak tersedia dan di AWS Batch autentikasi melalui. aws-auth ConfigMap Untuk petunjuk, lihat Verifikasi bahwa aws-auth ConfigMap dikonfigurasi dengan benar.