Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan CI/CD pipeline untuk beban kerja hybrid di Amazon ECS Anywhere dengan menggunakan AWS CDK dan GitLab
Dr. Rahul Sharad Gaikwad, Amazon Web Services
Ringkasan
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan AWS yang sudah ada CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Amazon ECS Anywhere adalah perpanjangan dari Amazon Elastic Container Service (Amazon ECS). Ini memberikan dukungan untuk mendaftarkan instans eksternal, seperti server lokal atau mesin virtual (VM), ke kluster Amazon ECS Anda. adalah fitur yang membantu mengurangi biaya dan mengurangi orkestrasi dan operasi kontainer lokal yang kompleks. Anda dapat menggunakan ECS Anywhere untuk menyebarkan dan menjalankan aplikasi kontainer di lingkungan lokal dan cloud. Ini menghilangkan kebutuhan tim Anda untuk mempelajari beberapa domain dan keahlian, atau untuk mengelola perangkat lunak yang kompleks sendiri.
Pola ini menjelaskan step-by-step pendekatan untuk menyediakan cluster Amazon ECS dengan instans Amazon ECS Anywhere dengan menggunakan tumpukan Amazon Web Services (AWS) Cloud Development Kit (AWS CDK). Anda kemudian menggunakan AWS CodePipeline untuk menyiapkan pipeline integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD). Kemudian, Anda mereplikasi repositori GitLab kode Anda ke AWS CodeCommit dan menerapkan aplikasi kontainer Anda di cluster Amazon ECS.
Pola ini dirancang untuk membantu mereka yang menggunakan infrastruktur lokal untuk menjalankan aplikasi kontainer dan menggunakannya GitLab untuk mengelola basis kode aplikasi. Anda dapat mengelola beban kerja tersebut dengan menggunakan layanan AWS Cloud, tanpa mengganggu infrastruktur lokal yang ada.
Prasyarat dan batasan
Prasyarat
Akun AWS aktif.
Aplikasi kontainer yang berjalan pada infrastruktur lokal.
GitLab Repositori tempat Anda mengelola basis kode aplikasi Anda. Untuk informasi selengkapnya, lihat Repository
()GitLab. AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal atau memperbarui versi terbaru AWS CLI (dokumentasi AWS CLI).
AWS CDK Toolkit, diinstal dan dikonfigurasi secara global. Untuk informasi selengkapnya, lihat Menginstal AWS CDK (dokumentasi AWS CDK).
npm, diinstal dan dikonfigurasi untuk AWS CDK di. TypeScript Untuk informasi selengkapnya, lihat Mengunduh dan menginstal Node.js dan npm
(dokumentasi npm).
Batasan
Untuk batasan dan pertimbangan, lihat Instans eksternal (Amazon ECS Anywhere) di dokumentasi Amazon ECS.
Versi produk
AWS CDK Toolkit versi 2.27.0 atau yang lebih baru
npm versi 7.20.3 atau yang lebih baru
Node.js versi 16.6.1 atau yang lebih baru
Arsitektur
Tumpukan teknologi target
AWS CDK
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon ECS Anywhere
Amazon Elastic Container Registry (Amazon ECR)
AWS Identity and Access Management (IAM)
Manajer Sistem AWS
GitLab repositori
Arsitektur target

Diagram ini mewakili dua alur kerja utama yang dijelaskan dalam pola ini, menyediakan kluster Amazon ECS dan menyiapkan CI/CD pipeline yang menyiapkan dan menyebarkan pipeline, sebagai CI/CD berikut:
Penyediaan cluster Amazon ECS
Saat Anda menerapkan tumpukan AWS CDK pertama, itu membuat CloudFormation tumpukan di AWS.
CloudFormation Tumpukan ini menyediakan kluster Amazon ECS dan sumber daya AWS terkait.
Untuk mendaftarkan instans eksternal dengan kluster Amazon ECS, Anda harus menginstal AWS Systems Manager Agent (Agen SSM) di VM Anda dan mendaftarkan VM sebagai instans yang dikelola AWS Systems Manager.
Anda juga harus menginstal agen penampung Amazon ECS dan Docker di VM Anda untuk mendaftarkannya sebagai instance eksternal dengan cluster Amazon ECS.
Ketika instans eksternal terdaftar dan dikonfigurasi dengan cluster Amazon ECS, instans dapat menjalankan beberapa kontainer di VM Anda, yang terdaftar sebagai instance eksternal.
Cluster Amazon ECS aktif dan dapat menjalankan beban kerja aplikasi melalui kontainer. Instans container Amazon ECS Anywhere berjalan di lingkungan lokal tetapi dikaitkan dengan cluster Amazon ECS di cloud.
Menyiapkan dan menyebarkan pipa CI/CD
Saat Anda menerapkan tumpukan AWS CDK kedua, itu membuat CloudFormation tumpukan lain di AWS.
CloudFormation Tumpukan ini menyediakan pipeline CodePipeline dan sumber daya AWS terkait.
Anda mendorong dan menggabungkan perubahan kode aplikasi ke repositori lokal GitLab .
GitLab Repositori secara otomatis direplikasi ke repositori. CodeCommit
Pembaruan CodeCommit repo secara otomatis dimulai CodePipeline.
CodePipeline menyalin kode dari CodeCommit dan membuat build aplikasi yang dapat diterapkan. CodeBuild
CodePipeline membuat image Docker dari lingkungan CodeBuild build dan mendorongnya ke repo Amazon ECR.
CodePipeline memulai CodeDeploy tindakan yang menarik gambar kontainer dari repo Amazon ECR.
CodePipeline menyebarkan gambar kontainer di kluster Amazon ECS.
Otomatisasi dan skala
Pola ini menggunakan AWS CDK sebagai alat infrastruktur sebagai kode (IAc) untuk mengonfigurasi dan menerapkan arsitektur ini. AWS CDK membantu Anda mengatur sumber daya AWS dan menyiapkan Amazon ECS Anywhere dan pipeline. CI/CD
Alat
Layanan AWS
AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
AWS CodeCommit adalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.
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.
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang cepat dan terukur yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster. Pola ini juga menggunakan Amazon ECS Anywhere, yang menyediakan dukungan untuk mendaftarkan server lokal atau VM ke cluster Amazon ECS Anda.
Alat lainnya
Node.js
adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. npm
adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi. Vagrant
adalah utilitas open-source untuk membangun dan memelihara lingkungan pengembangan perangkat lunak virtual portabel. Untuk tujuan demonstrasi, pola ini menggunakan Vagrant untuk membuat VM lokal.
Repositori kode
Kode untuk pola ini tersedia di pipeline GitHub CI/CD untuk Amazon ECS Anywhere menggunakan repositori AWS
Praktik terbaik
Pertimbangkan praktik terbaik berikut saat menerapkan pola ini:
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Verifikasi versi AWS CDK. | Verifikasi versi AWS CDK Toolkit dengan memasukkan perintah berikut.
Pola ini membutuhkan versi 2.27.0 atau yang lebih baru. Jika Anda memiliki versi yang lebih lama, ikuti petunjuk dalam dokumentasi AWS CDK untuk memperbaruinya. | DevOps insinyur |
Verifikasi versi npm. | Verifikasi versi npm dengan memasukkan perintah berikut.
Pola ini membutuhkan versi 7.20.3 atau yang lebih baru. Jika Anda memiliki versi sebelumnya, ikuti petunjuk dalam dokumentasi npm | DevOps insinyur |
Siapkan kredensi AWS. | Siapkan kredensi AWS dengan memasukkan
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori kode AWS CDK. |
| DevOps insinyur |
Bootstrap lingkungan. | Menerapkan CloudFormation template ke akun dan Wilayah AWS yang ingin Anda gunakan dengan memasukkan perintah berikut.
Untuk informasi selengkapnya, lihat Bootstrapping di dokumentasi AWS CDK. | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Instal dependensi paket dan kompilasi file. TypeScript | Instal dependensi paket dan kompilasi TypeScript file dengan memasukkan perintah berikut.
Perintah ini menginstal semua paket dari repositori sampel. Untuk informasi selengkapnya, lihat npm ci | DevOps insinyur |
Bangun proyek. | Untuk membangun kode proyek, masukkan perintah berikut.
Untuk informasi selengkapnya tentang membangun dan menerapkan project, lihat aplikasi AWS CDK pertama Anda di dokumentasi AWS CDK. | DevOps insinyur |
Terapkan tumpukan infrastruktur Amazon ECS Anywhere. |
| DevOps insinyur |
Verifikasi pembuatan dan output tumpukan. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan VM Anda. | Buat VM Vagrant dengan memasukkan | DevOps insinyur |
Daftarkan VM Anda sebagai instance eksternal. |
Ini mengatur VM Anda sebagai instans eksternal Amazon ECS Anywhere dan mendaftarkan instans di cluster Amazon ECS. Untuk informasi selengkapnya, lihat Mendaftarkan instans eksternal ke klaster | DevOps insinyur |
Verifikasi status Amazon ECS Anywhere dan VM eksternal. | Untuk memverifikasi apakah VM Anda terhubung ke bidang kontrol Amazon ECS dan berjalan, gunakan perintah berikut.
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat cabang di CodeCommit repo. | Buat cabang bernama
| DevOps insinyur |
Siapkan pencerminan repo. | Anda dapat mencerminkan GitLab repositori ke dan dari sumber eksternal. Anda dapat memilih repositori mana yang berfungsi sebagai sumber. Cabang, tag, dan komit disinkronkan secara otomatis. Siapkan cermin dorong antara GitLab repositori yang menghosting aplikasi Anda dan repositori. CodeCommit Untuk petunjuk, lihat Mengatur cermin dorong dari GitLab ke CodeCommit catatanSecara default, mirroring secara otomatis menyinkronkan repositori. Jika Anda ingin memperbarui repositori secara manual, lihat Memperbarui cermin | DevOps insinyur |
Menyebarkan tumpukan CI/CD pipa. | Menyebarkan
| DevOps insinyur |
Uji CI/CD pipa. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Bersihkan dan hapus sumber daya. | Setelah Anda berjalan melalui pola ini, Anda harus menghapus proof-of-concept sumber daya yang Anda buat. Untuk membersihkan, masukkan perintah berikut.
| DevOps insinyur |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Kesalahan tentang paket yang hilang saat menginstal dependensi paket. | Masukkan salah satu perintah berikut untuk menyelesaikan paket yang hilang.
atau
|
Ketika Anda menjalankan
|
|
Pemeriksaan kesehatan Amazon ECS kembali
| Mulai ulang agen Amazon ECS di Vagrant VM Anda dengan memasukkan perintah berikut.
|
Sumber daya terkait
Amazon ECS Anywhere
demo (video) Sampel GitHublokakarya Amazon ECS Anywhere
() Pencerminan repositori
(dokumentasi) GitLab