Menggunakan pengontrol pihak ketiga untuk penerapan eksternal Amazon ECS - Amazon Elastic Container Service

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

Menggunakan pengontrol pihak ketiga untuk penerapan eksternal Amazon ECS

Jenis penyebaran eksternal memungkinkan Anda menggunakan pengontrol penyebaran pihak ketiga untuk kontrol penuh atas proses penyebaran untuk layanan Amazon ECS. Detail untuk layanan Anda dikelola, baik oleh tindakan API manajemen layanan (CreateService, UpdateService, dan DeleteService) ataupun tindakan API manajemen set tugas (CreateTaskSet, UpdateTaskSet, UpdateServicePrimaryTaskSet, dan DeleteTaskSet). Setiap tindakan API mengelola subset parameter definisi layanan.

Tindakan API UpdateService memperbarui jumlah yang diinginkan dan parameter masa tenggang pemeriksaan kondisi untuk suatu layanan. Jika tipe peluncuran, versi platform, detail penyeimbang beban, konfigurasi jaringan, atau penentuan tugas perlu diperbarui, maka Anda harus membuat set tugas baru.

Tindakan API UpdateTaskSet hanya memperbarui parameter skala untuk set tugas.

Tindakan API UpdateServicePrimaryTaskSet memodifikasi set tugas mana dalam layanan yang merupakan set tugas utama. Saat Anda memanggil tindakan API DescribeServices, tindakan tersebut mengembalikan semua bidang yang ditentukan untuk set tugas utama. Jika set tugas utama untuk layanan diperbarui, maka nilai parameter set tugas apa pun yang ada di set tugas utama baru yang berbeda dari set tugas utama lama di layanan akan diperbarui ke nilai baru saat set tugas utama baru ditentukan. Jika tidak ada set tugas utama yang ditentukan untuk layanan, maka saat menjelaskan layanan, bidang set tugas adalah nol.

Pertimbangan penyebaran eksternal

Pertimbangkan hal berikut saat menggunakan tipe deployment eksternal:

  • Jenis penyeimbang beban yang didukung adalah Application Load Balancer atau Penyeimbang Beban Jaringan.

  • Jenis peluncuran Fargate atau tipe pengontrol EXTERNAL penerapan tidak mendukung strategi penjadwalan. DAEMON

Alur kerja penerapan eksternal

Berikut ini adalah alur kerja dasar untuk mengelola penyebaran eksternal di Amazon ECS.

Untuk mengelola layanan Amazon ECS menggunakan pengontrol penyebaran eksternal
  1. Buat layanan Amazon ECS. Satu-satunya parameter yang diperlukan adalah nama layanan. Anda dapat menentukan parameter berikut saat membuat layanan menggunakan pengendali deployment eksternal. Semua parameter layanan lainnya ditentukan saat membuat set tugas dalam layanan.

    serviceName

    Tipe: String

    Diperlukan: Ya

    Nama layanan Anda. Mengizinkan hingga 255 huruf (huruf besar dan huruf kecil), angka, tanda hubung, dan garis bawah. Nama layanan harus unik dalam sebuah klaster, tetapi Anda dapat memiliki layanan yang bernama sama di beberapa klaster dalam satu Wilayah atau lebih.

    desiredCount

    Jumlah instantiasi dari tugas yang ditentukan menetapkan penentuan tugas untuk ditempatkan dan tetap berjalan dalam layanan.

    deploymentConfiguration

    Parameter deployment opsional yang mengendalikan seberapa banyak tugas yang dijalankan selama deployment dan urutan penghentian serta mulainya tugas. Untuk informasi selengkapnya, lihat deploymentConfiguration.

    tags

    Tipe: Array objek

    Diperlukan: Tidak

    Metadata yang Anda terapkan ke layanan untuk membantu Anda mengkategorikan dan mengaturnya. Setiap tanda terdiri dari kunci dan nilai opsional, yang keduanya Anda tentukan. Ketika layanan dihapus, tag akan dihapus juga. Maksimal 50 tag dapat diterapkan ke layanan. Untuk informasi selengkapnya, lihat Penandaan sumber daya Amazon ECS.

    key

    Tipe: String

    Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

    Diperlukan: Tidak

    Satu bagian dari pasangan nilai kunci yang membentuk tanda. Kunci adalah label umum yang bertindak seperti kategori untuk nilai tanda yang lebih spesifik.

    value

    Jenis: String

    Batasan Panjang: Panjang minimum 0. Panjang maksimum 256.

    Diperlukan: Tidak

    Bagian opsional pasangan nilai kunci yang membentuk tanda. Nilai bertindak sebagai deskriptor dalam kategori tanda (kunci).

    enableECSManagedTags

    Menentukan apakah akan menggunakan tag terkelola Amazon ECS untuk tugas dalam layanan. Untuk informasi selengkapnya, lihat Menandai sumber daya Anda untuk penagihan.

    propagateTags

    Tipe: String

    Nilai yang valid: TASK_DEFINITION | SERVICE

    Diperlukan: Tidak

    Menentukan apakah akan menyalin tag dari definisi tugas atau layanan untuk tugas-tugas dalam layanan. Jika tidak ada nilai yang ditentukan, tag tidak disalin. Tag hanya dapat disalin ke tugas dalam layanan selama pembuatan layanan. Untuk menambahkan tag ke tugas setelah pembuatan layanan atau pembuatan tugas, gunakan tindakan TagResource API.

    healthCheckGracePeriodSeconds

    Tipe: Integer

    Wajib: Tidak

    Periode waktu, dalam hitungan detik, bahwa penjadwal layanan Amazon ECS harus mengabaikan pemeriksaan kesehatan target Elastic Load Balancing yang tidak sehat, pemeriksaan kesehatan kontainer, dan pemeriksaan kesehatan Route 53 setelah tugas memasuki suatu keadaan. RUNNING Ini hanya berlaku jika layanan Anda dikonfigurasi untuk menggunakan penyeimbang beban. Jika layanan Anda memiliki penyeimbang beban yang ditentukan dan Anda tidak menentukan nilai tenggang pemeriksaan kesehatan, nilai default akan 0 digunakan.

    Jika tugas layanan Anda membutuhkan waktu cukup lama untuk memulai dan menanggapi pemeriksaan kesehatan, Anda dapat menentukan masa tenggang pemeriksaan kesehatan hingga 2.147.483.647 detik selama penjadwal layanan ECS mengabaikan status pemeriksaan kesehatan. Masa tenggang ini dapat mencegah penjadwal layanan ECS menandai tugas sebagai tidak sehat dan menghentikannya sebelum mereka punya waktu untuk muncul.

    Jika Anda tidak menggunakan Elastic Load Balancing, kami sarankan Anda menggunakan startPeriod parameter pemeriksaan kesehatan definisi tugas. Untuk informasi lebih lanjut, lihat Pemeriksaan Kesehatan.

    schedulingStrategy

    Strategi penjadwalan yang akan digunakan. Layanan yang menggunakan pengendali deployment eksternal hanya mendukung strategi penjadwalan REPLICA. Untuk informasi selengkapnya, lihat Konsep penjadwal layanan.

    placementConstraints

    Susunan objek batasan penempatan yang akan digunakan untuk tugas di layanan Anda. Anda dapat menentukan maksimal 10 batasan per tugas (batas ini mencakup batasan dalam penentuan tugas dan batasan yang ditentukan pada waktu aktif). Jika Anda menggunakan tipe peluncuran Fargate, batasan penempatan tugas tidak didukung.

    placementStrategy

    Strategi batasan objek yang akan digunakan untuk tugas-tugas dalam layanan Anda. Anda dapat menentukan maksimal empat aturan strategi per layanan.

    Berikut ini adalah contoh penentuan layanan untuk membuat layanan menggunakan pengendali deployment eksternal.

    { "cluster": "", "serviceName": "", "desiredCount": 0, "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION" }
  2. Buat set tugas awal. Set tugas berisi detail berikut tentang layanan Anda:

    taskDefinition

    Penentuan tugas untuk tugas-tugas dalam set tugas yang akan digunakan.

    launchType

    Tipe: String

    Nilai yang valid: EC2 | FARGATE | EXTERNAL

    Diperlukan: Tidak

    Jenis peluncuran untuk menjalankan layanan Anda. Jika jenis peluncuran tidak ditentukan, default capacityProviderStrategy digunakan secara default. Untuk informasi selengkapnya, lihat Jenis peluncuran Amazon ECS.

    Jika launchType ditentukan, parameter capacityProviderStrategy harus dihilangkan.

    platformVersion

    Tipe: String

    Wajib: Tidak

    Versi platform tempat tugas Anda dalam layanan berjalan. Versi platform hanya ditentukan untuk tugas yang menggunakan tipe peluncuran Fargate. Jika tidak ditentukan, versi terbaru (LATEST) digunakan secara default.

    AWS Versi platform Fargate digunakan untuk merujuk ke lingkungan runtime tertentu untuk infrastruktur tugas Fargate. Saat menentukan versi LATEST platform saat menjalankan tugas atau membuat layanan, Anda mendapatkan versi platform terbaru yang tersedia untuk tugas Anda. Saat Anda meningkatkan layanan Anda, tugas-tugas tersebut menerima versi platform yang ditentukan pada penerapan layanan saat ini. Untuk informasi selengkapnya, lihat Versi platform Fargate Linux.

    catatan

    Versi platform tidak ditentukan untuk tugas yang menggunakan tipe peluncuran EC2.

    loadBalancers

    Objek penyeimbang beban yang mewakili penyeimbang beban yang akan digunakan bersama layanan Anda. Saat menggunakan pengontrol penyebaran eksternal, hanya Application Load Balancer dan Network Load Balancer yang didukung. Jika Anda menggunakan Application Load Balancer, hanya satu grup target Application Load Balancer yang diizinkan per set tugas.

    Cuplikan berikut menunjukkan contoh loadBalancer objek untuk digunakan.

    "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ]
    catatan

    Saat menentukan objek loadBalancer, Anda harus menentukan targetGroupArn dan menghilangkan parameter loadBalancerName.

    networkConfiguration

    Konfigurasi jaringan untuk layanan. Parameter ini diperlukan untuk penentuan tugas yang menggunakan mode jaringan awsvpc untuk menerima antarmuka jaringan elastisnya sendiri, dan tidak didukung untuk mode jaringan lainnya. Untuk informasi selengkapnya tentang jaringan untuk jenis peluncuran Amazon EC2, lihat Jaringan Tugas Fargate. Untuk informasi selengkapnya tentang jaringan untuk jenis peluncuran Fargate, lihat. Jaringan tugas untuk tugas-tugas di Fargate

    serviceRegistries

    Detail registri penemuan layanan yang akan ditetapkan ke layanan ini. Untuk informasi selengkapnya, lihat Penemuan Layanan .

    scale

    Persentase titik mengambang dari jumlah tugas yang diinginkan untuk menempatkan dan agar tetap berjalan di serangkaian tugas. Nilai ditetapkan sebagai total persentase dari desiredCount layanan. Nilai yang diterima adalah angka antara 0 hingga 100.

    Berikut ini adalah contoh JSON untuk membuat set tugas untuk pengendali deployment eksternal.

    { "service": "", "cluster": "", "externalId": "", "taskDefinition": "", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "scale": { "value": null, "unit": "PERCENT" }, "clientToken": "" }
  3. Saat perubahan layanan dibutuhkan, gunakan tindakan API UpdateService, UpdateTaskSet, atau CreateTaskSet tergantung pada parameter mana yang Anda perbarui. Jika Anda membuat set tugas, maka gunakan parameter scale untuk setiap set tugas di layanan untuk menentukan berapa banyak tugas yang harus tetap berjalan di layanan. Misalnya, jika Anda memiliki layanan yang berisi tasksetA dan Anda membuat tasksetB, maka Anda dapat menguji validitas tasksetB sebelum akan menransisikan lalu lintas produksi ke sana. Anda dapat mengatur scale untuk kedua set tugas ke 100, dan saat Anda siap untuk menransisikan semua lalu lintas produksi ke tasksetB, Anda dapat memperbarui scale untuk tasksetA ke 0 untuk menurunkan skalanya.