Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aktifkan Mode Otomatis Amazon EKS di seluruh kluster EKS dengan menggunakan Tindakan GitHub
Urbija Goswami dan Anugrah Lakra, Amazon Web Services
Ringkasan
Cluster Amazon Elastic Kubernetes Service (EKS) secara tradisional memerlukan manajemen manual sumber daya komputasi melalui grup node. Ini menciptakan overhead operasional untuk:
Perencanaan kapasitas dan keputusan penskalaan
Penyediaan node dan manajemen siklus hidup
Optimalisasi biaya di berbagai jenis beban kerja
Pemeliharaan dan pembaruan infrastruktur
Amazon EKS Auto Mode mengotomatiskan manajemen sumber daya komputasi dengan menyediakan dan menskalakan node secara dinamis berdasarkan tuntutan beban kerja, sehingga menghilangkan kebutuhan akan manajemen grup node manual.
Namun, banyak organisasi berjuang untuk secara konsisten mengaktifkan dan mengelola Mode Otomatis Amazon EKS di seluruh klaster mereka yang ada dan yang baru. Tantangan umum meliputi:
Proses migrasi kompleks dari grup node yang ada
Risiko gangguan layanan selama transisi
Kebutuhan perencanaan dan pengujian kapasitas yang cermat
Persyaratan untuk izin dan konfigurasi IAM Amazon
tertentu Koordinasi di berbagai tim dan lingkungan
Pola ini mengimplementasikan alur kerja GitHub Tindakan
Setelah mengaktifkan Mode Otomatis, alur kerja menguras dan menghapus grup node lama, memperbarui izin peran klaster, dan membersihkan komponen penskalaan sebelumnya seperti Karpenter dan Cluster Autoscaler. Alur kerja dapat diintegrasikan dengan integrasi berkelanjutan yang ada dan jaringan pipa kontinu delivery/deployment (CI/CD).
Prasyarat dan batasan
Prasyarat
1. Diperlukan
GitHub Akun
dan GitHub repositori Anda sendiri untuk menjalankan alur kerja Akun AWS
aktif dengan izin administratif
2. Instalasi alat lokal
Terraform
versi 1.13.0 atau yang lebih baru GitHub CLI
(gh), dikonfigurasi dengan kredensyal yang sesuai kubectl dan eksctl, dikonfigurasi untuk manajemen klaster
3. Persyaratan Kluster EKS
Kubernetes versi 1.29 atau yang lebih baru
Konfigurasi akses titik akhir:
Entah itu diatur ke titik akhir publik dan pribadi
Atau titik akhir pribadi dengan NAT Gateway di subnet pribadi
EKS API dan akses ConfigMapcluster diaktifkan (diperlukan untuk memungkinkan EKS mengelola node Mode Otomatis secara dinamis dan memperbarui aws-auth ConfigMap untuk otentikasi cluster yang tepat selama migrasi)
4. Persyaratan Konfigurasi IAM OIDC
Peran IAM dan penyedia identitas untuk GitHub itu meliputi:
Kebijakan kepercayaan untuk GitHub OIDC
Izin untuk:
Manajemen Kluster EKS
Akses bucket S3
Manajemen peran IAM
Manajemen jaringan EC2
Lihat kode iam.tf
untuk pengaturan sederhana menggunakan Terraform. Peran IAM (GitHubActionsEKSRole) akan dibuat saat kode Terraform diterapkan.
Keterbatasan
Hanya mendukung klaster EKS dengan Kubernetes versi 1.29 ke atas
Hanya mendukung Karpenter versi 1.1.0 dan di atas
Region-specific implementasi. Beberapa layanan AWS tidak tersedia di semua wilayah AWS. Untuk ketersediaan wilayah, lihat layanan AWS menurut Wilayah
Membutuhkan aksesibilitas titik akhir cluster
Terbatas untuk grup AWS-managed simpul
Arsitektur
Tumpukan teknologi target
Arsitektur target

Alur Kerja GitHub Tindakan dipicu dari GitHub Repositori oleh pengguna.
Alur Kerja GitHub Tindakan mengasumsikan peran IAM menggunakan OIDC untuk membuat perubahan yang diperlukan di akun AWS. Ini juga memeriksa keberadaan peran Node Otomatis EKS di akun dan jika tidak ada, peran dibuat dan kebijakan yang diperlukan dilampirkan.
Cadangan status kluster EKS saat ini yang membutuhkan Mode Otomatis diaktifkan diunggah ke bucket S3.
Peran cluster cluster yang membutuhkan Mode Otomatis diaktifkan diambil dan izin tambahan (AmazonEKSComputePolicy,,, AmazonEKSBlockStoragePolicy AmazonEKSLoadBalancingPolicy AmazonEKSNetworkingPolicy, AmazonEKSClusterPolicy) ditambahkan ke dalamnya jika tidak ada untuk Mode Otomatis EKS. Selain itu, sebagai langkah pra-migrasi, subnet cluster diperbarui dengan tag untuk pengaktifan Mode Otomatis EKS.
Alur kerja memungkinkan Mode Otomatis EKS di cluster EKS.
Grup node lama diidentifikasi dan dihapus. Ini dilewati jika pengguna belum memberikan izin untuk peran IAM yang dijelaskan dalam langkah pengaturan opsional di bawah ini.
Komponen penskalaan (Karpenter dan Cluster Autoscaler) juga dihapus jika ada sebelumnya.
Alur kerja GitHub Actions terdiri dari tiga pekerjaan utama:
check-clusters: Mengidentifikasi cluster tanpa Mode Otomatis diaktifkan dan memperbarui kebijakan IAM dan tag subnet.backup-and-check: Mencadangkan status cluster sebelum migrasi.gradual-migration: Mengaktifkan Mode Otomatis sambil secara bertahap menguras grup node yang ada dan membersihkan komponen penskalaan lama. Ini juga melakukan verifikasi akhir negara cluster setelah migrasi.
catatan
Jika Anda memerlukan cadangan konfigurasi node atau berencana untuk menghapus nodes/node grup selama migrasi ke Mode Otomatis EKS, Anda dapat menambahkan peran IAM yang dibuat menggunakan kode terraform ke aws-auth. ConfigMap Tanpa itu, Anda masih dapat melihat konfigurasi grup node.
Alat
AWS CLI:
AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda. Dalam solusi kami, kami menggunakan antarmuka baris perintah untuk layanan AWS untuk menjalankan pembaruan konfigurasi klaster EKS, pembaruan peran IAM, dan status klaster kueri selama proses otomatisasi.
Amazon EKS:
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan Kubernetes di AWS tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri. Dalam pola ini, Amazon EKS adalah layanan target tempat Mode Otomatis diaktifkan untuk mengotomatiskan penyediaan komputasi dan penskalaan node di seluruh cluster di Wilayah tertentu.
IAM:
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya. Dalam solusi kami, kami menggunakannya untuk mengelola izin untuk GitHub Tindakan untuk memodifikasi konfigurasi klaster EKS melalui federasi OIDC. Solusi ini juga memodifikasi izin peran klaster dan menambahkan pekerjaan untuk membuat Peran Node EKS sehingga Mode Otomatis EKS dapat menjadwalkan pod yang tertunda di node baru yang diputar sebagai bagian dari kumpulan node.
Amazon S3:
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data. Dalam solusi kami, kami menggunakan bucket S3 untuk menyimpan cadangan cluster dengan stempel waktu sebelum Mode Otomatis EKS diaktifkan di dalamnya, yang akan membantu dalam pemulihan bencana.
Alat lainnya:
GitHub Tindakan:
GitHub Actions
HashiCorp Terraform:
Terraform
Repositori kode
Kode untuk pola ini tersedia di GitHub EKS Auto Mode Enablement via GitHub Actions
Praktik terbaik
Keamanan:
Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat G rant least privilege dan praktik terbaik Keamanan dalam dokumentasi IAM. Lihat file iam.tf
di repositori untuk konfigurasi minimum yang diperlukan. Cakupkan kebijakan kepercayaan peran IAM ke GitHub repositori dan cabang spesifik Anda untuk mencegah alur kerja yang tidak sah menjalankan peran.
Aktifkan pencatatan bidang kontrol EKS (server API, audit, autentikator) sebelum memulai migrasi sehingga Anda dapat mendiagnosis masalah penjadwalan atau otentikasi setelah Mode Otomatis diaktifkan.
Tambahkan --sse AES256 ke semua perintah aws s3 cp dalam skrip cadangan
untuk menerapkan enkripsi sisi server pada cadangan status cluster.
Keandalan:
Uji alur kerja terhadap klaster non-produksi terlebih dahulu. Verifikasi bahwa beban kerja menjadwal ulang dengan benar pada node Mode Otomatis sebelum memigrasikan kluster produksi.
Verifikasi bahwa pencadangan S3 berhasil diselesaikan dan berisi konfigurasi cluster yang valid, grup node, rilis Helm, dan data sumber daya khusus sebelum melanjutkan dengan pengaktifan Mode Otomatis.
Setelah mengaktifkan Mode Otomatis, pantau peristiwa penjadwalan pod dan latensi penyediaan node menggunakan Amazon CloudWatch Container Insights untuk mendeteksi masalah lebih awal.
Kinerja:
Tinjau pola penskalaan kumpulan node Mode Otomatis secara berkala dan sesuaikan permintaan dan batasan sumber daya beban kerja untuk menghindari penundaan penyediaan atau penjadwalan yang berlebihan.
Biaya:
Tandai klaster EKS dan sumber daya terkait (peran IAM, bucket cadangan S3, subnet) dengan metadata lingkungan dan kepemilikan untuk mendukung pelacakan biaya dan visibilitas operasional. Untuk informasi selengkapnya, lihat menandai dokumentasi sumber daya AWS. Anda dapat mengedit file alur kerja untuk menambahkan tag kustom selama proses migrasi.
Siapkan peringatan AWS Cost Explorer untuk memantau perubahan biaya komputasi setelah mengaktifkan Mode Otomatis, karena Mode Otomatis dapat mengubah jenis instans dan perilaku penskalaan. Untuk informasi selengkapnya, lihat Menganalisis biaya Anda dengan dokumentasi AWS Cost Explorer.
Operasi:
Simpan file alur kerja dan konfigurasi Terraform dalam kontrol versi dan dokumentasikan penggantian khusus lingkungan apa pun seperti wilayah, peran ARN, atau nama bucket S3.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Konfigurasikan GitHub repositori. |
| AWS DevOps, arsitek Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan IAM untuk pencadangan dan penghapusan grup node |
Ganti $CLUSTER_NAME dan $ACCOUNT_ID dengan nilai yang sesuai.
Ganti $AWS_REGION dan $ROLE_ARN dengan wilayah tertentu dan arn dari peran IAM yang dibuat di atas masing-masing. | AWS DevOps, arsitek Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Memicu alur kerja GitHub Tindakan. | Alur kerja dipicu secara otomatis ketika ada perubahan yang didorong ke cabang fitur, utama, atau dev. Untuk memicu secara manual melalui GitHub UI: 1. Pergi ke repositori pada GitHub 2. Klik pada tab “Tindakan” 3. Pilih alur kerja (auto-mode-pipeline) 4. Klik tombol “Jalankan alur kerja” 5. Pilih cabang dan klik “Jalankan alur kerja” Alur kerja menangani verifikasi | AWS DevOps, arsitek Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Implementasi penyebaran multi-lingkungan. |
|
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Pembersihan sumber daya |
| AWS Umum, arsitek Cloud |
Pemecahan masalah
| Isu | Solusi |
|---|---|
Masalah Otentikasi | • Verifikasi penyedia GitHub OIDC dikonfigurasi dengan benar di AWS IAM • Periksa apakah peran IAM ARN dalam rahasia git cocok dengan peran aktual yang dibuat dengan terraform () GitHubActionsEKSRole • Pastikan GitHub repositori memiliki rahasia yang diperlukan yang dikonfigurasi- AWS_REGION dan. AWS_ROLE_ARN • Validasi pengaturan Wilayah AWS sesuai dengan lokasi cluster Anda |
Masalah Izin | <role-arn>• Uji izin peran IAM secara lokal: bash aws sts assume-role --role-arn --role-session-name test-session aws eks list-clusters • Pastikan peran memiliki DescribeCluster izin eks: UpdateClusterConfig dan eks: |
Kompatibilitas Cluster | <cluster-name>• Konfirmasikan klaster EKS menjalankan Kubernetes 1.29 atau lebih tinggi: bash aws eks describe-cluster --name --query 'cluster.version' • Verifikasi cluster dalam status AKTIF sebelum mengaktifkan Mode Otomatis |
Kegagalan Alur Kerja | • Periksa log GitHub Tindakan untuk pesan kesalahan tertentu • Verifikasi sintaks file alur kerja di. github/workflows/mode otomatis-pipeline.yml • Pastikan variabel lingkungan diatur dengan benar dalam alur kerja |