Menerapkan CI/CD pipeline untuk layanan mikro Java di Amazon ECS - AWS Prescriptive Guidance

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

Menerapkan CI/CD pipeline untuk layanan mikro Java di Amazon ECS

Vijay Thompson dan Sankar Sangubotla, Amazon Web Services

Ringkasan

Pola ini memandu Anda melalui langkah-langkah untuk menerapkan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) pipeline for Java microservices on an existing Amazon Elastic Container Service (Amazon ECS) cluster by using AWS CodeBuild. When the developer commits the changes, the CI/CDpipeline dimulai dan proses pembuatan dimulai. CodeBuild Ketika build selesai, artefak didorong ke Amazon Elastic Container Registry (Amazon ECR) dan build terbaru dari Amazon ECR diambil dan didorong ke layanan Amazon ECS.

Prasyarat dan batasan

Prasyarat

  • Aplikasi microservices Java yang ada berjalan di Amazon ECS

  • Keakraban dengan AWS CodeBuild dan AWS CodePipeline

Arsitektur

Tumpukan teknologi sumber

  • Layanan mikro Java berjalan di Amazon ECS

  • Repositori kode di Amazon ECR

  • AWS Fargate

Arsitektur sumber

Arsitektur sumber untuk menyebarkan CI/CD pipeline untuk layanan mikro Java di Amazon ECS

Tumpukan teknologi target

  • Amazon ECR

  • Amazon ECS

  • AWS Fargate

  • AWS CodePipeline

  • AWS CodeBuild

Arsitektur target

Arsitektur target untuk menerapkan CI/CD pipeline untuk layanan mikro Java di Amazon ECS

Otomatisasi dan skala

CodeBuild buildspec.ymlberkas:

version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws --version - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) - IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F":" '{print $2}') build: commands: - echo Build started on `date` - echo building the Jar file - mvn clean install - echo Building the Docker image... - docker build -t $REPOSITORY_URI:$BUILD_TAG . - docker tag $REPOSITORY_URI:$BUILD_TAG $REPOSITORY_URI:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... - docker push $REPOSITORY_URI:$BUILD_TAG - docker push $REPOSITORY_URI:$IMAGE_TAG - echo Writing image definitions file... - printf '[{"name":"%s","imageUri":"%s"}]' $DOCKER_CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json - cat imagedefinitions.json artifacts: files: - imagedefinitions.json - target/DockerDemo.jar

Alat

Layanan AWS

  • AWS CodeBuild adalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan. AWS CodeBuild menskalakan secara terus menerus dan memproses beberapa build secara bersamaan, sehingga build Anda tidak tertinggal dalam antrian.

  • AWS CodePipeline membantu Anda memodelkan dan mengonfigurasi berbagai tahapan rilis perangkat lunak dengan cepat dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus. Anda dapat mengintegrasikan AWS CodePipeline dengan layanan pihak ketiga seperti GitHub, atau menggunakan layanan AWS seperti Amazon ECR.

  • Amazon Elastic Container Registry (Amazon ECR) adalah registri terkelola penuh yang memudahkan pengembang untuk menyimpan, mengelola, dan menyebarkan gambar kontainer Docker. Amazon ECR terintegrasi dengan Amazon ECS untuk menyederhanakan alur kerja Anda. development-to-production Amazon ECR meng-host gambar Anda dalam arsitektur yang sangat tersedia dan dapat diskalakan sehingga Anda dapat menerapkan kontainer untuk aplikasi Anda dengan andal. Integrasi dengan AWS Identity and Access Management (IAM) menyediakan kontrol tingkat sumber daya dari setiap repositori.

  • Amazon Elastic Container Service (Amazon ECS) Service orkestrasi kontainer berkinerja tinggi yang sangat skalabel dan berkinerja tinggi yang mendukung kontainer Docker dan memungkinkan Anda menjalankan dan menskalakan aplikasi kontainer dengan mudah di AWS. Amazon ECS menghilangkan kebutuhan bagi Anda untuk menginstal dan mengoperasikan perangkat lunak orkestrasi kontainer Anda sendiri, mengelola dan menskalakan sekelompok mesin virtual, atau menjadwalkan kontainer pada mesin virtual tersebut.

  • AWS Fargate adalah mesin komputasi untuk Amazon ECS yang memungkinkan Anda menjalankan kontainer tanpa harus mengelola server atau cluster. Dengan AWS Fargate, Anda tidak perlu lagi menyediakan, mengonfigurasi, dan menskalakan cluster mesin virtual untuk menjalankan kontainer. Anda tidak perlu memilih jenis server, memutuskan kapan akan menskalakan klaster Anda, atau mengoptimalkan paket klaster.

Alat lainnya

  • Docker adalah platform yang memungkinkan Anda membangun, menguji, dan mengirimkan aplikasi dalam paket yang disebut kontainer.

  • Git adalah sistem kontrol versi terdistribusi untuk melacak perubahan kode sumber selama pengembangan perangkat lunak. Ini dirancang untuk mengoordinasikan pekerjaan di antara programmer, tetapi dapat digunakan untuk melacak perubahan dalam kumpulan file apa pun. Tujuannya meliputi kecepatan, integritas data, dan dukungan untuk alur kerja non-linear yang terdistribusi.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat proyek CodeBuild build.

Di CodeBuild konsol AWS, buat proyek build, dan tentukan namanya.

Pengembang aplikasi, administrator sistem AWS

Pilih sumbernya.

Pola ini menggunakan Git untuk repositori kode, jadi pilihlah GitHub dari daftar opsi yang tersedia. Pilih repositori publik atau dari akun Anda GitHub .

Pengembang aplikasi, administrator sistem AWS

Pilih repositori.

Pilih repositori dari mana Anda ingin membangun kode.

Pengembang aplikasi, administrator sistem AWS

Pilih lingkungan.

Anda dapat memilih dari daftar gambar terkelola atau memilih gambar khusus menggunakan Docker. Pola ini menggunakan gambar terkelola berikut:

  • catatan

    Amazon Linux 2 (: Amazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat Amazon Linux 2 FAQs.)

  • Runtime: Standar

  • Gambar versi 1.0

Pengembang aplikasi, administrator sistem AWS

Pilih peran layanan.

Anda dapat membuat peran layanan atau memilih dari daftar peran yang ada.

Pengembang aplikasi, administrator sistem AWS

Tambahkan variabel lingkungan.

Di bagian Konfigurasi tambahan, konfigurasikan variabel lingkungan berikut:

  • AWS_DEFAULT_REGION untuk Wilayah AWS default

  • AWS_ACCOUNT_ID untuk nomor akun pengguna

  • IMAGE_REPO untuk repositori pribadi Amazon ECR

  • BUILD_TAG untuk versi build (build terbaru adalah nilai untuk variabel ini)

  • DOCKER_CONTAINER_NAME untuk nama wadah dalam tugas

Variabel-variabel ini adalah placeholder dalam buildspec.yml file dan akan diganti dengan nilainya masing-masing.

Pengembang aplikasi, administrator sistem AWS

Buat file buildspec.

Anda dapat membuat buildspec.yml file di lokasi yang sama dengan pom.xml dan menambahkan konfigurasi yang disediakan dalam pola ini, atau menggunakan editor buildspec online dan menambahkan konfigurasi. Konfigurasikan variabel lingkungan dengan nilai yang sesuai dengan mengikuti langkah-langkah yang disediakan.

Pengembang aplikasi, administrator sistem AWS

Konfigurasikan proyek untuk artefak.

(Opsional) Konfigurasikan proyek build untuk artefak, jika diperlukan.

Pengembang aplikasi, administrator sistem AWS

Konfigurasikan CloudWatch Log Amazon.

(Opsional) Konfigurasikan CloudWatch Log Amazon untuk proyek build, jika diperlukan. Langkah ini opsional tetapi disarankan.

Pengembang aplikasi, administrator sistem AWS

Konfigurasikan log Amazon S3.

(Opsional) Konfigurasikan log Amazon Simple Storage Service (Amazon S3) untuk proyek build, jika Anda ingin menyimpan log.

Pengembang aplikasi, administrator sistem AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Buat pipa.

Di CodePipeline konsol AWS, buat pipeline dan tentukan namanya. Untuk informasi selengkapnya tentang membuat pipeline, lihat CodePipeline dokumentasi AWS.

Pengembang aplikasi, administrator sistem AWS

Pilih peran layanan.

Buat peran layanan atau pilih dari daftar peran layanan yang ada. Jika Anda membuat peran layanan, berikan nama untuk peran tersebut dan pilih opsi CodePipeline untuk membuat peran tersebut.

Pengembang aplikasi, administrator sistem AWS

Pilih toko artefak.

Di Pengaturan lanjutan, jika Anda ingin Amazon S3 membuat ember dan menyimpan artefak di dalamnya, gunakan lokasi default untuk penyimpanan artefak. Atau, pilih lokasi kustom dan tentukan bucket yang ada. Anda juga dapat memilih untuk mengenkripsi artefak dengan menggunakan kunci enkripsi.

Pengembang aplikasi, administrator sistem AWS

Tentukan penyedia sumber.

Untuk penyedia Sumber, pilih GitHub (Versi 2).

Pengembang aplikasi, administrator sistem AWS

Pilih repositori dan cabang kode.

Jika Anda tidak masuk, berikan detail koneksi untuk terhubung GitHub, lalu pilih nama repositori dan nama cabang.

Pengembang aplikasi, administrator sistem AWS

Ubah opsi deteksi.

Pilih Mulai pipeline pada perubahan kode sumber dan pindah ke halaman berikutnya.

Pengembang aplikasi, administrator sistem AWS

Pilih penyedia build.

Untuk penyedia Build, pilih AWS CodeBuild, lalu berikan detail AWS Region dan nama proyek untuk proyek build.

Untuk tipe Build, pilih Single build.

Pengembang aplikasi, administrator sistem AWS

Pilih penyedia penerapan.

Untuk penyedia Deploy, pilih Amazon ECS. Pilih nama cluster, nama layanan, file definisi gambar, jika ada, dan nilai batas waktu penerapan, jika diperlukan. Pilih Buat pipeline.

Pengembang aplikasi, administrator sistem AWS

Sumber daya terkait