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 integrasi berkelanjutan dan pengiriman berkelanjutan secara otomatis (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDpipeline 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. Ketika pipa berhasil menyelesaikan semua tahapannya, Anda dapat menggunakannya URLs 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 mengompilasi 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. Atau, untuk kontrol lebih lanjut atas infrastruktur, Anda dapat menjalankan tugas dan layanan Anda di klaster instans Amazon Elastic Compute Cloud (Amazon EC2) yang Anda kelola.
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 IDs untuk keduanya VPCs dan grup keamanan IDs untuk grup keamanan default di keduanya VPCs. | 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>
Lampiran
Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip