Membuat penyebaran 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.

Membuat penyebaran Amazon ECS blue/green

Dengan menggunakan blue/green penerapan Amazon ECS, Anda dapat membuat dan menguji perubahan layanan sebelum menerapkannya di lingkungan produksi.

Prasyarat

Lakukan operasi berikut sebelum Anda memulai blue/green penerapan.

  1. Konfigurasikan izin yang sesuai.

  2. blue/green Penerapan Amazon ECS mengharuskan layanan Anda menggunakan salah satu fitur berikut: Konfigurasikan sumber daya yang sesuai.

  3. Buat aturan untuk mengarahkan lalu lintas ke revisi layanan hijau Anda. Untuk informasi selengkapnya, lihat Aturan Listener di Panduan Pengguna Network Load Balancer.

  4. Buat grup target untuk revisi layanan hijau Anda. Saat Anda menggunakan mode awsvpc jaringan untuk tugas Anda, jenis target harusip. Untuk informasi tentang grup target, lihat Grup target di Panduan Pengguna Network Load Balancer.

  5. Putuskan apakah Anda ingin menjalankan fungsi Lambda untuk peristiwa siklus hidup.

    • Pra skala naik

    • Setelah skala naik

    • Uji pergeseran lalu lintas

    • Setelah uji pergeseran lalu lintas

    • Pergeseran lalu lintas produksi

    • Setelah pergeseran lalu lintas produksi

    Buat fungsi Lambda untuk setiap peristiwa siklus hidup. Untuk informasi selengkapnya, lihat Membuat fungsi Lambda dengan konsol di Panduan AWS Lambda Pengembang.

Prosedur

Anda dapat menggunakan konsol atau AWS CLI untuk membuat blue/green layanan Amazon ECS.

Console
  1. Buka konsol di https://console.aws.amazon.com/ecs/v2.

  2. Tentukan sumber daya dari tempat Anda meluncurkan layanan.

    Untuk memulai layanan dari Langkah-langkah

    Klaster

    1. Pada halaman Klaster, pilih klaster untuk membuat layanan.

      Halaman detail cluster ditampilkan.

    2. Pada tab Layanan, pilih Buat.

    Ketentuan tugas
    1. Pada halaman Definisi tugas, pilih definisi tugas.

    2. Dari menu Deploy, pilih Buat layanan.

    Halaman Create service ditampilkan.

  3. Di bawah rincian Layanan, lakukan hal berikut:

    1. Untuk keluarga definisi Tugas, pilih definisi tugas yang akan digunakan. Kemudian, untuk revisi definisi Tugas, masukkan revisi yang akan digunakan.

    2. Untuk nama Layanan, masukkan nama untuk layanan Anda.

  4. Untuk menjalankan layanan di klaster yang ada, untuk klaster yang ada, pilih klaster. Untuk menjalankan layanan di klaster baru, pilih Buat klaster

  5. Pilih bagaimana tugas Anda didistribusikan di seluruh infrastruktur klaster Anda. Di bawah Konfigurasi komputasi, pilih opsi Anda.

    Opsi komputasi Langkah-langkah

    Strategi penyedia kapasitas

    1. Di bawah Opsi komputasi, pilih Strategi penyedia kapasitas.

    2. Pilih strategi:

      • Untuk menggunakan strategi penyedia kapasitas default cluster, pilih Use cluster default.

      • Jika klaster Anda tidak memiliki strategi penyedia kapasitas default, atau menggunakan strategi kustom, pilih Gunakan strategi penyedia kustom, Tambahkan kapasitas, lalu tentukan strategi penyedia kapasitas khusus Anda dengan menentukan Basis, penyedia Kapasitas, dan Berat.

    catatan

    Untuk menggunakan penyedia kapasitas dalam suatu strategi, penyedia kapasitas harus dikaitkan dengan cluster.

    Jenis peluncuran
    1. Di bagian Compute options, pilih Launch type.

    2. Untuk jenis Peluncuran, pilih jenis peluncuran.

    3. (Opsional) Ketika tipe peluncuran Fargate diwajibkan, untuk Versi platform, tentukan versi platform yang akan digunakan. Jika versi platform tidak ditentukan, versi LATEST platform akan digunakan.

  6. Di bawah konfigurasi Deployment, lakukan hal berikut:

    1. Untuk jenis Layanan, pilih Replika.

    2. Untuk tugas yang diinginkan, masukkan jumlah tugas untuk diluncurkan dan dipelihara dalam layanan.

    3. Agar Amazon ECS memantau distribusi tugas di seluruh Availability Zone, dan mendistribusikannya kembali saat terjadi ketidakseimbangan, di bawah penyeimbangan kembali layanan Availability Zone, pilih penyeimbangan kembali layanan Availability Zone.

    4. Untuk masa tenggang pemeriksaan Kesehatan, masukkan jumlah waktu (dalam detik) bahwa penjadwal layanan mengabaikan Elastic Load Balancing, VPC Lattice, dan pemeriksaan kesehatan kontainer yang tidak sehat setelah tugas pertama kali dimulai. Jika Anda tidak menentukan nilai tenggang pemeriksaan kesehatan, nilai default 0 digunakan.

    1. Untuk waktu Panggang, masukkan jumlah menit revisi layanan biru dan hijau akan berjalan secara bersamaan sebelum revisi biru dihentikan. Ini memungkinkan waktu untuk verifikasi dan pengujian.

    2. (Opsional) Jalankan fungsi Lambda untuk dijalankan pada tahap penerapan tertentu. Di bawah Deployment lifecycle hooks, pilih tahapan untuk menjalankan kait siklus hidup.

      Untuk menambahkan kait siklus hidup:

      1. Pilih Tambahkan.

      2. Untuk fungsi Lambda, masukkan nama fungsi atau ARN.

      3. Untuk Peran, pilih peran IAM yang memiliki izin untuk menjalankan fungsi Lambda.

      4. Untuk tahapan Siklus Hidup, pilih tahapan saat fungsi Lambda harus dijalankan.

  7. Untuk mengonfigurasi cara Amazon ECS mendeteksi dan menangani kegagalan penerapan, perluas deteksi kegagalan Deployment, lalu pilih opsi Anda.

    1. Untuk menghentikan penerapan saat tugas tidak dapat dimulai, pilih Gunakan pemutus sirkuit penyebaran Amazon ECS.

      Agar perangkat lunak secara otomatis memutar kembali penerapan ke status penerapan yang terakhir selesai saat pemutus sirkuit penyebaran mengatur penerapan ke status gagal, pilih Rollback on failure.

    2. Untuk menghentikan penerapan berdasarkan metrik aplikasi, pilih Gunakan CloudWatch alarm. Kemudian, dari nama CloudWatch alarm, pilih alarm. Untuk membuat alarm baru, buka CloudWatch konsol.

      Agar perangkat lunak secara otomatis memutar kembali penerapan ke status penerapan yang terakhir selesai saat CloudWatch alarm menyetel penerapan ke status gagal, pilih Rollback on failure.

  8. (Opsional) Untuk menghubungkan layanan Anda menggunakan Service Connect, perluas Service Connect, lalu tentukan yang berikut ini:

    1. Pilih Aktifkan Service Connect.

    2. Di bawah konfigurasi Service Connect, tentukan mode klien.

      • Jika layanan Anda menjalankan aplikasi klien jaringan yang hanya perlu terhubung ke layanan lain di namespace, pilih sisi Klien saja.

      • Jika layanan Anda menjalankan aplikasi jaringan atau layanan web dan perlu menyediakan titik akhir untuk layanan ini, dan terhubung ke layanan lain di namespace, pilih Klien dan server.

    3. Untuk menggunakan namespace yang bukan namespace cluster default, untuk Namespace, pilih namespace layanan.

    4. (Opsional) Konfigurasikan aturan header lalu lintas uji untuk blue/green penerapan. Di bawah Uji perutean lalu lintas, tentukan yang berikut ini:

      1. Pilih Aktifkan aturan header lalu lintas pengujian untuk merutekan permintaan tertentu ke revisi layanan hijau selama pengujian.

      2. Untuk aturan pencocokan Header, konfigurasikan kriteria untuk lalu lintas pengujian perutean:

        • Nama header: Masukkan nama header HTTP untuk dicocokkan (misalnya, X-Test-Version atauUser-Agent).

        • Jenis kecocokan: Pilih kriteria yang cocok:

          • Pencocokan tepat: Permintaan rute di mana nilai header sama persis dengan nilai yang ditentukan

          • Header hadir: Permintaan rute yang berisi header yang ditentukan, terlepas dari nilainya

          • Pencocokan pola: Permintaan rute di mana nilai header cocok dengan pola tertentu

        • Nilai header (jika menggunakan kecocokan persis atau kecocokan pola): Masukkan nilai atau pola yang cocok.

        Anda dapat menambahkan beberapa aturan pencocokan header untuk membuat logika perutean yang kompleks. Permintaan yang cocok dengan aturan yang dikonfigurasi akan diarahkan ke revisi layanan hijau untuk pengujian.

      3. Pilih Tambahkan aturan header untuk mengonfigurasi kondisi pencocokan header tambahan.

      catatan

      Aturan header lalu lintas uji memungkinkan Anda memvalidasi fungsionalitas baru dengan lalu lintas terkontrol sebelum menyelesaikan penerapan penuh. Ini memungkinkan Anda untuk menguji revisi layanan hijau dengan permintaan khusus (seperti yang dari alat pengujian internal atau pengguna beta) sambil mempertahankan arus lalu lintas normal ke revisi layanan biru.

    5. (Opsional) Tentukan konfigurasi log. Pilih Gunakan koleksi log. Opsi default mengirimkan log kontainer ke CloudWatch Log. Opsi driver log lainnya dikonfigurasi menggunakan AWS FireLens. Untuk informasi selengkapnya, lihat Kirim log Amazon ECS ke AWS layanan atau AWS Partner.

      Berikut ini menjelaskan setiap tujuan log kontainer secara lebih rinci.

      • Amazon CloudWatch — Konfigurasikan tugas untuk mengirim log kontainer ke CloudWatch Log. Opsi driver log default disediakan, yang membuat grup CloudWatch log atas nama Anda. Untuk menentukan nama grup log yang berbeda, ubah nilai opsi driver.

      • Amazon Data Firehose — Konfigurasikan tugas untuk mengirim log kontainer ke Firehose. Opsi driver log default disediakan, yang mengirim log ke aliran pengiriman Firehose. Untuk menentukan nama aliran pengiriman yang berbeda, ubah nilai opsi driver.

      • Amazon Kinesis Data Streams — Konfigurasikan tugas untuk mengirim log kontainer ke Kinesis Data Streams. Opsi driver log default disediakan, yang mengirim log ke aliran Kinesis Data Streams. Untuk menentukan nama aliran yang berbeda, ubah nilai opsi driver.

      • Amazon OpenSearch Service - Konfigurasikan tugas untuk mengirim log kontainer ke domain OpenSearch Layanan. Opsi driver log harus disediakan.

      • Amazon S3 — Konfigurasikan tugas untuk mengirim log kontainer ke bucket Amazon S3. Opsi driver log default disediakan, tetapi Anda harus menentukan nama bucket Amazon S3 yang valid.

  9. (Opsional) Konfigurasikan Load balancing untuk penerapan biru/hijau.

    Jenis Elastic Load Balancing Langkah-langkah

    Penyeimbang Beban Aplikasi

    1. Untuk tipe Load balancer, pilih Application Load Balancer.

    2. Pilih Buat penyeimbang beban baru untuk membuat Application Load Balancer baru atau Gunakan penyeimbang beban yang ada untuk memilih Application Load Balancer yang ada.

    3. Untuk Container, pilih wadah yang menghosting layanan.

    4. Untuk nama Load balancer, masukkan nama unik.

    5. Untuk Listener, masukkan port dan protokol untuk Application Load Balancer untuk mendengarkan permintaan koneksi. Secara default, penyeimbang beban akan dikonfigurasi untuk menggunakan port 80 dan HTTP.

      • Untuk aturan Produksi, masukkan urutan Evaluasi dan pola Path untuk aturan tersebut.

        Aturan ini untuk lalu lintas revisi layanan produksi (biru) Anda.

      • Untuk aturan Uji, masukkan urutan Evaluasi dan pola Path untuk aturan tersebut.

        Aturan ini untuk lalu lintas revisi layanan pengujian (hijau) Anda.

    6. Untuk grup Target, konfigurasikan berikut ini:

      • Untuk nama grup Target, masukkan nama dan protokol untuk grup target yang diminta oleh Application Load Balancer.

      • Untuk Protocol, pilih protokol untuk grup target yang diminta oleh Application Load Balancer. Secara default, grup target merutekan permintaan ke kontainer pertama yang ditentukan dalam definisi tugas Anda.

      • Untuk penundaan degregistrasi, masukkan jumlah detik untuk penyeimbang beban untuk mengubah status target menjadi. UNUSED Waktu default adalah 300 detik.

      • Untuk jalur pemeriksaan Kesehatan, masukkan jalur yang ada di dalam wadah Anda di mana Application Load Balancer secara berkala mengirimkan permintaan untuk memverifikasi kesehatan koneksi antara Application Load Balancer dan container. Defaultnya adalah root directory (/).

      • Untuk nama grup Alternatif, masukkan nama grup untuk grup target untuk revisi layanan pengujian (hijau) Anda.

    Penyeimbang Beban Jaringan
    1. Untuk jenis Load balancer, pilih Network Load Balancer.

    2. Untuk Load Balancer, pilih Network Load Balancer yang sudah ada.

    3. Untuk Pilih kontainer untuk memuat keseimbangan, pilih kontainer yang menampung layanan.

    4. Untuk Production listener, pilih port Production listener, dan protokol Production listener.

      Ini adalah pendengar untuk lalu lintas revisi layanan produksi (biru) Anda.

    5. Untuk Test listener, pilih port Test listener, dan protokol Test listener.

      Ini adalah pendengar untuk lalu lintas revisi layanan pengujian (hijau) Anda.

    6. Untuk grup Target, konfigurasikan berikut ini:

      • Untuk nama grup Target, masukkan nama dan protokol untuk grup target yang diminta oleh Network Load Balancer.

      • Untuk Protocol, pilih protokol untuk grup target yang diminta oleh Network Load Balancer. Secara default, grup target merutekan permintaan ke kontainer pertama yang ditentukan dalam definisi tugas Anda.

      • Untuk penundaan degregistrasi, masukkan jumlah detik untuk penyeimbang beban untuk mengubah status target menjadi. UNUSED Waktu default adalah 300 detik.

      • Untuk jalur pemeriksaan Kesehatan, masukkan jalur yang ada di dalam wadah Anda di mana Application Load Balancer secara berkala mengirimkan permintaan untuk memverifikasi kesehatan koneksi antara Application Load Balancer dan container. Defaultnya adalah root directory (/).

      • Untuk nama grup Alternatif, masukkan nama grup untuk grup target untuk revisi layanan pengujian (hijau) Anda.

  10. (Opsional) Untuk membantu mengidentifikasi layanan dan tugas Anda, perluas bagian Tag, lalu konfigurasikan tag Anda.

    Agar Amazon ECS secara otomatis menandai semua tugas yang baru diluncurkan dengan nama cluster dan tag definisi tugas, pilih Aktifkan tag terkelola Amazon ECS, lalu untuk menyebarkan tag dari, pilih Definisi tugas.

    Agar Amazon ECS secara otomatis menandai semua tugas yang baru diluncurkan dengan nama cluster dan tag layanan, pilih Aktifkan tag terkelola Amazon ECS, lalu untuk menyebarkan tag dari, pilih Layanan.

    Menambah atau menghapus tanda.

    • [Tambahkan tag] Pilih Tambah tag, lalu lakukan hal berikut:

      • Untuk Kunci, masukkan nama kunci.

      • Untuk Nilai, masukkan nilai kunci.

    • [Menghapus tanda] Di samping tanda, pilih Hapus tanda.

  11. Pilih Buat.

AWS CLI
  1. Buat file dengan nama service-definition.json dengan konten berikut ini.

    Ganti user-input dengan nilai-nilai Anda.

    { "serviceName": "myBlueGreenService", "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster", "taskDefinition": "sample-fargate:1", "desiredCount": 5, "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-09ce6e74c116a2299", "subnet-00bb3bd7a73526788", "subnet-0048a611aaec65477" ], "securityGroups": [ "sg-09d45005497daa123" ], "assignPublicIp": "ENABLED" } }, "deploymentController": { "type": "ECS" }, "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 2, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true }, "lifecycleHooks": [ { "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample", "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke", "lifecycleStages": [ "PRE_SCALE_UP" ] } ] }, "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197", "containerName": "fargate-app", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199", "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS" } } ] }
  2. Jalankan create-service.

    Ganti user-input dengan nilai-nilai Anda.

    aws ecs create-service --cli-input-json file://service-definition.json

    Atau, Anda dapat menggunakan contoh berikut yang membuat layanan blue/green penyebaran dengan konfigurasi penyeimbang beban:

    aws ecs create-service \ --cluster "arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster" \ --service-name "blue-green-example-service" \ --task-definition "nginxServer:1" \ --launch-type "FARGATE" \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890,subnet-abcdef,subnet-fedcba],securityGroups=[sg-12345],assignPublicIp=ENABLED}" \ --desired-count 3 \ --deployment-controller "type=ECS" \ --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \ --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg2/0987654321fedcba,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole}"

Langkah selanjutnya

  • Perbarui layanan untuk memulai penyebaran. Untuk informasi selengkapnya, lihat Memperbarui layanan Amazon ECS.

  • Pantau proses penyebaran untuk memastikannya mengikuti blue/green pola:

    • Revisi layanan hijau dibuat dan ditingkatkan

    • Lalu lintas uji diarahkan ke revisi hijau (jika dikonfigurasi)

    • Lalu lintas produksi dialihkan ke revisi hijau

    • Setelah waktu memanggang, revisi biru dihentikan