Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat CI/CD pipeline dan kluster Amazon ECS secara otomatis untuk layanan mikro menggunakan AWS CDK
Varsha Raju, Amazon Web Services
Ringkasan
Pola ini menjelaskan cara membuat pipeline continuous integration dan continuous delivery (CI/CD) secara otomatis serta infrastruktur dasar untuk membangun dan menerapkan layanan mikro di Amazon Elastic Container Service (Amazon ECS). Anda dapat menggunakan pendekatan ini jika Anda ingin menyiapkan CI/CD jalur pipa proof-of-concept untuk menunjukkan kepada organisasi Anda manfaat, layanan mikro CI/CD, dan. DevOps Anda juga dapat menggunakan pendekatan ini untuk membuat CI/CD pipeline awal yang kemudian dapat Anda sesuaikan atau ubah sesuai dengan kebutuhan organisasi Anda.
Pendekatan pola menciptakan lingkungan produksi dan lingkungan non-produksi yang masing-masing memiliki virtual private cloud (VPC) dan cluster Amazon ECS yang dikonfigurasi untuk berjalan di dua Availability Zone. Lingkungan ini dibagi oleh semua layanan mikro Anda dan Anda kemudian membuat CI/CD pipeline untuk setiap layanan mikro. CI/CD Pipeline ini menarik perubahan dari repositori sumber di AWS CodeCommit, membuat perubahan secara otomatis, lalu menerapkannya ke lingkungan produksi dan non-produksi Anda. Jika pipeline berhasil menyelesaikan semua tahapannya, Anda dapat menggunakan URL untuk mengakses layanan mikro di lingkungan produksi dan non-produksi.
Prasyarat dan batasan
Prasyarat
Akun Amazon Web Services (AWS) yang aktif.
Bucket Amazon Simple Storage Service (Amazon S3) yang sudah ada yang berisi file (
starter-code.zipterlampir).AWS Cloud Development Kit (AWS CDK), diinstal dan dikonfigurasi di akun Anda. Untuk informasi selengkapnya tentang ini, lihat Memulai AWS CDK dalam dokumentasi AWS CDK.
Python 3 dan
pip, diinstal dan dikonfigurasi. Untuk informasi lebih lanjut tentang ini, lihat dokumentasi Python. Keakraban dengan AWS CDK, AWS CodeBuild, CodePipeline AWS, CodeCommit Amazon Elastic Container Registry (Amazon ECR), Amazon ECS, dan AWS Fargate.
Keakraban dengan Docker.
Pemahaman tentang CI/CD dan DevOps.
Batasan
Batas akun AWS umum berlaku. Untuk informasi selengkapnya tentang hal ini, lihat kuota layanan AWS di dokumentasi AWS General Reference.
Versi produk
Kode diuji menggunakan Node.js versi 16.13.0 dan AWS CDK versi 1.132.0.
Arsitektur

Diagram menunjukkan alur kerja berikut:
Pengembang aplikasi melakukan kode ke CodeCommit repositori.
Sebuah pipa dimulai.
CodeBuild membangun dan mendorong image Docker ke repositori Amazon ECR
CodePipeline menyebarkan gambar baru ke layanan Fargate yang ada di kluster Amazon ECS non-produksi.
Amazon ECS menarik gambar dari repositori Amazon ECR ke layanan Fargate non-produksi.
Pengujian dilakukan dengan menggunakan URL non-produksi.
Manajer rilis menyetujui penerapan produksi.
CodePipeline menyebarkan gambar baru ke layanan Fargate yang ada di cluster Amazon ECS produksi
Amazon ECS menarik gambar dari repositori Amazon ECR ke dalam layanan Fargate produksi.
Pengguna produksi mengakses fitur Anda dengan menggunakan URL produksi.
Tumpukan teknologi
AWS CDK
CodeBuild
CodeCommit
CodePipeline
Amazon ECR
Amazon ECS
Amazon VPC
Otomatisasi dan skala
Anda dapat menggunakan pendekatan pola ini untuk membuat pipeline untuk layanan mikro yang diterapkan di tumpukan AWS bersama. CloudFormation Otomatisasi dapat membuat lebih dari satu cluster Amazon ECS di setiap VPC dan juga membuat pipeline untuk layanan mikro yang digunakan di cluster Amazon ECS bersama. Namun, ini mengharuskan Anda memberikan informasi sumber daya baru sebagai input ke tumpukan pipeline.
Alat
AWS CDK — AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya melalui AWS. CloudFormation
AWS CodeBuild — AWS CodeBuild adalah layanan build yang dikelola sepenuhnya di cloud. CodeBuild mengkompilasi kode sumber Anda, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeCommit — AWS CodeCommit adalah layanan kontrol versi yang memungkinkan Anda menyimpan dan mengelola repositori Git secara pribadi di AWS Cloud. CodeCommit menghilangkan kebutuhan bagi Anda untuk mengelola sistem kontrol sumber Anda sendiri atau khawatir tentang penskalaan infrastrukturnya.
AWS CodePipeline — AWS CodePipeline adalah layanan pengiriman berkelanjutan yang dapat Anda gunakan untuk memodelkan, memvisualisasikan, dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perangkat lunak Anda. Anda dapat dengan cepat memodelkan dan mengonfigurasi berbagai tahapan proses rilis perangkat lunak. CodePipeline mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak Anda secara terus menerus.
Amazon ECS — Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang sangat skalabel dan cepat yang digunakan untuk menjalankan, menghentikan, dan mengelola kontainer di cluster. Anda dapat menjalankan tugas dan layanan Anda pada infrastruktur tanpa server yang dikelola oleh AWS Fargate. Sebagai alternatif, untuk kontrol lebih lanjut atas infrastruktur, Anda dapat menjalankan tugas dan layanan di klaster instans Amazon Elastic Compute Cloud (Amazon EC2) yang dikelola.
Docker
— Docker membantu pengembang untuk mengemas, mengirim, dan menjalankan aplikasi apa pun sebagai wadah yang ringan, portabel, dan mandiri.
Kode
Kode untuk pola ini tersedia di starter-code.zip file cicdstarter.zip dan (terlampir).
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Siapkan direktori kerja untuk AWS CDK. |
| AWS DevOps, infrastruktur Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Buat infrastruktur bersama. |
| AWS DevOps, infrastruktur Cloud |
| Pantau CloudFormation tumpukan AWS. |
| AWS DevOps, infrastruktur Cloud |
| Uji CloudFormation tumpukan AWS. |
pentingPastikan Anda merekam ID untuk dua VPC dan ID grup keamanan untuk grup keamanan default di kedua VPC. | AWS DevOps, infrastruktur Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Buat infrastruktur untuk layanan mikro. |
catatanAnda juga dapat memberikan nilai untuk kedua perintah dengan menggunakan | AWS DevOps, infrastruktur Cloud |
| Pantau CloudFormation tumpukan AWS. | Buka CloudFormation konsol AWS dan pantau kemajuan | AWS DevOps, infrastruktur Cloud |
| Uji CloudFormation tumpukan AWS. |
| |
| Gunakan pipa. |
| AWS DevOps, infrastruktur Cloud |
| Ulangi epik ini untuk setiap layanan mikro. | Ulangi tugas dalam epik ini untuk membuat CI/CD pipeline untuk setiap layanan mikro Anda. | AWS DevOps, infrastruktur Cloud |
Sumber daya terkait
Informasi tambahan
Perintah cdk synth
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
cdk deploy perintah
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>