Migrasikan penerapan CodeDeploy blue/green deployments to Amazon ECS blue/green - Amazon Elastic Container Service

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

Migrasikan penerapan CodeDeploy blue/green deployments to Amazon ECS blue/green

CodeDeploy blue/green and Amazon ECS blue/greenpenerapan menyediakan fungsionalitas serupa, tetapi berbeda dalam cara Anda mengonfigurasi dan mengelolanya.

CodeDeploy ikhtisar penyebaran biru/hijau

Saat membuat layanan Amazon ECS menggunakan CodeDeploy, Anda:

  1. Buat penyeimbang beban dengan pendengar produksi dan (opsional) pendengar pengujian. Setiap pendengar dikonfigurasi dengan aturan tunggal (default) yang merutekan semua lalu lintas ke satu grup target (grup target utama).

  2. Buat layanan Amazon ECS, dikonfigurasi untuk menggunakan pendengar dan grup target, dengan deploymentController jenis yang disetel ke. CODE_DEPLOY Pembuatan layanan menghasilkan pembuatan set tugas (biru) yang terdaftar dengan grup target yang ditentukan.

  3. Buat grup CodeDeploy penyebaran (sebagai bagian dari CodeDeploy aplikasi), dan konfigurasikan dengan detail klaster Amazon ECS, nama layanan, pendengar penyeimbang beban, dua grup target (grup target utama yang digunakan dalam aturan pendengar produksi, dan grup target sekunder yang akan digunakan untuk tugas pengganti), peran layanan (untuk memberikan izin CodeDeploy untuk memanipulasi Amazon ECS dan sumber daya Elastic Load Balancing) dan berbagai parameter yang mengontrol perilaku penerapan.

Dengan CodeDeploy, versi baru layanan digunakan menggunakanCreateDeployment(), menentukan nama CodeDeploy aplikasi, nama grup penyebaran, dan AppSpec file yang memberikan rincian revisi baru dan kait siklus hidup opsional. CodeDeploy Penerapan membuat set tugas pengganti (hijau) dan mendaftarkan tugasnya dengan kelompok target sekunder. Ketika ini menjadi sehat, tersedia untuk pengujian (opsional) dan untuk produksi. Dalam kedua kasus, perutean ulang dicapai dengan mengubah aturan pendengar masing-masing untuk menunjuk ke kelompok target sekunder yang terkait dengan set tugas hijau. Rollback dicapai dengan mengubah aturan pendengar produksi kembali ke grup target utama.

Ikhtisar blue/green penyebaran Amazon ECS

Dengan blue/green penerapan Amazon ECS, Konfigurasi penyebaran adalah bagian dari layanan Amazon ECS itu sendiri:

  1. Anda harus melakukan pra-konfigurasi pendengar produksi penyeimbang beban dengan aturan yang mencakup dua grup target dengan bobot 1 dan 0.

  2. Anda perlu menentukan sumber daya berikut, atau memperbarui sumber daya layanan:

    • ARN dari aturan pendengar ini

    • Kedua kelompok sasaran

    • Peran IAM untuk memberikan izin Amazon ECS untuk memanggil Elastic Load Balancing APIs

    • Peran IAM opsional untuk menjalankan fungsi Lambda

    • Atur deploymentController tipe ke ECS dan deploymentConfiguration.strategy keBLUE_GREEN. Ini menghasilkan pembuatan penyebaran layanan (biru) yang tugasnya terdaftar pada kelompok target utama.

Dengan Amazon ECS biru/hijau, revisi layanan baru dibuat dengan menelepon Amazon ECSUpdateService(), memberikan rincian revisi baru. Penyebaran layanan membuat tugas revisi layanan baru (hijau) dan mendaftarkannya ke grup target sekunder. Amazon ECS menangani operasi perutean ulang dan rollback dengan mengalihkan bobot pada aturan pendengar.

Perbedaan implementasi utama

Sementara kedua pendekatan menghasilkan pembuatan serangkaian tugas awal, implementasi yang mendasarinya berbeda:

  • CodeDeploy menggunakan set tugas, sedangkan Amazon ECS menggunakan revisi layanan. Kumpulan tugas Amazon ECS adalah konstruksi lama yang telah digantikan oleh revisi dan penerapan layanan Amazon ECS. Yang terakhir menawarkan visibilitas yang lebih besar ke dalam proses penyebaran, serta penyebaran layanan dan riwayat revisi layanan.

  • Dengan CodeDeploy, kait siklus hidup ditentukan sebagai bagian dari AppSpec file yang dipasok ke. CreateDeployment() Ini berarti bahwa kait dapat diubah dari satu penerapan ke penerapan berikutnya. Dengan Amazon ECS biru/hijau, kait ditentukan sebagai bagian dari konfigurasi layanan, dan pembaruan apa pun akan memerlukan panggilan. UpdateService()

  • Keduanya CodeDeploy dan Amazon ECS blue/green menggunakan Lambda untuk implementasi hook, tetapi input dan output yang diharapkan berbeda.

    Dengan CodeDeploy, fungsi harus memanggil PutLifecycleEventHookExecutionStatus() untuk mengembalikan status hook, yang bisa berupa SUCCEEDED atauFAILED. Dengan Amazon ECS, respons Lambda digunakan untuk menunjukkan status hook.

  • CodeDeploy memanggil setiap hook sebagai panggilan satu kali, dan mengharapkan status eksekusi akhir akan dikembalikan dalam waktu satu jam. Kait Amazon ECS lebih fleksibel karena dapat mengembalikan IN_PROGRESS indikator, yang menandakan bahwa kait harus dipanggil kembali berulang kali hingga menghasilkan atau. SUCCEEDED FAILED Untuk informasi selengkapnya, lihat Kait siklus hidup untuk penerapan layanan Amazon ECS.

Pendekatan migrasi

Ada tiga pendekatan utama untuk bermigrasi dari CodeDeploy blue/green to Amazon ECS blue/green penerapan. Setiap pendekatan memiliki karakteristik yang berbeda dalam hal kompleksitas, risiko, kemampuan rollback, dan potensi downtime.

Menggunakan kembali sumber daya Elastic Load Balancing yang sama dengan yang digunakan CodeDeploy

Anda memperbarui layanan Amazon ECS yang ada untuk menggunakan pengontrol penyebaran Amazon ECS dengan strategi penerapan, bukan pengontrol blue/green penerapan. CodeDeploy Pertimbangkan hal berikut saat menggunakan pendekatan ini:

  • Prosedur migrasi lebih sederhana karena Anda memperbarui pengontrol penyebaran dan strategi penyebaran layanan Amazon ECS yang ada.

  • Tidak ada downtime saat dikonfigurasi dan dimigrasikan dengan benar.

  • Rollback mengharuskan Anda mengembalikan revisi layanan.

  • Risikonya tinggi karena tidak ada konfigurasi paralel biru/hijau.

Anda menggunakan pendengar penyeimbang beban dan grup target yang sama dengan yang digunakan. CodeDeploy Jika Anda menggunakan AWS CloudFormation, lihatMigrasi template AWS CloudFormation CodeDeploy blue/green deployment template to an Amazon ECS blue/green AWS CloudFormation.

  1. Ubah aturan default production/test pendengar untuk menyertakan grup target alternatif dan atur bobot grup target utama menjadi 1 dan grup target alternatif ke 0.

    Untuk CodeDeploy, pendengar penyeimbang beban yang dilampirkan ke layanan dikonfigurasi dengan aturan tunggal (default) yang merutekan semua lalu lintas ke satu grup target. Untuk Amazon ECS biru/hijau, pendengar penyeimbang beban harus dikonfigurasi sebelumnya dengan aturan yang mencakup dua grup target dengan bobot.

  2. Perbarui layanan Amazon ECS yang ada dengan memanggil UpdateService API dan menyetel parameter deploymentController keECS, dan parameter deploymentStrategy keBLUE_GREEN. Tentukan ARNs grup target, grup target alternatif, pendengar produksi, dan pendengar uji opsional.

  3. Verifikasi bahwa layanan berfungsi seperti yang diharapkan.

  4. Hapus CodeDeploy pengaturan untuk layanan Amazon ECS ini karena Anda sekarang menggunakan Amazon ECS biru/hijau.

Layanan baru dengan penyeimbang beban yang ada

Pendekatan ini menggunakan blue/green strategi untuk migrasi.

Pertimbangkan hal berikut saat menggunakan pendekatan ini:

  • Ada gangguan minimal. Ini hanya terjadi selama pertukaran port Elastic Load Balancing.

  • Rollback mengharuskan Anda mengembalikan swap port Elastic Load Balancing.

  • Risikonya rendah karena ada konfigurasi paralel. Oleh karena itu Anda dapat menguji sebelum shift lalu lintas.

  1. Biarkan pendengar, grup target, dan layanan Amazon ECS untuk CodeDeploy penyiapan utuh sehingga Anda dapat dengan mudah mengembalikan ke pengaturan ini jika diperlukan.

  2. Buat grup target baru dan pendengar baru (dengan port berbeda dari pendengar asli) di bawah penyeimbang beban yang ada. Kemudian, buat layanan Amazon ECS baru yang cocok dengan layanan Amazon ECS yang ada kecuali yang Anda gunakan ECS sebagai pengontrol penerapan, BLUE_GREEN sebagai strategi penerapan, dan teruskan ARNs untuk grup target baru dan aturan pendengar baru.

  3. Verifikasi pengaturan baru dengan mengirim lalu lintas HTTP secara manual ke layanan. Jika semuanya berjalan dengan baik, tukar port pendengar asli dan pendengar baru untuk mengarahkan lalu lintas ke pengaturan baru.

  4. Verifikasi pengaturan baru, dan jika semuanya terus berfungsi seperti yang diharapkan, hapus CodeDeploy pengaturan.

Layanan baru dengan penyeimbang beban baru

Seperti pendekatan sebelumnya, pendekatan ini menggunakan blue/green strategi untuk migrasi. Perbedaan utamanya adalah peralihan dari CodeDeploy pengaturan ke pengaturan Amazon ECS blue/green terjadi pada lapisan proxy terbalik di atas penyeimbang beban. Contoh implementasi untuk lapisan proxy terbalik adalah Route 53 dan CloudFront.

Pendekatan ini cocok untuk pelanggan yang sudah memiliki lapisan proxy terbalik ini, dan jika semua komunikasi dengan layanan terjadi melaluinya (misalnya, tidak ada komunikasi langsung di tingkat penyeimbang beban).

Pertimbangkan hal berikut saat menggunakan pendekatan ini:

  • Ini membutuhkan lapisan proxy terbalik.

  • Prosedur migrasi lebih kompleks karena Anda perlu memperbarui pengontrol penyebaran dan strategi penyebaran layanan Amazon ECS yang ada.

  • Ada gangguan minimal. Ini hanya terjadi selama pertukaran port Elastic Load Balancing.

  • Rollback mengharuskan Anda membalikkan perubahan konfigurasi proxy.

  • Risikonya rendah karena ada konfigurasi paralel. Oleh karena itu Anda dapat menguji sebelum shift lalu lintas.

  1. Jangan mengubah CodeDeploy pengaturan yang ada secara utuh (penyeimbang beban, pendengar, grup target, layanan Amazon ECS, dan grup penerapan). CodeDeploy

  2. Buat penyeimbang beban baru, grup target, dan pendengar yang dikonfigurasi untuk penerapan Amazon ECS. blue/green

    Konfigurasikan sumber daya yang sesuai.

  3. Buat layanan baru dengan ECS sebagai pengontrol penerapan dan BLUE_GREEN sebagai strategi penyebaran, menunjuk ke sumber daya penyeimbang beban baru.

  4. Verifikasi pengaturan baru dengan mengujinya melalui penyeimbang beban baru.

  5. Perbarui konfigurasi proxy terbalik untuk merutekan lalu lintas ke penyeimbang beban baru.

  6. Amati revisi layanan baru, dan jika semuanya terus berfungsi seperti yang diharapkan, hapus CodeDeploy pengaturan.

Langkah selanjutnya

Setelah bermigrasi ke penerapan Amazon ECS blue/green :

  • Perbarui skrip dan CI/CD pipeline penerapan Anda untuk menggunakan Amazon ECS UpdateService API, bukan API. CodeDeploy CreateDeployment

  • Perbarui pemantauan dan peringatan Anda untuk melacak penerapan layanan Amazon ECS alih-alih penerapan. CodeDeploy

  • Pertimbangkan untuk menerapkan pengujian otomatis proses penerapan baru Anda untuk memastikannya berfungsi seperti yang diharapkan.