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

Tumpukan teknologi target
Amazon ECR
Amazon ECS
AWS Fargate
AWS CodePipeline
AWS CodeBuild
Arsitektur target

Otomatisasi dan skala
CodeBuild buildspec.yml
berkas:
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
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat proyek CodeBuild build. | Di CodeBuild konsol AWS | 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:
| 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:
Variabel-variabel ini adalah placeholder dalam | Pengembang aplikasi, administrator sistem AWS |
Buat file buildspec. | Anda dapat membuat | 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 |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat pipa. | Di CodePipeline konsol 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 |