Penerapan pada Platform Komputasi Amazon ECS - AWS CodeDeploy

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

Penerapan pada Platform Komputasi Amazon ECS

Topik ini memberikan informasi tentang komponen dan alur kerja CodeDeploy penerapan yang menggunakan platform komputasi Amazon ECS.

Sebelum Anda memulai penyebaran Amazon ECS

Sebelum Anda memulai penyebaran aplikasi Amazon ECS, Anda harus menyiapkan yang berikut ini. Beberapa persyaratan ditentukan saat Anda membuat grup penyebaran, dan beberapa ditentukan dalam AppSpec file.

Persyaratan Dimana ditentukan
Kluster Amazon ECS Grup penyebaran
Layanan Amazon ECS Grup penyebaran
Application Load Balancer atau Network Load Balancer Grup penyebaran
Listener produksi Grup penyebaran
Uji pendengar (opsional) Grup penyebaran
Dua grup target Grup penyebaran
Definisi tugas Amazon ECS AppSpec berkas
Nama kontainer AppSpec berkas
Port kontainer AppSpec berkas
Kluster Amazon ECS

Cluster Amazon ECS adalah pengelompokan tugas atau layanan yang logis. Anda menentukan klaster Amazon ECS yang berisi layanan Amazon ECS saat membuat grup CodeDeploy penerapan aplikasi. Untuk informasi selengkapnya, lihat klaster Amazon ECS di Panduan Pengguna Layanan Amazon Elastic Container.

Layanan Amazon ECS

Layanan Amazon ECS memelihara dan menjalankan instans definisi tugas yang ditentukan dalam klaster Amazon ECS. Layanan Amazon ECS Anda harus diaktifkan untuk CodeDeploy. Secara default, layanan Amazon ECS diaktifkan untuk penerapan Amazon ECS. Saat membuat grup penerapan, Anda memilih untuk menerapkan layanan Amazon ECS yang ada di kluster Amazon ECS Anda. Untuk informasi selengkapnya, lihat layanan Amazon ECS di Panduan Pengguna Layanan Amazon Elastic Container.

Application Load Balancer atau Network Load Balancer

Anda harus menggunakan Elastic Load Balancing dengan layanan Amazon ECS yang ingin Anda perbarui dengan penyebaran Amazon ECS. Anda dapat menggunakan Application Load Balancer atau Network Load Balancer. Kami merekomendasikan Application Load Balancer sehingga Anda dapat memanfaatkan fitur-fitur seperti pemetaan port dinamis dan routing berbasis jalur dan aturan prioritas. Anda menentukan penyeimbang beban saat membuat grup CodeDeploy penerapan aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan penyeimbang beban, grup target, dan pendengar untuk penerapan Amazon CodeDeploy ECS dan Membuat penyeimbang beban di Panduan Pengguna Amazon Elastic Container Service.

Satu atau dua pendengar

Listener digunakan oleh penyeimbang beban Anda untuk mengarahkan lalu lintas ke grup target Anda. Diperlukan satu pendengar produksi. Anda dapat menentukan pendengar pengujian kedua opsional yang mengarahkan lalu lintas ke set tugas pengganti saat menjalankan pengujian validasi. Anda menentukan satu atau kedua pendengar saat membuat grup penerapan. Jika Anda menggunakan konsol Amazon ECS untuk membuat layanan Amazon ECS Anda, pendengar Anda dibuat untuk Anda. Untuk informasi selengkapnya, lihat Pendengar untuk penyeimbang beban aplikasi Anda di Panduan Pengguna Elastic Load Balancing dan Membuat layanan di Panduan PenggunaAmazon Elastic Container Service.

Dua kelompok sasaran Amazon ECS

Kelompok sasaran digunakan untuk mengarahkan lalu lintas ke target yang terdaftar. Penyebaran Amazon ECS memerlukan dua grup target: satu untuk set tugas asli aplikasi Amazon ECS Anda dan satu untuk set tugas penggantinya. Selama penerapan, CodeDeploy membuat set tugas pengganti dan mengalihkan lalu lintas dari tugas asli yang disetel ke yang baru. Anda menentukan grup target saat membuat grup CodeDeploy penerapan aplikasi Anda.

Selama penerapan, CodeDeploy tentukan grup target mana yang terkait dengan set tugas di layanan Amazon ECS Anda yang memiliki status PRIMARY (ini adalah kumpulan tugas asli) dan mengaitkan satu grup target dengannya, lalu mengaitkan grup target lainnya dengan set tugas pengganti. Jika Anda melakukan penerapan lain, grup target yang terkait dengan set tugas asli penerapan saat ini dikaitkan dengan set tugas pengganti penerapan berikutnya. Untuk informasi selengkapnya, lihat Grup target untuk penyeimbang beban aplikasi Anda di Panduan Pengguna Elastic Load Balancing.

Definisi tugas Amazon ECS

Definisi tugas diperlukan untuk menjalankan container Docker yang berisi aplikasi Amazon ECS Anda. Anda menentukan ARN definisi tugas Anda dalam file CodeDeploy aplikasi Anda. AppSpec Untuk informasi selengkapnya, lihat definisi tugas Amazon ECS di Panduan Pengguna Layanan Kontainer Elastis Amazon dan AppSpec Bagian 'sumber daya' untuk penerapan Amazon ECS.

Wadah untuk aplikasi Amazon ECS Anda

Container Docker adalah unit perangkat lunak yang mengemas kode dan dependensinya sehingga aplikasi Anda dapat berjalan. Sebuah wadah mengisolasi aplikasi Anda sehingga berjalan di lingkungan komputasi yang berbeda. Penyeimbang beban Anda mengarahkan lalu lintas ke kontainer di set tugas aplikasi Amazon ECS Anda. Anda menentukan nama kontainer Anda dalam AppSpec file CodeDeploy aplikasi Anda. Penampung yang ditentukan dalam AppSpec file Anda harus merupakan salah satu kontainer yang ditentukan dalam definisi tugas Amazon ECS Anda. Untuk informasi selengkapnya, lihat Apa itu Amazon Elastic Container Service? di Panduan Pengguna Layanan Kontainer Elastis Amazon dan AppSpec Bagian 'sumber daya' untuk penerapan Amazon ECS.

Port untuk set tugas pengganti Anda

Selama penerapan Amazon ECS, penyeimbang beban mengarahkan lalu lintas ke port ini pada penampung yang ditentukan dalam file aplikasi Anda CodeDeploy. AppSpec Anda menentukan port dalam AppSpec file CodeDeploy aplikasi Anda. Untuk informasi selengkapnya, lihat AppSpec Bagian 'sumber daya' untuk penerapan Amazon ECS.

Alur kerja penerapan (tingkat tinggi) pada platform komputasi Amazon ECS

Diagram berikut menunjukkan langkah-langkah utama dalam penyebaran layanan Amazon ECS yang diperbarui.

Bagaimana CodeDeploy menyebarkan aplikasi sebagai tugas yang ditetapkan ke Amazon ECS.

Langkah-langkah ini meliputi:

  1. Buat AWS CodeDeploy aplikasi dengan menentukan nama yang secara unik mewakili apa yang ingin Anda gunakan. Untuk menerapkan aplikasi Amazon ECS, di AWS CodeDeploy aplikasi Anda, pilih platform komputasi Amazon ECS. CodeDeploy menggunakan aplikasi selama penerapan untuk mereferensikan komponen penyebaran yang benar, seperti grup penyebaran, grup target, pendengar, dan perilaku pengalihan rute lalu lintas, dan revisi aplikasi. Untuk informasi selengkapnya, lihat Buat aplikasi dengan CodeDeploy.

  2. Siapkan grup penerapan dengan menentukan:

    • Nama grup penyebaran.

    • Cluster Amazon ECS dan nama layanan Anda. Pengontrol penyebaran layanan Amazon ECS harus disetel ke. CodeDeploy

    • Pendengar produksi, pendengar uji opsional, dan grup target yang digunakan selama penerapan.

    • Pengaturan penerapan, seperti kapan mengalihkan lalu lintas produksi ke tugas Amazon ECS pengganti yang disetel di layanan Amazon ECS Anda dan kapan harus menghentikan tugas Amazon ECS asli yang disetel di layanan Amazon ECS Anda.

    • Pengaturan opsional, seperti pemicu, alarm, dan perilaku rollback.

  3. Tentukan file spesifikasi aplikasi (AppSpec file). Anda dapat mengunggahnya ke Amazon S3, memasukkannya ke konsol dalam format YAMAL atau JSON, atau menentukannya dengan atau SDK. AWS CLI AppSpec File tersebut menentukan definisi tugas Amazon ECS untuk penerapan, nama kontainer, dan pemetaan port yang digunakan untuk merutekan lalu lintas, dan fungsi Lambda berjalan setelah kait siklus hidup penerapan. Nama kontainer harus berupa wadah dalam definisi tugas Amazon ECS Anda. Untuk informasi selengkapnya, lihat Bekerja dengan revisi aplikasi untuk CodeDeploy.

  4. Terapkan revisi aplikasi Anda. AWS CodeDeploy mengalihkan lalu lintas dari versi asli tugas yang ditetapkan di layanan Amazon ECS Anda ke set tugas pengganti yang baru. Grup target yang ditentukan dalam grup penyebaran digunakan untuk melayani lalu lintas ke set tugas asli dan pengganti. Setelah penerapan selesai, set tugas asli dihentikan. Anda dapat menentukan pendengar pengujian opsional untuk menyajikan lalu lintas pengujian ke versi pengganti Anda sebelum lalu lintas dialihkan ke versi tersebut. Untuk informasi selengkapnya, lihat Buat penerapan dengan CodeDeploy.

  5. Periksa hasil penerapan. Untuk informasi selengkapnya, lihat Memantau penyebaran di CodeDeploy.

Apa yang terjadi selama penyebaran Amazon ECS

Sebelum penerapan Amazon ECS dengan pendengar pengujian dimulai, Anda harus mengonfigurasi komponennya. Untuk informasi selengkapnya, lihat Sebelum Anda memulai penyebaran Amazon ECS.

Diagram berikut menunjukkan hubungan antara komponen-komponen ini ketika penyebaran Amazon ECS siap untuk dimulai.

Hubungan antara penyeimbang beban, pendengar, grup target, dan set tugas saat penerapan Amazon ECS siap untuk dimulai.

Saat penerapan dimulai, peristiwa siklus hidup penerapan mulai dijalankan satu per satu. Beberapa peristiwa siklus hidup adalah kait yang hanya menjalankan fungsi Lambda yang ditentukan dalam file. AppSpec Peristiwa siklus hidup penerapan dalam tabel berikut tercantum dalam urutan yang dieksekusi. Untuk informasi selengkapnya, lihat AppSpec Bagian 'kait' untuk penerapan Amazon ECS.

Acara siklus hidup Tindakan peristiwa siklus hidup
BeforeInstall(pengait untuk fungsi Lambda) Jalankan fungsi Lambda.
Menginstal Siapkan set tugas pengganti.
AfterInstall(pengait untuk fungsi Lambda) Jalankan fungsi Lambda.
AllowTestTraffic Rutekan lalu lintas dari pendengar pengujian ke grup target 2.
AfterAllowTestTraffic(pengait untuk fungsi Lambda) Jalankan fungsi Lambda.
BeforeAllowTraffic(pengait untuk fungsi Lambda) Jalankan fungsi Lambda.
AllowTraffic Rutekan lalu lintas dari pendengar produksi ke grup target 2.
AfterAllowTraffic Jalankan fungsi Lambda.

catatan

Fungsi Lambda di hook adalah opsional.

  1. Jalankan fungsi Lambda apa pun yang ditentukan dalam BeforeInstall hook dalam file. AppSpec

  2. Selama acara Install siklus hidup:

    1. Set tugas pengganti dibuat di layanan Amazon ECS Anda.

    2. Aplikasi kontainer yang diperbarui diinstal ke dalam set tugas pengganti.

    3. Kelompok target kedua dikaitkan dengan set tugas pengganti.

    Diagram ini menunjukkan komponen penyebaran dengan set tugas pengganti baru. Aplikasi kontainer ada di dalam set tugas ini. Set tugas terdiri dari tiga tugas. (Aplikasi dapat memiliki sejumlah tugas.) Kelompok target kedua sekarang dikaitkan dengan set tugas pengganti.

    Komponen penyebaran dengan set tugas pengganti baru. Aplikasi kontainer ada di dalam set tugas ini. Set tugas terdiri dari tiga tugas. Kelompok target kedua sekarang dikaitkan dengan set tugas pengganti.
  3. Jalankan fungsi Lambda apa pun yang ditentukan dalam AfterInstall hook dalam file. AppSpec

  4. AllowTestTrafficAcara ini dipanggil. Selama peristiwa siklus hidup ini, pendengar pengujian merutekan lalu lintas ke aplikasi kontainer yang diperbarui.

    Pendengar pengujian merutekan lalu lintas ke aplikasi kontainer yang diperbarui.
  5. Jalankan fungsi Lambda apa pun yang ditentukan dalam AfterAllowTestTraffic hook dalam file. AppSpec Fungsi Lambda dapat memvalidasi penerapan menggunakan lalu lintas pengujian. Misalnya, fungsi Lambda dapat menyajikan lalu lintas ke listener pengujian dan melacak metrik dari set tugas pengganti. Jika rollback dikonfigurasi, Anda dapat mengonfigurasi CloudWatch alarm yang memicu rollback saat tes validasi di fungsi Lambda Anda gagal.

    Setelah tes validasi selesai, salah satu hal berikut terjadi:

    • Jika validasi gagal dan rollback dikonfigurasi, status penerapan ditandai Failed dan komponen kembali ke statusnya saat penerapan dimulai.

    • Jika validasi gagal dan rollback tidak dikonfigurasi, status penerapan ditandai Failed dan komponen tetap dalam keadaan saat ini.

    • Jika validasi berhasil, penerapan berlanjut ke hook. BeforeAllowTraffic

    Lihat informasi selengkapnya di Memantau penyebaran dengan CloudWatch alarm di CodeDeploy, Rollback otomatis, dan Konfigurasikan opsi lanjutan untuk grup penerapan.

  6. Jalankan fungsi Lambda apa pun yang ditentukan dalam BeforeAllowTraffic hook dalam file. AppSpec

  7. AllowTrafficAcara ini dipanggil. Lalu lintas produksi dialihkan dari tugas asli yang disetel ke set tugas pengganti. Diagram berikut menunjukkan set tugas penggantian yang menerima lalu lintas produksi.

    Set tugas pengganti menerima lalu lintas produksi.
  8. Jalankan fungsi Lambda apa pun yang ditentukan dalam AfterAllowTraffic hook dalam file. AppSpec

  9. Setelah semua peristiwa berhasil, status penerapan disetel ke Succeeded dan set tugas asli dihapus.

    Semua acara berhasil.

Mengunggah revisi aplikasi Anda

Tempatkan AppSpec file di Amazon S3 atau masukkan langsung ke konsol atau. AWS CLI Untuk informasi selengkapnya, lihat Application Specification Files.

Membuat grup aplikasi dan penerapan

Grup CodeDeploy penerapan pada platform komputasi Amazon ECS mengidentifikasi pendengar untuk menayangkan lalu lintas ke aplikasi Amazon ECS Anda yang diperbarui dan dua grup target yang digunakan selama penerapan Anda. Grup penyebaran juga mendefinisikan serangkaian opsi konfigurasi, seperti alarm dan konfigurasi rollback.

Menyebarkan revisi aplikasi Anda

Sekarang Anda siap untuk menerapkan layanan Amazon ECS yang diperbarui yang ditentukan dalam grup penerapan Anda. Anda dapat menggunakan CodeDeploy konsol atau perintah create-deployment. Ada parameter yang dapat Anda tentukan untuk mengontrol penyebaran Anda, termasuk grup revisi dan penerapan.

Memperbarui aplikasi Anda

Anda dapat membuat pembaruan pada aplikasi Anda dan kemudian menggunakan CodeDeploy konsol atau memanggil perintah create-deployment untuk mendorong revisi.

Penerapan yang dihentikan dan gagal

Anda dapat menggunakan CodeDeploy konsol atau perintah stop-deployment untuk menghentikan penerapan. Saat Anda mencoba menghentikan penerapan, salah satu dari tiga hal terjadi:

  • Penerapan berhenti, dan operasi mengembalikan status berhasil. Dalam kasus ini, tidak ada lagi peristiwa siklus hidup penerapan yang dijalankan pada grup penerapan untuk penerapan yang dihentikan.

  • Penyebaran tidak segera berhenti, dan operasi mengembalikan status tertunda. Dalam kasus ini, beberapa peristiwa siklus hidup penerapan mungkin masih berjalan di grup penerapan. Setelah operasi yang tertunda selesai, panggilan berikutnya untuk menghentikan penyebaran mengembalikan status berhasil.

  • Penerapan tidak dapat berhenti, dan operasi mengembalikan kesalahan. Untuk informasi selengkapnya, lihat Informasi kesalahan dan Kesalahan umum di Referensi AWS CodeDeploy API.

Penerapan ulang dan rollback penerapan

CodeDeploy mengimplementasikan rollback dengan mengalihkan lalu lintas dari tugas pengganti yang disetel ke set tugas asli.

Anda dapat mengonfigurasi grup penerapan untuk secara otomatis memutar kembali penerapan saat kondisi tertentu terpenuhi, termasuk saat penerapan gagal atau ambang batas pemantauan alarm terpenuhi. Anda juga dapat mengganti pengaturan rollback yang ditentukan untuk grup penerapan dalam penerapan individual.

Anda juga dapat memilih untuk mengembalikan penerapan yang gagal dengan menerapkan ulang revisi yang sebelumnya digunakan secara manual.

Dalam semua kasus, penerapan baru atau rolled-back diberi ID penerapan sendiri. CodeDeploy Konsol menampilkan daftar penerapan yang merupakan hasil dari penerapan otomatis.

Jika Anda menerapkan ulang, grup target yang terkait dengan set tugas asli penerapan saat ini dikaitkan dengan set tugas pengganti penempatan ulang.

Untuk informasi selengkapnya, lihat Menerapkan ulang dan memutar kembali penerapan dengan CodeDeploy.

Amazon ECS penerapan biru/hijau melalui AWS CloudFormation

Anda dapat menggunakan AWS CloudFormation untuk mengelola penyebaran biru/hijau Amazon ECS melalui. CodeDeploy Untuk informasi selengkapnya, lihat Buat penyebaran biru/hijau Amazon ECS melalui AWS CloudFormation.

catatan

Mengelola penerapan biru/hijau Amazon ECS dengan tidak AWS CloudFormation tersedia di wilayah Asia Pasifik (Osaka).