Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Menyebarkan aplikasi ke Amazon EKS
Dalam tutorial ini, Anda mempelajari cara menerapkan aplikasi container ke Amazon Elastic Kubernetes Service menggunakan alur kerja EKS Amazon, CodeCatalyst Amazon, dan beberapa layanan lainnya. AWS Aplikasi yang digunakan adalah 'Halo, Dunia! 'sederhana situs web yang dibangun di atas gambar Docker server web Apache. Tutorial memandu Anda melalui pekerjaan persiapan yang diperlukan seperti menyiapkan mesin pengembangan dan EKS kluster Amazon, dan kemudian menjelaskan cara membuat alur kerja untuk membangun aplikasi dan menerapkannya ke dalam cluster.
Setelah penerapan awal selesai, tutorial menginstruksikan Anda untuk membuat perubahan pada sumber aplikasi Anda. Perubahan ini menyebabkan image Docker baru dibangun dan didorong ke repositori gambar Docker Anda dengan informasi revisi baru. Revisi baru gambar Docker kemudian diterapkan ke Amazon. EKS
Tip
Alih-alih mengerjakan tutorial ini, Anda dapat menggunakan cetak biru yang melakukan EKS pengaturan Amazon lengkap untuk Anda. Anda harus menggunakan cetak biru EKSApp Deployment. Untuk informasi selengkapnya, lihat Membuat proyek dengan cetak biru.
Topik
- Prasyarat
- Langkah 1: Siapkan mesin pengembangan Anda
- Langkah 2: Buat EKS cluster Amazon
- Langkah 3: Buat repositori ECR gambar Amazon
- Langkah 4: Tambahkan file sumber
- Langkah 5: Buat AWS peran
- Langkah 6: Tambahkan AWS peran CodeCatalyst
- Langkah 7: Perbarui ConfigMap
- Langkah 8: Buat dan jalankan alur kerja
- Langkah 9: Buat perubahan pada file sumber Anda
- Bersihkan
Prasyarat
Sebelum Anda memulai tutorial ini:
-
Anda memerlukan CodeCatalyst ruang Amazon dengan AWS akun yang terhubung. Untuk informasi selengkapnya, lihat Menciptakan ruang.
-
Di ruang Anda, Anda memerlukan proyek kosong yang disebut:
codecatalyst-eks-project
Gunakan opsi Mulai dari awal untuk membuat proyek ini.
Untuk informasi selengkapnya, lihat Membuat proyek kosong di Amazon CodeCatalyst.
-
Dalam proyek Anda, Anda memerlukan repositori CodeCatalyst sumber kosong yang disebut:
codecatalyst-eks-source-repository
Untuk informasi selengkapnya, lihat Simpan dan berkolaborasi pada kode dengan repositori sumber di CodeCatalyst.
-
Dalam proyek Anda, Anda memerlukan lingkungan CodeCatalyst CI/CD (bukan Lingkungan Dev) yang disebut:
codecatalyst-eks-environment
Konfigurasikan lingkungan ini sebagai berikut:
-
Pilih jenis apa pun, seperti Non-produksi.
-
Hubungkan AWS akun Anda ke sana.
-
Untuk IAMperan Default, pilih peran apa pun. Anda akan menentukan peran yang berbeda nanti.
Untuk informasi selengkapnya, lihat Menyebarkan ke Akun AWS dan VPCs.
-
Langkah 1: Siapkan mesin pengembangan Anda
Langkah pertama dalam tutorial ini adalah mengkonfigurasi mesin pengembangan dengan beberapa alat yang akan Anda gunakan sepanjang tutorial ini. Alat-alat ini adalah:
-
eksctl
utilitas - untuk pembuatan cluster -
kubectl
utilitas — prasyarat untukeksctl
-
yang AWS CLI — juga merupakan prasyarat untuk
eksctl
Anda dapat menginstal alat ini di mesin pengembangan yang ada jika Anda memilikinya, atau Anda dapat menggunakan Lingkungan CodeCatalyst Dev, yang berbasis Cloud. Manfaat dari CodeCatalyst Dev Environment adalah mudah untuk berputar dan turun, dan terintegrasi dengan CodeCatalyst layanan lain, memungkinkan Anda untuk bekerja melalui tutorial ini dalam langkah-langkah yang lebih sedikit.
Tutorial ini mengasumsikan Anda akan menggunakan CodeCatalyst Dev Environment.
Petunjuk berikut menjelaskan cara cepat untuk meluncurkan Lingkungan CodeCatalyst Dev dan mengonfigurasinya dengan alat yang diperlukan, tetapi jika Anda menginginkan instruksi terperinci, lihat:
-
Membuat Lingkungan Dev dalam panduan ini.
-
Menginstal kubectl di Panduan Pengguna Amazon EKS.
-
Menginstal atau memutakhirkan eksctl di Panduan Pengguna Amazon. EKS
-
Menginstal atau memperbarui versi terbaru dari AWS CLI dalam Panduan AWS Command Line Interface Pengguna.
Untuk meluncurkan Lingkungan Dev
Buka CodeCatalyst konsol di https://codecatalyst.aws/
. -
Arahkan ke proyek Anda,
codecatalyst-eks-project
. -
Di panel navigasi, pilih Kode, lalu pilih Repositori sumber.
-
Pilih nama repositori sumber Anda,.
codecatalyst-eks-source-repository
-
Di dekat bagian atas pilih Create Dev Environment, lalu pilih AWS Cloud9 (di browser).
-
Pastikan bahwa Work di cabang dan main yang ada dipilih, lalu pilih Buat.
Lingkungan Dev Anda diluncurkan di tab browser baru, dan repositori (
codecatalyst-eks-source-repository
) Anda dikloning ke dalamnya.
Untuk menginstal dan mengkonfigurasi kubectl
-
Di terminal Dev Environment, masukkan:
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl
-
Masukkan:
chmod +x ./kubectl
-
Masukkan:
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
-
Masukkan:
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
-
Masukkan:
kubectl version --short --client
-
Periksa apakah ada versi yang muncul.
Anda sekarang telah menginstal
kubectl
.
Untuk menginstal dan mengkonfigurasi eksctl
catatan
eksctl
tidak sepenuhnya diperlukan karena Anda dapat menggunakannya kubectl
sebagai gantinya. Namun, eksctl
memiliki manfaat mengotomatisasi banyak konfigurasi cluster, dan oleh karena itu alat yang direkomendasikan untuk tutorial ini.
-
Di terminal Dev Environment, masukkan:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
-
Masukkan:
sudo cp /tmp/eksctl /usr/bin
-
Masukkan:
eksctl version
-
Periksa apakah ada versi yang muncul.
Anda sekarang telah menginstal
eksctl
.
Untuk memverifikasi bahwa AWS CLI sudah diinstal
-
Di terminal Dev Environment, masukkan:
aws --version
-
Periksa apakah versi muncul untuk memverifikasi bahwa AWS CLI sudah diinstal.
Lengkapi prosedur yang tersisa untuk mengkonfigurasi AWS CLI dengan izin yang diperlukan untuk mengakses AWS.
Untuk mengkonfigurasi AWS CLI
Anda harus mengonfigurasi tombol akses AWS CLI dengan dan token sesi untuk memberikannya akses ke AWS layanan. Petunjuk berikut menyediakan cara cepat untuk mengonfigurasi kunci dan token, tetapi jika Anda menginginkan instruksi terperinci, lihat Mengonfigurasi AWS CLI di Panduan AWS Command Line Interface Pengguna.
-
Buat pengguna Pusat IAM Identitas, sebagai berikut:
Masuk ke AWS Management Console dan buka AWS IAM Identity Center konsol di https://console.aws.amazon.com/singlesignon/
. (Anda mungkin perlu memilih Aktifkan jika Anda belum pernah masuk ke Pusat IAM Identitas sebelumnya.)
catatan
Pastikan Anda masuk menggunakan Akun AWS yang terhubung ke CodeCatalyst ruang Anda. Anda dapat memverifikasi akun mana yang terhubung dengan menavigasi ke ruang Anda dan memilih tab AWSakun. Untuk informasi selengkapnya, lihat Menciptakan ruang.
-
Pada panel navigasi, silakan pilih Pengguna, lalu pilih Tambahkan pengguna.
-
Di Nama Pengguna, masukkan:
codecatalyst-eks-user
-
Di bawah Kata Sandi, pilih Buat kata sandi satu kali yang dapat Anda bagikan dengan pengguna ini.
-
Di Alamat email dan Konfirmasi alamat email, masukkan alamat email yang belum ada di Pusat IAM Identitas.
-
Di Nama depan, masukkan:
codecatalyst-eks-user
-
Di Nama belakang, masukkan:
codecatalyst-eks-user
-
Di Nama tampilan, simpan:
codecatalyst-eks-user codecatalyst-eks-user
-
Pilih Berikutnya.
-
Pada halaman Tambahkan pengguna ke grup, pilih Berikutnya.
-
Pada halaman Tinjau dan tambahkan pengguna, tinjau informasi dan pilih Tambah pengguna.
Kotak dialog kata sandi satu kali muncul.
-
Pilih Salin lalu tempel informasi masuk ke file teks. Informasi masuk terdiri dari portal AWS akses, nama penggunaURL, dan kata sandi satu kali.
-
Pilih Tutup.
-
Buat set izin, sebagai berikut:
-
Di panel navigasi, pilih Set izin, lalu pilih Buat set izin.
-
Pilih Set izin yang telah ditentukan sebelumnya dan kemudian pilih AdministratorAccess. Kebijakan ini memberikan izin penuh untuk semua Layanan AWS.
-
Pilih Berikutnya.
-
Dalam nama set Izin, hapus
AdministratorAccess
dan masukkan:codecatalyst-eks-permission-set
-
Pilih Berikutnya.
-
Pada halaman Tinjau dan buat, tinjau informasi dan pilih Buat.
-
-
Tetapkan izin yang disetel ke
codecatalyst-eks-user
, sebagai berikut:-
Di panel navigasi, pilih Akun AWS, lalu pilih kotak centang di Akun AWS samping tempat Anda masuk saat ini.
-
Pilih Tetapkan pengguna atau grup.
-
Pilih tab Pengguna.
-
Pilih kotak centang di sebelah
codecatalyst-eks-user
. -
Pilih Berikutnya.
-
Pilih kotak centang di sebelah
codecatalyst-eks-permission-set
. -
Pilih Berikutnya.
-
Tinjau informasi dan pilih Kirim.
Anda sekarang telah menetapkan
codecatalyst-eks-user
dancodecatalyst-eks-permission-set
untuk Anda Akun AWS, mengikat mereka bersama-sama.
-
-
Dapatkan
codecatalyst-eks-user
kunci akses dan token sesi, sebagai berikut:-
Pastikan Anda memiliki portal AWS akses dan nama pengguna URL dan kata sandi satu kali untuk
codecatalyst-eks-user
. Anda seharusnya menyalin informasi ini ke editor teks sebelumnya.catatan
Jika Anda tidak memiliki informasi ini, buka halaman
codecatalyst-eks-user
detail di Pusat IAM Identitas, pilih Atur ulang kata sandi, Hasilkan kata sandi satu kali [...] , dan Atur ulang kata sandi lagi untuk menampilkan informasi di layar. -
Keluar dari AWS.
-
Tempelkan portal AWS akses URL ke bilah alamat browser Anda.
-
Masuk dengan:
-
Nama Pengguna:
codecatalyst-eks-user
-
Kata Sandi:
one-time-password
-
-
Di Tetapkan kata sandi baru, masukkan kata sandi baru dan pilih Atur kata sandi baru.
Sebuah Akun AWSkotak muncul di layar.
-
Pilih Akun AWS, lalu pilih nama yang Akun AWS Anda tetapkan
codecatalyst-eks-user
pengguna dan set izin. -
Di samping
codecatalyst-eks-permission-set
, pilih Baris perintah atau akses terprogram. -
Salin perintah di tengah halaman. Mereka terlihat mirip dengan yang berikut:
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="
session-token
"... dimana
session-token
adalah string acak panjang.
-
-
Tambahkan kunci akses dan token sesi ke AWS CLI, sebagai berikut:
-
Kembali ke Lingkungan CodeCatalyst Pengembang Anda.
-
Pada prompt terminal, tempel perintah yang Anda salin. Tekan Enter.
Anda sekarang telah mengonfigurasi tombol akses AWS CLI dengan dan token sesi. Anda sekarang dapat menggunakan AWS CLI untuk menyelesaikan tugas-tugas yang diperlukan oleh tutorial ini.
penting
Jika sewaktu-waktu selama tutorial ini Anda melihat pesan yang mirip dengan:
Unable to locate credentials. You can configure credentials by running "aws configure".
Atau:
ExpiredToken: The security token included in the request is expired
... itu karena AWS CLI sesi Anda telah kedaluwarsa. Dalam hal ini, jangan jalankan
aws configure
perintah. Sebagai gantinya, gunakan instruksi pada langkah 4 dari prosedur ini yang dimulai denganObtain codecatalyst-eks-user's access key and session token
untuk menyegarkan sesi Anda.
-
Langkah 2: Buat EKS cluster Amazon
Di bagian ini, Anda membuat cluster di AmazonEKS. Petunjuk di bawah ini menjelaskan cara cepat untuk membuat cluster menggunakaneksctl
, tetapi jika Anda ingin petunjuk rinci, lihat:
-
Memulai dengan eksctl di Panduan Pengguna Amazon EKS
atau
-
Memulai konsol dan AWS CLI di Panduan EKS Pengguna Amazon (topik ini memberikan
kubectl
instruksi untuk membuat cluster)
catatan
Cluster pribadi tidak didukung oleh CodeCatalyst integrasi dengan AmazonEKS.
Sebelum Anda memulai
Pastikan Anda telah menyelesaikan tugas-tugas berikut di mesin pengembangan Anda:
-
Menginstal
eksctl
utilitas. -
Menginstal
kubectl
utilitas. -
Menginstal AWS CLI dan mengkonfigurasinya dengan kunci akses dan token sesi.
Untuk informasi tentang cara menyelesaikan tugas-tugas ini, lihatLangkah 1: Siapkan mesin pengembangan Anda.
Untuk membuat klaster DB
penting
Jangan gunakan antarmuka pengguna EKS layanan Amazon untuk membuat klaster karena klaster tidak akan dikonfigurasi dengan benar. Gunakan eksctl
utilitas, seperti yang dijelaskan dalam langkah-langkah berikut.
-
Pergi ke Lingkungan Pengembang Anda.
-
Buat cluster dan node:
eksctl create cluster --name
codecatalyst-eks-cluster
--regionus-west-2
Di mana:
-
codecatalyst-eks-cluster
diganti dengan nama yang ingin Anda berikan pada cluster Anda. -
us-west-2
diganti dengan wilayah Anda.
Setelah 10-20 menit, pesan yang mirip dengan yang berikut ini muncul:
EKS cluster "codecatalyst-eks-cluster" in "us-west-2" region is ready
catatan
Anda akan melihat beberapa
waiting for CloudFormation stack
pesan saat AWS membuat cluster Anda. Ini yang diharapkan. -
-
Verifikasi bahwa klaster Anda berhasil dibuat:
kubectl cluster-info
Anda akan melihat pesan yang mirip dengan berikut ini, yang menunjukkan pembuatan cluster yang berhasil:
Kubernetes master is running at https://
long-string
.gr7.us-west-2.eks.amazonaws.com CoreDNS is running at https://long-string
.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Langkah 3: Buat repositori ECR gambar Amazon
Di bagian ini, Anda membuat repositori gambar pribadi di Amazon Elastic Container Registry (AmazonECR). Repositori ini menyimpan gambar Docker untuk tutorial.
Untuk informasi selengkapnya tentang AmazonECR, lihat Panduan Pengguna Amazon Elastic Container Registry.
Untuk membuat repositori gambar di Amazon ECR
-
Pergi ke Lingkungan Pengembang Anda.
-
Buat repositori kosong di Amazon: ECR
aws ecr create-repository --repository-name
codecatalyst-eks-image-repo
Ganti
codecatalyst-eks-image-repo
dengan nama yang ingin Anda berikan pada ECR repositori Amazon.Tutorial ini mengasumsikan Anda menamai
codecatalyst-eks-image-repo
repositori Anda. -
Tampilkan detail ECR repositori Amazon:
aws ecr describe-repositories \ --repository-names codecatalyst-eks-image-repo
-
Perhatikan
“repositoryUri”:
nilainya, misalnya,111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
.Anda membutuhkannya nanti saat menambahkan repositori ke alur kerja Anda.
Langkah 4: Tambahkan file sumber
Di bagian ini, Anda menambahkan file sumber aplikasi ke repositori sumber Anda ()codecatalyst-eks-source-repository
. Mereka terdiri dari:
-
Sebuah
index.html
file - Menampilkan 'Hello, World! ' pesan di browser. -
A Dockerfile - Menjelaskan gambar dasar yang akan digunakan untuk image Docker Anda dan perintah Docker untuk menerapkannya.
-
deployment.yaml
File — Manifes Kubernetes yang mendefinisikan layanan dan penerapan Kubernetes.
Struktur folder adalah sebagai berikut:
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
index.html
index.html
File tersebut menampilkan 'Hello, World! ' pesan di browser.
Untuk menambahkan file index.html
-
Pergi ke Lingkungan Pengembang Anda.
-
Di
codecatalyst-eks-source-repository
, buat folder bernamapublic-html
. -
Di
/public-html
, buat file yang disebutindex.html
dengan konten berikut:<html> <head> <title>Hello World</title> <style> body { background-color: black; text-align: center; color: white; font-family: Arial, Helvetica, sans-serif; } </style> </head> <body> <h1>Hello, World!</h1> </body> </html>
-
Pada prompt terminal, masukkan:
cd /projects/codecatalyst-eks-source-repository
-
Tambahkan, komit, dan dorong:
git add . git commit -m "add public-html/index.html" git push
Ditambahkan ke repositori Anda dalam folder.
index.html
public-html
Dockerfile
Dockerfile menjelaskan image Docker dasar yang akan digunakan dan perintah Docker untuk diterapkan padanya. Untuk informasi selengkapnya tentang Dockerfile, lihat Referensi Dockerfile
Dockerfile yang ditentukan di sini menunjukkan untuk menggunakan image dasar Apache 2.4 (). httpd
Ini juga mencakup instruksi untuk menyalin file sumber yang dipanggil index.html
ke folder di server Apache yang melayani halaman web. EXPOSE
Instruksi di Dockerfile memberi tahu Docker bahwa wadah mendengarkan pada port 80.
Untuk menambahkan Dockerfile
-
Di
codecatalyst-eks-source-repository
, buat file yang disebutDockerfile
dengan konten berikut:FROM httpd:2.4 COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html EXPOSE 80
Jangan sertakan ekstensi file.
penting
Dockerfile harus berada di folder root repositori Anda.
Docker build
Perintah alur kerja mengharapkannya ada di sana. -
Tambahkan, komit, dan dorong:
git add . git commit -m "add Dockerfile" git push
Dockerfile ditambahkan ke repositori Anda.
deployment.yaml
Di bagian ini, Anda menambahkan deployment.yaml
file ke repositori Anda. deployment.yaml
File ini adalah manifes Kubernetes yang mendefinisikan dua tipe atau jenis resource Kubernetes untuk dijalankan: sebuah 'service' dan 'deployment'.
-
'Layanan' menyebarkan penyeimbang beban ke Amazon. EC2 Load balancer memberi Anda port publik URL dan standar yang menghadap Internet (port 80) yang dapat Anda gunakan untuk menelusuri 'Hello, World! ' aplikasi.
-
'Deployment 'menyebarkan tiga pod, dan setiap pod akan berisi kontainer Docker dengan 'Hello, World!' aplikasi. Ketiga pod tersebut di-deploy ke node yang dibuat saat Anda membuat cluster.
Manifes dalam tutorial ini singkat; namun, manifes dapat mencakup sejumlah tipe sumber daya Kubernetes, seperti pod, job, ingresses, dan kebijakan jaringan. Selanjutnya, Anda dapat menggunakan beberapa file manifes jika penerapan Anda rumit.
Untuk menambahkan berkas deployment.yaml
-
Di
codecatalyst-eks-source-repository
, buat folder bernamaKubernetes
. -
Di
/Kubernetes
, buat file yang disebutdeployment.yaml
dengan konten berikut:apiVersion: v1 kind: Service metadata: name: my-service labels: app: my-app spec: type: LoadBalancer selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: codecatalyst-eks-container # The $REPOSITORY_URI and $IMAGE_TAG placeholders will be replaced by actual values supplied by the build action in your workflow image: $REPOSITORY_URI:$IMAGE_TAG ports: - containerPort: 80
-
Tambahkan, komit, dan dorong:
git add . git commit -m "add Kubernetes/deployment.yaml" git push
deployment.yaml
File ditambahkan ke repositori Anda dalam folder bernama.Kubernetes
Anda sekarang telah menambahkan semua file sumber Anda.
Luangkan waktu sejenak untuk memeriksa ulang pekerjaan Anda dan pastikan Anda menempatkan semua file di folder yang benar. Struktur folder adalah sebagai berikut:
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
Langkah 5: Buat AWS peran
Di bagian ini, Anda membuat AWS IAM peran yang dibutuhkan CodeCatalyst alur kerja Anda agar berfungsi. Peran ini adalah:
-
Peran build - Memberikan izin tindakan CodeCatalyst build (dalam alur kerja) untuk mengakses AWS akun Anda dan menulis ke Amazon dan ECR Amazon. EC2
-
Menerapkan peran — Memberikan izin tindakan klaster CodeCatalyst Deploy ke Kubernetes (dalam alur kerja) untuk mengakses akun Anda dan Amazon. AWS EKS
Untuk informasi selengkapnya tentang IAM peran, lihat IAMperan di Panduan AWS Identity and Access Management Pengguna.
catatan
Untuk menghemat waktu, Anda dapat membuat satu peran, yang disebut CodeCatalystWorkflowDevelopmentRole-
peran, alih-alih dua peran yang tercantum sebelumnya. Untuk informasi selengkapnya, lihat Membuat CodeCatalystWorkflowDevelopmentRole-spaceNameperan untuk akun dan ruang Anda. Pahami bahwa spaceName
CodeCatalystWorkflowDevelopmentRole-
peran tersebut memiliki izin yang sangat luas yang dapat menimbulkan risiko keamanan. Kami menyarankan Anda hanya menggunakan peran ini dalam tutorial dan skenario di mana keamanan kurang menjadi perhatian. Tutorial ini mengasumsikan Anda membuat dua peran yang tercantum sebelumnya.spaceName
Untuk membuat peran build dan deploy, selesaikan rangkaian prosedur berikut.
1. Untuk membuat kebijakan kepercayaan untuk kedua peran
-
Pergi ke Lingkungan Pengembang Anda.
-
Di
Cloud9-
direktori, buat file yang disebutlong-string
codecatalyst-eks-trust-policy.json
dengan konten berikut:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
2. Untuk membuat kebijakan build untuk peran build
-
Di
Cloud9-
direktori, buat file yang disebutlong-string
codecatalyst-eks-build-policy.json
dengan konten berikut:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*", "ec2:*" ], "Resource": "*" } ] }
catatan
Pertama kali peran digunakan untuk menjalankan tindakan alur kerja, gunakan wildcard dalam pernyataan kebijakan sumber daya dan kemudian cakup kebijakan dengan nama sumber daya setelah tersedia.
"Resource": "*"
3. Untuk membuat kebijakan penerapan untuk peran penerapan
-
Di
Cloud9-
direktori, buat file yang disebutlong-string
codecatalyst-eks-deploy-policy.json
dengan konten berikut:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ] }
catatan
Pertama kali peran digunakan untuk menjalankan tindakan alur kerja, gunakan wildcard dalam pernyataan kebijakan sumber daya dan kemudian cakup kebijakan dengan nama sumber daya setelah tersedia.
"Resource": "*"
Anda sekarang telah menambahkan tiga dokumen kebijakan ke Lingkungan Pengembang Anda. Struktur direktori Anda sekarang terlihat seperti ini:
|— Cloud9-
long-string
|— .c9 |— codecatalyst-eks-source-repository |— Kubernetes |— public-html |— Dockerfile codecatalyst-eks-build-policy.json codecatalyst-eks-deploy-policy.json codecatalyst-eks-trust-policy.json
4. Untuk menambahkan kebijakan build ke AWS
-
Di terminal Dev Environment, masukkan:
cd /projects
-
Masukkan:
aws iam create-policy \ --policy-name codecatalyst-eks-build-policy \ --policy-document file://codecatalyst-eks-build-policy.json
-
Tekan Enter.
-
Dalam output perintah, perhatikan
"arn":
nilainya, misalnya,arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
. Kau butuh ini ARN nanti.
5. Untuk menambahkan kebijakan penerapan ke AWS
-
Masukkan:
aws iam create-policy \ --policy-name codecatalyst-eks-deploy-policy \ --policy-document file://codecatalyst-eks-deploy-policy.json
-
Tekan Enter.
-
Dalam output perintah, perhatikan
"arn":
nilai kebijakan penerapan, misalnya,arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
. Kau butuh ini ARN nanti.
6. Untuk membuat peran build
-
Masukkan:
aws iam create-role \ --role-name codecatalyst-eks-build-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Tekan Enter.
-
Masukkan:
aws iam attach-role-policy \ --role-name codecatalyst-eks-build-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
Di mana
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
diganti dengan kebijakan build ARN yang Anda sebutkan sebelumnya. -
Tekan Enter.
-
Pada prompt terminal, masukkan:
aws iam get-role \ --role-name codecatalyst-eks-build-role
-
Tekan Enter.
-
Perhatikan
"Arn":
nilai peran, misalnya,arn:aws:iam::111122223333:role/codecatalyst-eks-build-role
. Kau butuh ini ARN nanti.
7. Untuk membuat peran penerapan
-
Masukkan:
aws iam create-role \ --role-name codecatalyst-eks-deploy-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Tekan Enter.
-
Masukkan:
aws iam attach-role-policy \ --role-name codecatalyst-eks-deploy-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
Di mana
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
diganti dengan kebijakan ARN penerapan yang Anda sebutkan sebelumnya. -
Tekan Enter.
-
Masukkan:
aws iam get-role \ --role-name codecatalyst-eks-deploy-role
-
Tekan Enter.
-
Perhatikan
"Arn":
nilai peran, misalnya,arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
. Kau butuh ini ARN nanti.
Anda sekarang telah membuat peran build dan deploy dan mencatatnyaARNs.
Langkah 6: Tambahkan AWS peran CodeCatalyst
Pada langkah ini, Anda menambahkan build role (codecatalyst-eks-build-role
) dan deploy role (codecatalyst-eks-deploy-role
) ke Akun AWS yang Anda sambungkan ke ruang Anda. Ini membuat peran tersedia untuk digunakan dalam alur kerja Anda.
Untuk menambahkan peran build dan deploy ke Akun AWS
-
Di CodeCatalyst konsol, navigasikan ke ruang Anda.
-
Di bagian atas, pilih Pengaturan.
-
Di panel navigasi, pilih AWS akun. Daftar akun muncul.
-
Di kolom nama CodeCatalyst tampilan Amazon, salin nama tampilan Akun AWS tempat Anda membuat peran build dan deploy. (Bisa jadi angka.) Anda akan membutuhkan nilai ini nanti, saat membuat alur kerja Anda.
-
Pilih nama tampilan.
-
Pilih Kelola peran dari konsol AWS manajemen.
Halaman CodeCatalyst ruang Tambahkan IAM peran ke Amazon muncul. Anda mungkin perlu masuk untuk mengakses halaman.
-
Pilih Tambahkan peran yang sudah Anda buat IAM.
Daftar drop-down muncul. Daftar ini menampilkan peran build dan deploy, serta IAM peran lainnya dengan kebijakan trust yang mencakup prinsip
codecatalyst-runner.amazonaws.com
dancodecatalyst.amazonaws.com
service principal. -
Dari daftar drop-down, tambahkan:
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
catatan
Jika Anda melihat
The security token included in the request is invalid
, itu mungkin karena Anda tidak memiliki izin yang tepat. Untuk memperbaiki masalah ini, keluar dari AWS sebagai masuk kembali dengan AWS akun yang Anda gunakan saat membuat CodeCatalyst ruang. -
-
Kembali ke CodeCatalyst konsol dan segarkan halaman.
Peran build dan deploy sekarang akan muncul di bawah IAMperan.
Peran ini sekarang tersedia untuk digunakan dalam CodeCatalyst alur kerja.
Langkah 7: Perbarui ConfigMap
Anda harus menambahkan peran deploy yang Anda buat ke ConfigMap
file Kubernetes Langkah 5: Buat AWS peran untuk memberikan tindakan klaster Deploy ke Kubernetes (dalam alur kerja Anda) kemampuan untuk mengakses dan berinteraksi dengan klaster Anda. Anda dapat menggunakan eksctl
atau kubectl
melakukan tugas ini.
Untuk mengkonfigurasi file Kubernetes ConfigMap menggunakan eksctl
-
Di terminal Dev Environment, masukkan:
eksctl create iamidentitymapping --cluster
codecatalyst-eks-cluster
--arnarn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
--group system:masters --usernamecodecatalyst-eks-deploy-role
--regionus-west-2
Di mana:
-
codecatalyst-eks-cluster
diganti dengan nama cluster EKS cluster Amazon. -
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
diganti dengan peran ARN penerapan yang Anda buat. Langkah 5: Buat AWS peran -
codecatalyst-eks-deploy-role
(di sebelah--username
) diganti dengan nama peran penerapan yang Anda buat. Langkah 5: Buat AWS perancatatan
Jika Anda memutuskan untuk tidak membuat peran penerapan, ganti
codecatalyst-eks-deploy-role
dengan namaCodeCatalystWorkflowDevelopmentRole-
peran. Untuk informasi selengkapnya tentang peran ini, silakan lihat Langkah 5: Buat AWS peran.spaceName
-
us-west-2
diganti dengan wilayah Anda.
Untuk detail tentang perintah ini, lihat Mengelola IAM pengguna dan peran
. Pesan yang mirip dengan berikut ini muncul:
2023-06-09 00:58:29 [ℹ] checking arn arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role against entries in the auth ConfigMap 2023-06-09 00:58:29 [ℹ] adding identity "arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role" to auth ConfigMap
-
Untuk mengkonfigurasi file Kubernetes ConfigMap menggunakan kubectl
-
Di terminal Dev Environment, masukkan:
kubectl edit configmap -n kube-system aws-auth
ConfigMap File muncul di layar.
-
Tambahkan teks dengan huruf miring merah:
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-codecatalyst-eks-cluster-n-NodeInstanceRole-16BC456ME6YR5 username: system:node:{{EC2PrivateDNSName}}
- groups: - system:masters rolearn: arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role username: codecatalyst-eks-deploy-role
mapUsers: | [] kind: ConfigMap metadata: creationTimestamp: "2023-06-08T19:04:39Z" managedFields: ...Di mana:
-
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
diganti dengan peran ARN penerapan yang Anda buat. Langkah 5: Buat AWS peran -
codecatalyst-eks-deploy-role
(di sebelahusername:
) diganti dengan nama peran penerapan yang Anda buat. Langkah 5: Buat AWS perancatatan
Jika Anda memutuskan untuk tidak membuat peran penerapan, ganti
codecatalyst-eks-deploy-role
dengan namaCodeCatalystWorkflowDevelopmentRole-
peran. Untuk informasi selengkapnya tentang peran ini, silakan lihat Langkah 5: Buat AWS peran.spaceName
Untuk detailnya, lihat Mengaktifkan akses IAM utama ke klaster Anda di Panduan EKS Pengguna Amazon.
-
Anda sekarang telah memberikan peran deploy, dan dengan ekstensi EKS tindakan Deploy to Amazon, system:masters
izin ke klaster Kubernetes Anda.
Langkah 8: Buat dan jalankan alur kerja
Pada langkah ini, Anda membuat alur kerja yang mengambil file sumber Anda, membuatnya menjadi image Docker, dan kemudian menyebarkan gambar ke pod pohon di cluster Amazon Anda. EKS
Alur kerja terdiri dari blok bangunan berikut yang berjalan secara berurutan:
-
Pemicu - Pemicu ini memulai alur kerja yang dijalankan secara otomatis saat Anda mendorong perubahan ke repositori sumber Anda. Untuk informasi lebih lanjut tentang menggunakan pemicu, lihat Memulai alur kerja berjalan secara otomatis menggunakan pemicu.
-
Tindakan build (
BuildBackend
) — Pada pemicu, aksi membangun image Docker menggunakan Dockerfile dan mendorong gambar ke Amazon. ECR Tindakan build juga memperbarui$IMAGE_TAG
variabel$REPOSITORY_URI
dan dalamdeployment.yaml
file dengan nilai yang benar, dan kemudian membuat artefak keluaran file ini dan yang lainnya diKubernetes
folder. Dalam tutorial ini, satu-satunya file dalamKubernetes
folder adalahdeployment.yaml
tetapi Anda dapat menyertakan lebih banyak file. Artefak digunakan sebagai input untuk tindakan penyebaran, yang berikutnya.Untuk informasi selengkapnya tentang tindakan build, lihatMembangun dengan alur kerja.
-
Tindakan penerapan (
DeployToEKS
) — Setelah menyelesaikan aksi build, tindakan deploy mencari artefak keluaran yang dihasilkan oleh build action (Manifests
), dan menemukandeployment.yaml
file di dalamnya. Tindakan kemudian mengikuti instruksi dalamdeployment.yaml
file untuk menjalankan tiga pod—masing-masing berisi satu 'Hello, World! ' Kontainer Docker—di dalam cluster Amazon Anda. EKS
Untuk membuat alur kerja
-
Pergi ke CodeCatalyst konsol.
-
Arahkan ke proyek Anda (
codecatalyst-eks-project
). -
Di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.
-
Pilih Buat alur kerja.
-
Untuk repositori Sumber, pilih.
codecatalyst-eks-source-repository
-
Untuk Cabang, pilih
main
. -
Pilih Buat.
-
Hapus kode YAML sampel.
-
Tambahkan YAML kode berikut untuk membuat file definisi alur kerja baru:
catatan
Untuk informasi selengkapnya tentang file definisi alur kerja, lihatDefinisi alur kerja YAML.
catatan
Dalam YAML kode berikut, Anda dapat menghilangkan
Connections:
bagian jika Anda mau. Jika Anda menghilangkan bagian ini, Anda harus memastikan bahwa peran yang ditentukan dalam bidang IAMperan default di lingkungan Anda mencakup izin dan kebijakan kepercayaan dari kedua peran yang dijelaskan. Langkah 6: Tambahkan AWS peran CodeCatalyst Untuk informasi selengkapnya tentang menyiapkan lingkungan dengan IAM peran default, lihatPembuatan lingkungan.Name: codecatalyst-eks-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildBackend: Identifier: aws/build@v1 Environment: Name:
codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-build-role
Inputs: Sources: - WorkflowSource Variables: - Name: REPOSITORY_URI Value:111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
- Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --regionus-west-2
| docker login --username AWS --password-stdin111122223333.dkr.ecr.us-west-2.amazonaws.com
#build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG # Replace the variables in deployment.yaml - Run: find Kubernetes/ -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g" - Run: find Kubernetes/ -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g" - Run: cat Kubernetes/* # The output artifact will be a zip file that contains Kubernetes manifest files. Outputs: Artifacts: - Name: Manifests Files: - "Kubernetes/*" DeployToEKS: DependsOn: - BuildBackend Identifier: aws/kubernetes-deploy@v1 Environment: Name:codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-deploy-role
Inputs: Artifacts: - Manifests Configuration: Namespace: default Region:us-west-2
Cluster: codecatalyst-eks-cluster Manifests: Kubernetes/Pada kode sebelumnya, ganti:
-
Kedua contoh
codecatalyst-eks-environment
dengan nama lingkungan yang Anda buatPrasyarat. -
Kedua contoh
codecatalyst-account-connection
dengan nama tampilan koneksi akun Anda. Nama tampilan mungkin nomor. Untuk informasi selengkapnya, lihat Langkah 6: Tambahkan AWS peran CodeCatalyst. -
codecatalyst-eks-build-role
dengan nama peran build yang Anda buatLangkah 5: Buat AWS peran. -
111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
(diValue:
properti) dengan URI ECR repositori Amazon yang Anda buat. Langkah 3: Buat repositori ECR gambar Amazon -
111122223333.dkr.ecr.us-west-2.amazonaws.com
(dalamRun: aws ecr
perintah) dengan ECR repositori Amazon tanpa akhiran gambar (). URI/codecatalyst-eks-image-repo
-
codecatalyst-eks-deploy-role
dengan nama peran penerapan yang Anda buat. Langkah 5: Buat AWS peran -
Kedua contoh
us-west-2
dengan kode AWS Region Anda. Untuk daftar kode Region, lihat Titik akhir Regional di. Referensi Umum AWS
catatan
Jika Anda memutuskan untuk tidak membuat peran build dan deploy, ganti
codecatalyst-eks-build-role
andcodecatalyst-eks-deploy-role
dengan namaCodeCatalystWorkflowDevelopmentRole-
peran. Untuk informasi selengkapnya tentang peran ini, silakan lihat Langkah 5: Buat AWS peran.spaceName
-
-
(Opsional) Pilih Validasi untuk memastikan bahwa YAML kode tersebut valid sebelum melakukan.
-
Pilih Terapkan.
-
Dalam kotak dialog Commit workflow, masukkan yang berikut ini:
-
Untuk pesan Commit, hapus teks dan masukkan:
Add first workflow
-
Untuk Repositori, pilih.
codecatalyst-eks-source-repository
-
Untuk nama Branch, pilih main.
-
Pilih Terapkan.
Anda sekarang telah membuat alur kerja. Jalankan alur kerja dimulai secara otomatis karena pemicu yang ditentukan di bagian atas alur kerja. Khususnya, ketika Anda melakukan (dan mendorong)
workflow.yaml
file ke repositori sumber Anda, pemicu memulai alur kerja dijalankan. -
Untuk melihat alur kerja, jalankan kemajuan
-
Di panel navigasi CodeCatalyst konsol, pilih CI/CD, lalu pilih Alur kerja.
-
Pilih alur kerja yang baru saja Anda buat,
codecatalyst-eks-workflow
. -
Pilih BuildBackenduntuk melihat kemajuan pembangunan.
-
Pilih DeployToEKSuntuk melihat kemajuan penerapan.
Untuk informasi selengkapnya tentang melihat detail run, lihatMelihat status dan detail alur kerja.
Untuk memverifikasi penyebaran
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Di sebelah kiri, dekat bagian bawah, pilih Load Balancers.
-
Pilih load balancer yang dibuat sebagai bagian dari penerapan Kubernetes Anda. Jika Anda tidak yakin penyeimbang beban mana yang harus dipilih, cari tag berikut di bawah tab Tag:
-
kubernetes.io/service-name
-
kubernetes.io/cluster/ekstutorialcluster
-
-
Dengan penyeimbang beban yang benar dipilih, pilih tab Deskripsi.
-
Salin dan tempel nilai DNSnama ke bilah alamat browser Anda.
'Halo, Dunia! ' halaman web muncul di browser Anda, menunjukkan bahwa Anda berhasil menerapkan aplikasi Anda.
Langkah 9: Buat perubahan pada file sumber Anda
Di bagian ini, Anda membuat perubahan pada index.html
file di repositori sumber Anda. Perubahan ini menyebabkan alur kerja membuat image Docker baru, menandainya dengan ID komit, mendorongnya ke AmazonECR, dan menerapkannya ke Amazon. ECS
Untuk mengubah index.html
-
Pergi ke Lingkungan Pengembang Anda.
-
Pada prompt terminal, ubah ke repositori sumber Anda:
cd /projects/codecatalyst-eks-source-repository
-
Tarik perubahan alur kerja terbaru:
git pull
-
Buka
codecatalyst-eks-source-repository/public-html/index.html
. -
Pada baris 14, ubah
Hello, World!
teks menjadiTutorial complete!
. -
Tambahkan, komit, dan dorong:
git add . git commit -m "update index.html title" git push
Jalankan alur kerja dimulai secara otomatis.
-
(Opsional) Masukkan:
git show HEAD
Perhatikan ID komit untuk
index.html
perubahan tersebut. ID komit ini akan ditandai ke image Docker yang akan digunakan oleh alur kerja yang baru saja Anda mulai. -
Perhatikan kemajuan penerapan:
-
Di CodeCatalyst konsol, di panel navigasi, pilih CI/CD, lalu pilih Alur kerja.
-
Pilih
codecatalyst-eks-workflow
untuk melihat proses terbaru. -
Pilih BuildBackend, dan DeployToEKSuntuk melihat alur kerja berjalan kemajuan.
-
-
Verifikasi bahwa aplikasi Anda telah diperbarui, sebagai berikut:
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Di sebelah kiri, dekat bagian bawah, pilih Load Balancers.
-
Pilih load balancer yang dibuat sebagai bagian dari penerapan Kubernetes Anda.
-
Salin dan tempel nilai DNSnama ke bilah alamat browser Anda.
'Tutorial Lengkap! ' halaman web muncul di browser Anda, menunjukkan bahwa Anda berhasil menerapkan revisi baru aplikasi Anda.
-
(Opsional) Di AWS, alihkan ke ECR konsol Amazon dan verifikasi bahwa image Docker baru ditandai dengan ID komit dari langkah 7 prosedur ini.
Bersihkan
Anda harus membersihkan lingkungan Anda sehingga Anda tidak dikenakan biaya yang tidak perlu untuk penyimpanan dan sumber daya komputasi yang digunakan oleh tutorial ini.
Untuk membersihkan
-
Hapus klaster Anda:
-
Di terminal Dev Environment, masukkan:
eksctl delete cluster --region=
us-west-2
--name=codecatalyst-eks-cluster
Di mana:
-
us-west-2
diganti dengan wilayah Anda. -
codecatalyst-eks-cluster
diganti dengan nama cluster yang Anda buat.
Setelah 5-10 menit, cluster dan sumber daya terkait dihapus, termasuk namun tidak terbatas pada AWS CloudFormation tumpukan, grup node (di AmazonEC2), dan penyeimbang beban.
-
penting
Jika
eksctl delete cluster
perintah tidak berfungsi, Anda mungkin perlu me-refresh kredensyal atau AWS kredensyal Andakubectl
. Jika Anda tidak yakin kredensyal mana yang akan disegarkan, segarkan kredensialnya terlebih AWS dahulu. Untuk menyegarkan AWS kredensyal Anda, lihat. Bagaimana cara memperbaiki kesalahan “Tidak dapat menemukan kredensil” dan “ExpiredToken”? Untuk menyegarkankubectl
kredensyal Anda, lihat. Bagaimana cara memperbaiki kesalahan “Tidak dapat terhubung ke server”? -
-
Di AWS konsol, bersihkan sebagai berikut:
-
Di AmazonECR, hapus
codecatalyst-eks-image-repo
. -
Di Pusat IAM Identitas, hapus:
-
codecatalyst-eks-user
-
codecatalyst-eks-permission-set
-
-
DalamIAM, hapus:
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
-
codecatalyst-eks-build-policy
-
codecatalyst-eks-deploy-policy
-
-
-
Di CodeCatalyst konsol, bersihkan sebagai berikut:
-
Hapus
codecatalyst-eks-workflow
. -
Hapus
codecatalyst-eks-environment
. -
Hapus
codecatalyst-eks-source-repository
. -
Hapus Lingkungan Pengembang Anda.
-
Hapus
codecatalyst-eks-project
.
-
Dalam tutorial ini, Anda mempelajari cara menerapkan aplikasi ke EKS layanan Amazon menggunakan CodeCatalyst alur kerja dan tindakan klaster Deploy ke Kubernetes.