Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Terapkan beban kerja dari DevOps pipeline Azure ke kluster Amazon EKS pribadi
Mahendra Revanasiddappa, Amazon Web Services
Ringkasan
Pola ini menunjukkan cara menerapkan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) dari DevOps pipeline Azure ke cluster Amazon Elastic Kubernetes Service (Amazon EKS) pribadi. Ini mengatasi tantangan kritis yang dihadapi oleh organisasi yang meningkatkan postur keamanan mereka dengan beralih ke titik akhir server API pribadi untuk kluster Amazon EKS mereka.
Titik akhir publik mengekspos server API Kubernetes langsung ke internet, menciptakan permukaan serangan yang lebih besar yang berpotensi ditargetkan oleh aktor jahat. Dengan beralih ke titik akhir pribadi, akses ke bidang kontrol cluster dibatasi ke dalam virtual private cloud (VPC) pelanggan.
Meskipun transisi cluster Amazon EKS ke titik akhir API pribadi secara signifikan meningkatkan keamanan, ini memperkenalkan tantangan konektivitas untuk platform eksternal seperti Azure. CI/CD DevOps Titik akhir pribadi hanya dapat diakses dari dalam VPC cluster atau jaringan peered. Oleh karena itu, DevOps agen Azure standar yang dihosting Microsoft, yang beroperasi di luar jaringan AWS pribadi, tidak dapat menjangkau server API Kubernetes secara langsung. Ini merusak alur kerja penerapan tipikal yang mengandalkan alat seperti kubectl atau Helm yang berjalan pada agen ini karena mereka gagal membuat koneksi ke cluster.
Untuk mengatasi masalah ini, pola ini menampilkan pendekatan yang efisien dengan menggunakan DevOps agen Azure yang dihosting sendiri dalam kluster Amazon EKS pribadi. Solusi ini menawarkan optimalisasi biaya yang unggul, efisiensi operasional, dan skalabilitas sambil menjaga persyaratan keamanan. Pendekatan ini terutama menguntungkan perusahaan yang ingin merampingkan DevOps proses multi-cloud mereka tanpa mengorbankan kinerja atau keamanan.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
AWS Command Line Interface (AWS CLI) versi 2.13.17 atau yang lebih baru, diinstal.
Cluster Amazon EKS pribadi versi 1.24 atau yang lebih baru dibuat, dengan izin untuk membuat ruang nama, rahasia, dan penerapan.
Node pekerja di cluster Amazon EKS dengan konektivitas keluar ke internet sehingga DevOps agen Azure yang menjalankannya dapat terhubung ke kumpulan agen Azure DevOps .
GitHub akun dibuat
. AWS Toolkit for Azure DevOps Versi 1.15 atau yang lebih baru diinstal untuk DevOps proyek Azure yang dijelaskan pada poin sebelumnya. Untuk petunjuk penginstalan, lihat AWS Toolkit for Azure DevOps
di Visual Studio Marketplace.
Batasan
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Arsitektur
Pola ini menciptakan yang berikut:
Repositori Amazon ECR - Repositori Amazon Elastic Container Registry (Amazon ECR) menyimpan image Docker dengan agen Azure dan aplikasi sampel yang DevOps digunakan.
Azure DevOps agent pool - Kumpulan agen yang DevOps dihosting sendiri Azure mendaftarkan agen yang berjalan di cluster Amazon EKS pribadi.
Peran IAM - Peran AWS Identity and Access Management (IAM) untuk koneksi layanan Azure untuk menyediakan akses yang diperlukan ke agen yang berjalan di klaster Amazon EKS pribadi.
Koneksi DevOps layanan Azure - Koneksi layanan di DevOps akun Azure untuk menggunakan peran IAM yang menyediakan akses yang diperlukan untuk pekerjaan pipeline untuk diakses. Layanan AWS
Diagram berikut menunjukkan arsitektur penerapan DevOps agen Azure yang dihosting sendiri pada kluster Amazon EKS pribadi dan menerapkan aplikasi sampel pada cluster yang sama.

Diagram menunjukkan alur kerja berikut:
Terapkan DevOps agen Azure yang dihosting sendiri sebagai penerapan di dalam klaster Amazon EKS.
DevOps Agen Azure terhubung ke kumpulan agen pada DevOps akun Azure menggunakan token akses pribadi (PAT) untuk otentikasi.
Azure Pipelines mengonfigurasi pipeline untuk diterapkan dengan menggunakan kode dari repositori. GitHub
Pipa berjalan pada agen dari kumpulan agen yang dikonfigurasi dalam konfigurasi pipa. DevOps Agen Azure mendapatkan informasi pekerjaan dari pipa dengan terus-menerus melakukan polling ke akun DevOps Azure.
DevOps Agen Azure membuat image Docker sebagai bagian dari pekerjaan pipeline dan mendorong gambar ke repositori Amazon ECR.
DevOps Agen Azure menyebarkan aplikasi sampel pada cluster Amazon EKS pribadi di namespace yang disebut.
webapp
Alat
Alat
Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
Alat-alat lainnya
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub deploy-kubernetes-resources-to- amazon-eks-using-azure -devops
.
Praktik terbaik
Untuk Amazon EKS, lihat Panduan Praktik Terbaik Amazon EKS.
Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Temukan GUID DevOps organisasi Azure. | Masuk ke DevOps akun Azure Anda, lalu gunakan URL berikut untuk menemukan GUID organisasi: | AWS DevOps |
Konfigurasikan iDP di file. Akun AWS | Untuk mengonfigurasi penyedia Identitas (iDP) di Akun AWS sambungan layanan Azure, gunakan langkah-langkah berikut:
Untuk detail selengkapnya, lihat Cara federasi AWS dari Azure menggunakan DevOps OpenID Connect | AWS DevOps |
Buat kebijakan IAM di. Akun AWS | Untuk membuat kebijakan IAM guna memberikan izin yang diperlukan ke peran IAM yang digunakan oleh DevOps pipeline Azure, gunakan langkah-langkah berikut:
| AWS DevOps |
Buat peran IAM di. Akun AWS | Untuk mengonfigurasi peran IAM dalam Akun AWS koneksi layanan Azure, gunakan langkah-langkah berikut:
Dalam kebijakan, berikan informasi Anda untuk placeholder berikut:
| AWS DevOps |
Buat koneksi layanan di DevOps akun Azure. | Untuk mengonfigurasi koneksi layanan Azure, gunakan langkah-langkah berikut:
Untuk detail selengkapnya, lihat Membuat sambungan layanan | AWS DevOps |
Tambahkan peran IAM ke file konfigurasi Amazon EKS. | Peran IAM harus memiliki izin yang diperlukan untuk melakukan operasi yang diperlukan di cluster Amazon EKS. Karena ini adalah peran pipeline, peran IAM harus dapat mengelola hampir semua jenis sumber daya di cluster. Oleh karena itu, izin Untuk menambahkan konfigurasi yang diperlukan ke
Ganti Untuk informasi selengkapnya, lihat Cara Amazon EKS bekerja dengan IAM di dokumentasi Amazon EKS. | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat kumpulan agen yang dihosting sendiri. | Untuk mengonfigurasi kumpulan agen yang dihosting sendiri di DevOps akun Azure, gunakan langkah-langkah berikut:
Untuk detail selengkapnya, lihat Membuat dan mengelola kumpulan agen |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat repositori Amazon ECR. | Gambar Docker yang digunakan untuk menyebarkan DevOps agen Azure dan aplikasi sampel (
Untuk detail selengkapnya, lihat Membuat repositori pribadi Amazon ECR untuk menyimpan gambar dalam dokumentasi Amazon ECR. | AWS DevOps |
Buat Dockerfile untuk membangun agen DevOps Azure. | Buat Dockerfile untuk membangun image Docker yang telah menginstal agen DevOps Azure. Simpan konten berikut dalam file bernama
| AWS DevOps |
Buat skrip untuk DevOps agen Azure. | Untuk membuat
| AWS DevOps |
Buat gambar Docker dengan agen Azure DevOps . | Untuk membuat image Docker untuk menginstal DevOps agen Azure, gunakan Dockerfile yang Anda buat sebelumnya untuk membangun image. Di direktori yang sama tempat Dockerfile disimpan, jalankan perintah berikut:
Ganti | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hasilkan token akses pribadi Azure. | Agen yang berjalan di kluster Amazon EKS pribadi memerlukan token akses pribadi (PAT) sehingga dapat mengautentikasi dengan akun Azure DevOps . Untuk menghasilkan PAT, gunakan langkah-langkah berikut:
Untuk detail selengkapnya, lihat Mendaftarkan agen menggunakan token akses pribadi (PAT) | AWS DevOps |
Gunakan file manifes Kubernetes untuk penerapan agen. | Untuk menerapkan DevOps agen Azure di kluster Amazon EKS pribadi, salin file manifes berikut dan simpan file sebagai:
Ganti | AWS DevOps |
Terapkan agen di cluster Amazon EKS pribadi. | Untuk menerapkan agen Azure Devops di klaster Amazon EKS pribadi, gunakan perintah berikut:
| AWS DevOps |
Verifikasi agen sedang berjalan. | Untuk memverifikasi bahwa DevOps agen Azure sedang berjalan, gunakan perintah berikut:
Output yang diharapkan harus serupa dengan yang berikut:
Pastikan bahwa | AWS DevOps |
Verifikasi agen terdaftar di kolam DevOps agen Azure. | Untuk memverifikasi bahwa agen dikerahkan di klaster Amazon EKS pribadi dan terdaftar di kumpulan agen
Anda harus melihat satu agen terdaftar dengan Status Online, dan nama agen harus dimulai dengan azure-pipelines-agent-eks-*. | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Garpu repositori aplikasi sampel ke akun Anda GitHub . | Lakukan fork repositori AWS Sampel berikut ke akun Anda GitHub : https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure -devops | AWS DevOps |
Buat pipa. | Untuk membuat pipeline di DevOps akun Azure Anda, gunakan langkah-langkah berikut:
| AWS DevOps |
Verifikasi bahwa aplikasi sampel digunakan. | Setelah pipeline selesai, verifikasi keberhasilan penerapan aplikasi sampel dengan memeriksa repositori Amazon ECR dan kluster Amazon EKS. Untuk memverifikasi artefak di repositori Amazon ECR, gunakan langkah-langkah berikut:
Misalnya, Untuk memverifikasi penerapan pada kluster Amazon EKS pribadi di namespace
Output yang diharapkan adalah sebagai berikut:
Catatan: Jika ini adalah proses pipeline pertama Anda, Anda mungkin perlu mengotorisasi koneksi layanan dan kumpulan agen. Cari permintaan izin di antarmuka DevOps pipeline Azure, dan setujui untuk melanjutkan. | AWS DevOps |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Pipeline gagal saat nama repositori Amazon ECR tidak cocok | Aplikasi sampel mengharapkan nama repositori Amazon ECR cocok dengan parameter di. Untuk mengatasi masalah ini, ganti nama repositori Amazon ECR Anda menjadi
|
Kesalahan: Kluster Kubernetes tidak dapat dijangkau: server telah meminta klien untuk memberikan kredensyal | Jika Anda menemukan kesalahan ini di langkah “Tarik dan Terapkan Bagan Helm” di pipeline Azure Anda, akar penyebabnya biasanya berasal dari konfigurasi peran IAM yang salah di cluster Amazon EKS Anda. Untuk mengatasi masalah ini, periksa hal berikut:
|
Sumber daya terkait
AWS Blog
Layanan AWS dokumentasi
Dokumentasi Microsoft