

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
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Ringkasan
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-summary"></a>

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
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS.
+ AWS Command Line Interface [(AWS CLI) versi 2.13.17 atau yang lebih baru, diinstal.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [kubectl versi 1.25.1 atau yang lebih baru, diinstal.](https://kubernetes.io/docs/tasks/tools/)
+ [Cluster Amazon EKS pribadi versi 1.24 atau yang lebih baru [dibuat](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), dengan izin untuk membuat ruang nama, rahasia, dan penerapan.](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ 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](https://github.com/signup).
+  DevOps [Proyek Azure dengan akses untuk mengonfigurasi koneksi layanan, yang merupakan koneksi terautentikasi antara Azure Pipelines dan layanan eksternal atau jarak jauh, dibuat.](https://learn.microsoft.com/en-us/azure/devops/user-guide/sign-up-invite-teammates?view=azure-devops&tabs=microsoft-account)
+  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](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools)di Visual Studio Marketplace.

**Batasan**
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [AWS Layanan menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-architecture"></a>

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.

![\[Penerapan DevOps agen Azure yang dihosting sendiri dan aplikasi sampel di klaster Amazon EKS pribadi.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a965834f-a1e2-4679-bd8c-15eed4f57b55/images/ee22bd3e-311c-46e0-8024-9b7e7752080a.png)


Diagram menunjukkan alur kerja berikut:

1. Terapkan DevOps agen Azure yang dihosting sendiri sebagai penerapan di dalam klaster Amazon EKS.

1.  DevOps Agen Azure terhubung ke kumpulan agen pada DevOps akun Azure menggunakan token akses pribadi (PAT) untuk otentikasi.

1. Azure Pipelines mengonfigurasi pipeline untuk diterapkan dengan menggunakan kode dari repositori. GitHub 

1. 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.

1.  DevOps Agen Azure membuat image Docker sebagai bagian dari pekerjaan pipeline dan mendorong gambar ke repositori Amazon ECR.

1.  DevOps Agen Azure menyebarkan aplikasi sampel pada cluster Amazon EKS pribadi di namespace yang disebut. `webapp` 

## Alat
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-tools"></a>

**Alat**
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

**Alat-alat lainnya**
+ [Docker](https://www.docker.com/) adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) adalah antarmuka baris perintah yang membantu Anda menjalankan perintah terhadap klaster Kubernetes.

**Repositori kode**
+ Kode untuk pola ini tersedia di repositori GitHub [deploy-kubernetes-resources-to- amazon-eks-using-azure -devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops).

## Praktik terbaik
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-best-practices"></a>
+ Untuk Amazon EKS, lihat [Panduan Praktik Terbaik Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html).
+ Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat [Berikan hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.

## Epik
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-epics"></a>

### Buat koneksi layanan
<a name="create-a-service-connection"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Temukan GUID DevOps organisasi Azure. | Masuk ke DevOps akun Azure Anda, lalu gunakan URL berikut untuk menemukan GUID organisasi: `https://dev.azure.com/{DevOps_Org_ID}/_apis/projectCollections?api-version=6.0` Di URL, ganti `{DevOps_org_ID}` dengan ID organisasi Azure DevOps Anda. | AWS DevOps | 
| Konfigurasikan iDP di file. Akun AWS | Untuk mengonfigurasi penyedia Identitas (iDP) di Akun AWS sambungan layanan Azure, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Untuk detail selengkapnya, lihat [Cara federasi AWS dari Azure menggunakan DevOps OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Buat peran IAM di. Akun AWS | Untuk mengonfigurasi peran IAM dalam Akun AWS koneksi layanan Azure, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Federated": "arn:aws:iam::{account_id}:oidc-provider/vstoken.dev.azure.com/{OrganizationGUID}"<br />      },<br />      "Action": "sts:AssumeRoleWithWebIdentity",<br />      "Condition": {<br />        "StringEquals": {<br />          "vstoken.dev.azure.com/{OrganizationGUID}:aud": "api://AzureADTokenExchange",<br />          "vstoken.dev.azure.com/{OrganizationGUID}:sub": "sc://{OrganizationName}/{ProjectName}/{ServiceConnectionName}"<br />        }<br />      }<br />    }<br />  ]<br />}</pre>Dalam kebijakan, berikan informasi Anda untuk placeholder berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Buat koneksi layanan di DevOps akun Azure. | Untuk mengonfigurasi koneksi layanan Azure, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Untuk detail selengkapnya, lihat [Membuat sambungan layanan](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#create-a-service-connection) di dokumentasi Microsoft. | 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 `system:masters` grup sesuai untuk peran ini.Untuk menambahkan konfigurasi yang diperlukan ke `aws-auth ConfigMap` dalam Kubernetes, gunakan kode berikut:<pre>- groups:<br />  - system:masters<br />  rolearn: arn:aws:iam::{account_id}:role/ADO-role<br />  username: ADO-role</pre>Ganti `{account_id}` dengan Akun AWS ID Anda.Untuk informasi selengkapnya, lihat [Cara Amazon EKS bekerja dengan IAM](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-service-with-iam.html#security-iam-service-with-iam-roles) di dokumentasi Amazon EKS. | AWS DevOps | 

### Buat kolam agen
<a name="create-an-agent-pool"></a>


| 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Untuk detail selengkapnya, lihat [Membuat dan mengelola kumpulan agen](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser) di dokumentasi Microsoft. |  | 

### Buat gambar DevOps agen Azure dan dorong ke Amazon ECR
<a name="build-azure-devops-agent-image-and-push-to-ecr"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat repositori Amazon ECR. | Gambar Docker yang digunakan untuk menyebarkan DevOps agen Azure dan aplikasi sampel (`webapp`) pada kluster Amazon EKS pribadi harus disimpan dalam repositori Amazon ECR. Untuk membuat repositori Amazon ECR, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Untuk detail selengkapnya, lihat [Membuat repositori pribadi Amazon ECR untuk menyimpan gambar dalam dokumentasi](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) 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`Dockerfile`:<pre><br />FROM ubuntu:22.04 <br />ENV TARGETARCH="linux-x64"<br />RUN apt update && apt upgrade -y && apt install -y curl git jq libicu70 unzip wget<br /><br />RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />RUN unzip awscliv2.zip<br />RUN ./aws/install<br />RUN rm -rf aws awscliv2.zip<br /><br />RUN curl -sSL https://get.docker.com/ | sh<br /><br />RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash<br />RUN mkdir -p azp <br />WORKDIR /azp/<br /><br />COPY ./start.sh ./ <br />RUN chmod +x ./start.sh<br /><br />RUN useradd -m -d /home/agent agent <br />RUN chown -R agent:agent /azp /home/agent<br />RUN groupadd -f docker <br />RUN usermod -aG docker agent<br />USER agent<br /><br />ENTRYPOINT [ "./start.sh" ]</pre> | AWS DevOps | 
| Buat skrip untuk DevOps agen Azure. | Untuk membuat `start.sh` skrip, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 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:<pre>aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com<br /><br />docker build --platform linux/amd64 -t ado-agent:latest .<br /><br />docker tag ado-agent:latest aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br /><br />docker push aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest</pre>Ganti `aws_account_id` dan `region` dengan Akun AWS ID Anda dan Wilayah AWS. | AWS DevOps | 

### Terapkan DevOps agen Azure ke cluster Amazon EKS pribadi
<a name="deploy-the-azure-devops-agent-to-a-private-eks-cluster"></a>


| 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>apiVersion: v1<br />kind: Secret<br />metadata:<br />  name: azdevops-pat<br />  namespace: default<br />type: Opaque<br />stringData:<br />  AZP_TOKEN: <PAT Token></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>kubectl create -f ado-secret.yaml</pre>Untuk detail selengkapnya, lihat [Mendaftarkan agen menggunakan token akses pribadi (PAT)](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/personal-access-token-agent-registration?view=azure-devops) di dokumentasi Microsoft. | 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: `agent-deployment.yaml` <pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: azure-pipelines-agent-eks<br />  labels:<br />    app: azure-pipelines-agent<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: azure-pipelines-agent<br />  template:<br />    metadata:<br />      labels:<br />        app: azure-pipelines-agent<br />    spec:<br />      containers:<br />      - name: docker<br />        image: docker:dind<br />        securityContext: <br />          privileged: true<br />        volumeMounts:<br />        - name: shared-workspace<br />          mountPath: /workspace<br />        - name: dind-storage<br />          mountPath: /var/lib/docker<br />        env:<br />        - name: DOCKER_TLS_CERTDIR<br />          value: ""<br />      - name: azure-pipelines-agent<br />        image: aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br />        env:<br />        - name: AZP_URL<br />          value: "<Azure account URL>"<br />        - name: AZP_POOL<br />          value: "eks-agent"<br />        - name: AZP_TOKEN<br />          valueFrom:<br />            secretKeyRef:<br />              name: azdevops-pat<br />              key: AZP_TOKEN<br />        - name: AZP_AGENT_NAME<br />          valueFrom:<br />            fieldRef:<br />              fieldPath: metadata.name<br />        - name: DOCKER_HOST<br />          value: tcp://localhost:2375<br />        volumeMounts:<br />        - mountPath: /workspace<br />          name: shared-workspace<br />      volumes:<br />      - name: dind-storage<br />        emptyDir: {}<br />      - name: shared-workspace<br />        emptyDir: {}</pre>Ganti `aws_account_id` dan `<Azure account URL>` dengan Akun AWS ID dan URL DevOps akun Azure Anda. | AWS DevOps | 
| Terapkan agen di cluster Amazon EKS pribadi. | Untuk menerapkan agen Azure Devops di klaster Amazon EKS pribadi, gunakan perintah berikut:<pre>kubectl create -f agent-deployment.tf</pre> | AWS DevOps | 
| Verifikasi agen sedang berjalan. | Untuk memverifikasi bahwa DevOps agen Azure sedang berjalan, gunakan perintah berikut:<pre>kubectl get deploy azure-pipelines-agent-eks<br /></pre>Output yang diharapkan harus serupa dengan yang berikut:<pre><br />NAME                        READY   UP-TO-DATE   AVAILABLE   AGE<br />azure-pipelines-agent-eks   1/1     1            1           58s</pre>Pastikan bahwa `READY ` kolom menunjukkan`1/1`. | 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`eks-agent`, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Anda harus melihat satu agen terdaftar dengan **Status** **Online**, dan nama agen harus dimulai dengan **azure-pipelines-agent-eks-\$1**. | AWS DevOps | 

### Menyebarkan aplikasi sampel
<a name="deploy-sample-application"></a>


| 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](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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>pool:<br />  name: eks-agent<br />#pool: self-hosted # If you are running self-hosted Azure DevOps Agents<br /><br />stages:<br /># Refering the pipeline template, input parameter that are not specified will be added with defaults<br />- template: ./pipeline_templates/main_template.yaml<br />  parameters:<br />    serviceConnectionName: aws-sc<br />    awsRegion: <your region><br />    awsEKSClusterName: <name of your EKS cluster><br />    projectName: webapp<br /></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Misalnya, `20250501.1-image` dan `20250501.1-helm`.Untuk memverifikasi penerapan pada kluster Amazon EKS pribadi di namespace`webapp`, gunakan perintah berikut:<pre>kubectl get deploy -n webapp </pre>Output yang diharapkan adalah sebagai berikut:<pre><br />NAME     READY   UP-TO-DATE   AVAILABLE<br />webapp   1/1     1            1           </pre>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
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Pipeline gagal saat nama repositori Amazon ECR tidak cocok `webapp` | Aplikasi sampel mengharapkan nama repositori Amazon ECR cocok dengan parameter di. `projectName: webapp` `azure_pipeline.yml`Untuk mengatasi masalah ini, ganti nama repositori Amazon ECR Anda menjadi`webapp`, atau perbarui yang berikut ini:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 
| 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. `aws-auth ConfigMap`Untuk mengatasi masalah ini, periksa hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 

## Sumber daya terkait
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-resources"></a>

**AWS Blog**
+ [Cara federasi AWS dari Azure menggunakan DevOps OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/)

**Layanan AWS dokumentasi**
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)

**Dokumentasi Microsoft**
+ [Apa itu Azure? DevOps](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)
+ [Apa itu Azure Pipelines?](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops)