

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

# Tutorial: Terapkan ke Amazon EKS dengan CodePipeline
<a name="tutorials-eks-deploy"></a>

Tutorial ini membantu Anda membuat tindakan penerapan CodePipeline yang menyebarkan kode Anda ke cluster yang telah Anda konfigurasi di Amazon EKS.

Tindakan EKS mendukung kluster EKS publik dan swasta. Cluster pribadi adalah tipe yang direkomendasikan oleh EKS; Namun, kedua jenis didukung.

**catatan**  
Sebagai bagian dari pembuatan pipa di konsol, ember artefak S3 akan digunakan CodePipeline untuk artefak. (Ini berbeda dari bucket yang digunakan untuk aksi sumber S3.) Jika bucket artefak S3 berada di akun yang berbeda dari akun untuk pipeline Anda, pastikan bucket artefak S3 dimiliki oleh Akun AWS yang aman dan dapat diandalkan.

**catatan**  
Tindakan ini menggunakan CodeBuild komputasi CodePipeline terkelola untuk menjalankan perintah di lingkungan build. Menjalankan tindakan perintah akan dikenakan biaya terpisah di AWS CodeBuild.

**catatan**  
Tindakan `EKS` penerapan hanya tersedia untuk saluran pipa tipe V2.

## Prasyarat
<a name="tutorials-eks-deploy-prereqs"></a>

Ada beberapa sumber daya yang harus Anda miliki sebelum Anda dapat menggunakan tutorial ini untuk membuat pipeline CD Anda. Berikut adalah hal-hal yang Anda butuhkan untuk memulai:

**catatan**  
Semua sumber daya ini harus dibuat dalam AWS Wilayah yang sama.
+ Sebuah repositori kontrol sumber (tutorial ini menggunakan GitHub) di mana Anda akan menambahkan file sampel`deployment.yaml`.
+ Anda harus menggunakan peran CodePipeline layanan yang ada yang akan Anda perbarui dengan izin untuk tindakan ini menggunakan [Langkah 3: Perbarui kebijakan peran CodePipeline layanan di IAM](#tutorials-eks-deploy-role) di bawah ini. Izin yang diperlukan didasarkan pada jenis cluster yang Anda buat. Untuk informasi selengkapnya, lihat [Izin kebijakan peran layanan](action-reference-EKS.md#action-reference-EKS-service-role).
+ Gambar kerja dan tag repositori yang telah Anda dorong ke ECR atau repositori gambar Anda.

Setelah Anda memenuhi prasyarat ini, Anda dapat melanjutkan dengan tutorial dan membuat pipeline CD Anda.

## Langkah 1: (Opsional) Buat cluster di Amazon EKS
<a name="tutorials-eks-deploy-cluster"></a>

Anda dapat memilih untuk membuat cluster EKS dengan endpoint publik atau pribadi. 

Pada langkah-langkah berikut, Anda membuat klaster publik atau pribadi di EKS. Langkah ini opsional jika Anda telah membuat cluster Anda.

### Buat klaster publik di Amazon EKS
<a name="tutorials-eks-deploy-cluster-public"></a>

Pada langkah ini, Anda membuat cluster di EKS.

**Buat klaster publik**

1. Buka konsol EKS, lalu pilih **Create cluster**.

1. Dalam **Nama**, beri nama cluster Anda. Pilih **Berikutnya**.

1. Pilih **Buat**.

### Buat klaster pribadi di Amazon EKS
<a name="tutorials-eks-deploy-cluster-private"></a>

Jika Anda memilih untuk membuat cluster dengan titik akhir pribadi, pastikan untuk melampirkan subnet pribadi saja, dan pastikan mereka memiliki koneksi internet.

Ikuti lima sub-langkah berikutnya untuk membuat cluster dengan endpoint pribadi.

**Buat VPC di konsol**

1. Buka konsol VPC, lalu pilih Buat **VPC**.

1. Di bawah **pengaturan VPC, pilih** **VPC** dan lainnya.

1. Pilih untuk membuat satu subnet publik dan 4 pribadi. Pilih **Buat VPC**.

1. Pada halaman subnet, pilih **Private**. 

**Tentukan subnet pribadi di VPC Anda**

1. Arahkan ke VPC Anda dan pilih ID VPC untuk membuka halaman detail VPC.

1. Pada halaman detail VPC, pilih tab **Peta sumber daya**.

1. Lihat diagram dan catat subnet pribadi Anda. Subnet ditampilkan dengan label untuk menunjukkan status publik atau pribadi, dan setiap subnet dipetakan ke tabel rute.  
![\[\]](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/eks-deploy-subnets.png)

   Perhatikan bahwa klaster pribadi akan memiliki semua subnet pribadi.

1. Buat subnet publik untuk meng-host gateway NAT. Anda dapat melampirkan hanya satu gateway internet untuk satu VPC pada suatu waktu.

**Buat gateway NAT di subnet publik**

1. Di subnet publik, buat gateway NAT. Arahkan ke konsol VPC, lalu pilih gateway **Internet**. Pilih **Buat gateway internet**.

1. Di Nama, masukkan nama untuk gateway internet Anda. Pilih **Buat gateway internet**.

Perbarui tabel rute untuk subnet pribadi untuk mengarahkan lalu lintas ke gateway NAT.

**Tambahkan gateway NAT ke tabel rute Anda untuk subnet pribadi Anda**

1. **Arahkan ke konsol VPC, lalu pilih Subnet.**

1. Untuk setiap subnet pribadi, pilih dan kemudian pilih tabel rute untuk subnet tersebut di halaman detail, Pilih **Edit tabel rute**. 

1. Perbarui tabel rute untuk subnet pribadi untuk mengarahkan lalu lintas internet ke gateway NAT. Pilih **Tambahkan rute**. Pilih **gateway NAT** dari opsi yang akan ditambahkan. Pilih gateway internet yang Anda buat.

1. Untuk subnet publik, buat tabel rute kustom. Verifikasi bahwa daftar kontrol akses jaringan (ACL) untuk subnet publik Anda memungkinkan lalu lintas masuk dari subnet pribadi.

1. Pilih **Simpan perubahan**.

Pada langkah ini, Anda membuat cluster di EKS.

**Buat klaster pribadi**

1. Buka konsol EKS, lalu pilih **Create cluster**.

1. Dalam **Nama**, beri nama cluster Anda. Pilih **Berikutnya**.

1. Tentukan VPC Anda dan informasi konfigurasi lainnya. Pilih **Buat**.

Kluster EKS Anda dapat berupa klaster publik atau pribadi. Langkah ini untuk cluster yang HANYA memiliki titik akhir pribadi. Pastikan bahwa jika cluster Anda bersifat pribadi.

## Langkah 2: Konfigurasikan klaster pribadi Anda di Amazon EKS
<a name="tutorials-eks-deploy-cluster-private-configure"></a>

Langkah ini hanya berlaku jika Anda telah membuat cluster pribadi. Langkah ini untuk cluster yang HANYA memiliki titik akhir pribadi. 

**Konfigurasikan klaster Anda**

1. Lampirkan subnet pribadi hanya di cluster EKS di bawah tab **Networking**. Pasang subnet pribadi yang ditangkap di **Tentukan subnet pribadi di bagian VPC Anda di** bawah. [Langkah 1: (Opsional) Buat cluster di Amazon EKS](#tutorials-eks-deploy-cluster)

1. Pastikan subnet pribadi memiliki akses ke internet karena CodePipeline menyimpan dan mengambil artefak dari bucket artefak S3 untuk pipeline Anda.

## Langkah 3: Perbarui kebijakan peran CodePipeline layanan di IAM
<a name="tutorials-eks-deploy-role"></a>

Pada langkah ini, Anda akan memperbarui peran CodePipeline layanan yang ada, seperti`cp-service-role`, dengan izin yang diperlukan oleh CodePipeline untuk terhubung dengan cluster Anda. Jika Anda tidak memiliki peran yang ada, buat yang baru.

Perbarui peran CodePipeline layanan Anda dengan langkah-langkah berikut.

**Untuk memperbarui kebijakan peran CodePipeline layanan**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

1. Dari dasbor konsol, pilih **Peran**.

1. Cari peran CodePipeline layanan Anda, seperti`cp-service-role`.

1. Tambahkan kebijakan inline baru.

1. Di **editor Kebijakan**, masukkan yang berikut ini.
   + Untuk klaster publik, tambahkan izin berikut.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
     
         "Statement": [
             {
                 "Sid": "EksClusterPolicy",
                 "Effect": "Allow",
                 "Action": "eks:DescribeCluster",
                 "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster"
             },
             {
                 "Sid": "EksVpcClusterPolicy",
                 "Effect": "Allow",
                 "Action": [
                     "ec2:DescribeDhcpOptions",
                     "ec2:DescribeNetworkInterfaces",
                     "ec2:DescribeRouteTables",
                     "ec2:DescribeSubnets",
                     "ec2:DescribeSecurityGroups",
                     "ec2:DescribeVpcs"
                 ],
                 "Resource": [
                     "*"
                 ]
             }
         ]
     }
     ```

------
   + Untuk klaster pribadi, tambahkan izin berikut. Cluster pribadi akan memerlukan izin tambahan untuk VPC Anda, jika berlaku.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
     
         "Statement": [
             {
                 "Sid": "EksClusterPolicy",
                 "Effect": "Allow",
                 "Action": "eks:DescribeCluster",
                 "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster"
             },
             {
                 "Sid": "EksVpcClusterPolicy",
                 "Effect": "Allow",
                 "Action": [
                     "ec2:DescribeDhcpOptions",
                     "ec2:DescribeNetworkInterfaces",
                     "ec2:DescribeRouteTables",
                     "ec2:DescribeSubnets",
                     "ec2:DescribeSecurityGroups",
                     "ec2:DescribeVpcs"
                 ],
                 "Resource": [
                     "*"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:CreateNetworkInterface",
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIfExists": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:CreateNetworkInterfacePermission",
                 "Resource": "*",
                 "Condition": {
                     "ArnEquals": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:DeleteNetworkInterface",
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIfExists": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             }
         ]
     }
     ```

------

1. Pilih **Perbarui kebijakan**.

## Langkah 4: Buat entri akses untuk peran CodePipeline layanan
<a name="tutorials-eks-deploy-access-entry"></a>

Pada langkah ini, Anda membuat entri akses di klaster yang akan menambahkan peran CodePipeline layanan yang diperbarui di Langkah 3, bersama dengan kebijakan akses terkelola.

1. Buka konsol EKS dan arahkan ke cluster Anda.

1. Pilih tab **Access**.

1. Di bawah **entri akses IAM, pilih Buat entri** **akses**.

1. Di **ARN utama IAM**, masukkan peran yang baru saja Anda perbarui untuk tindakan tersebut, seperti. `cp-service-role` Pilih **Berikutnya**.

1. Pada **Langkah 2: Tambahkan halaman kebijakan akses**, di **Nama kebijakan**, pilih kebijakan terkelola untuk akses, misalnya`AmazonEKSClusterAdminPolicy`. Pilih **Tambahkan kebijakan**. Pilih **Berikutnya**.
**catatan**  
Ini adalah kebijakan yang digunakan CodePipeline tindakan untuk berbicara dengan Kubernetes. Sebagai praktik terbaik, untuk mengurangi izin dalam kebijakan Anda dengan hak istimewa paling sedikit daripada kebijakan administratif, lampirkan kebijakan khusus sebagai gantinya.

1. Pada halaman ulasan, pilih **Buat**.

## Langkah 5: Buat repositori sumber dan tambahkan file konfigurasi `helm chart`
<a name="tutorials-eks-deploy-source"></a>

Pada langkah ini, Anda membuat file konfigurasi yang sesuai untuk tindakan Anda (file manifes Kubernetes atau bagan Helm) dan menyimpan file konfigurasi di repositori sumber Anda. Gunakan file yang sesuai untuk konfigurasi Anda. Untuk informasi lebih lanjut, lihat [https://kubernetes. ](https://kubernetes.io/docs/reference/kubectl/quick-reference/)io/docs/reference/kubectl/quick[-referensi/ atau https://helm. sh/docs/topics/charts](https://helm.sh/docs/topics/charts/)/.
+ Untuk Kubernetes, gunakan file manifes.
+ Untuk Helm, gunakan bagan Helm.

1. Buat atau gunakan GitHub repositori yang ada.

1. Buat struktur baru di repositori Anda untuk file bagan helm Anda seperti yang ditunjukkan pada contoh di bawah ini.

   ```
   mychart
   |-- Chart.yaml
   |-- charts
   |-- templates
   |   |-- NOTES.txt
   |   |-- _helpers.tpl
   |   |-- deployment.yaml
   |   |-- ingress.yaml
   |   `-- service.yaml
   `-- values.yaml
   ```

1. Tambahkan file ke tingkat root repositori Anda.

## Langkah 6: Membuat pipeline Anda
<a name="tutorials-eks-deploy-pipeline"></a>

Gunakan CodePipeline wizard untuk membuat tahapan pipeline dan menghubungkan repositori sumber Anda.

**Untuk membuat alur Anda**

1. Buka CodePipeline konsol di [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Pada halaman **Selamat Datang**, halaman **Memulai**, atau halaman **Pipelines**, pilih **Buat pipeline**.

1. Pada **Langkah 1: Pilih halaman opsi pembuatan**, di bawah **Opsi pembuatan**, pilih opsi **Build custom pipeline**. Pilih **Berikutnya**.

1. Pada **Langkah 2: Pilih pengaturan pipeline**, dalam **nama Pipeline**, masukkan**MyEKSPipeline**.

1. CodePipeline menyediakan pipa tipe V1 dan V2, yang berbeda dalam karakteristik dan harga. Jenis V2 adalah satu-satunya jenis yang dapat Anda pilih di konsol. Untuk informasi selengkapnya, lihat [jenis pipa](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Untuk informasi tentang harga CodePipeline, lihat [Harga](https://aws.amazon.com/codepipeline/pricing/).

1. Di **peran Layanan**, pilih peran layanan yang Anda perbarui di Langkah 3.

1. **Biarkan pengaturan di bawah **Pengaturan lanjutan** pada defaultnya, lalu pilih Berikutnya.**

1. Pada **Langkah 3: Tambahkan halaman tahap sumber**, untuk **penyedia Sumber**, pilih **untuk membuat koneksi ke GitHub repositori Anda**.

1. Pada **Langkah 4: Tambahkan halaman tahap build**, pilih **Lewati**.

1. Pada **Langkah 5: Tambahkan halaman tahap penerapan**, pilih **Amazon EKS**.  
![\[Deploy configuration form with Helm selected, showing fields for release name and chart location.\]](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/eks-action-example.png)

   1. Di bawah **Menyebarkan jenis konfigurasi**, pilih **Helm**.

   1. Di **lokasi bagan Helm**, masukkan nama rilis, seperti`my-release`. Untuk **lokasi bagan Helm**, masukkan jalur untuk file bagan helm Anda, seperti. `mychart`

   1. Pilih **Berikutnya**.

1. Pada halaman **Langkah 6: Tinjau**, tinjau konfigurasi pipeline Anda dan pilih **Buat pipeline** untuk membuat pipeline.  
![\[\]](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/eks-deploy-pipeline.png)

1. Setelah pipeline berhasil berjalan, pilih **Lihat detail** untuk melihat log pada tindakan untuk melihat output tindakan.