Dengan Cloud Deploy, Anda dapat men-deploy ke target yang dikonfigurasi untuk merepresentasikan beberapa target, dan aplikasi Anda di-deploy ke target tersebut secara paralel (bersamaan). Target yang Anda identifikasi sebagai tahap dalam pipeline disebut multi-target, dan target yang membentuk multi-target disebut target turunan.
Anda dapat menggunakan deployment paralel dengan jenis target apa pun yang didukung Cloud Deploy.
Alasan deployment paralel
Anda dapat menggunakan deployment paralel, misalnya, untuk men-deploy aplikasi ke beberapa target produksi. Dalam hal ini, Anda tidak perlu men-deploy ke setiap target secara berurutan, karena tidak ada progres (misalnya, dari dev ke staging ke produksi).
Dan deployment paralel ini dapat menjadi bagian dari progres pipeline penayangan normal:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].
Resource Cloud Deploy yang digunakan untuk deployment paralel
Deployment paralel menggunakan resource khusus Cloud Deploy berikut:
multi-target
Multi-target adalah target yang dikonfigurasi dengan properti
multiTarget, di tingkat teratas YAML konfigurasi target, dan bukan merujuk pada cluster atau layanan runtime, tetapi merujuk pada satu atau beberapa target lain, menggunakanmultiTarget.targetIds.Target turunan
Target turunan adalah target apa pun yang dirujuk oleh multi-target sebagai
multiTarget.targetIds.Peluncuran pengontrol
Peluncuran pengontrol adalah peluncuran yang sesuai dengan multi-target.
Lihat Batasan untuk mengetahui informasi selengkapnya tentang hal yang dapat dan tidak dapat Anda lakukan dengan peluncuran pengontrol.
-
Lihat Batasan untuk mengetahui informasi selengkapnya tentang hal yang dapat dan tidak dapat Anda lakukan dengan peluncuran anak.
Menyiapkan deployment paralel
Penyiapan deployment paralel terdiri dari penentuan satu multi-target dan jumlah target turunan yang Anda butuhkan (hingga batas). Definisi target sama seperti untuk semua target, kecuali untuk yang berikut:
- Multi-target mencakup properti
multiTarget. - Target turunan tidak menyertakan properti
multiTarget, tetapi dirujuk dari multi-target menggunakan propertimultiTarget.targetIds. - Anda dapat mengonfigurasi multi-target untuk disetujui, tetapi tidak untuk target turunan,
yang tidak boleh menyertakan
requireApproval:true.
Multi-target dan target turunan dapat menyertakan konfigurasi lingkungan eksekusi kustom. Jika target turunan tidak menentukan lingkungan eksekusi, target tersebut akan mewarisi lingkungan yang ditentukan dalam definisi multi-target, atau default. Lihat Lingkungan eksekusi dan deployment paralel untuk mengetahui detail selengkapnya.
Mengonfigurasi multi-target
Multi-target adalah satu target yang diidentifikasi sebagai tahap dalam pipeline pengiriman Anda, tetapi mengarah ke satu atau beberapa target turunan.
Konfigurasi multi-target mencakup properti multiTarget. Multi-target tidak boleh memiliki properti gke, run, atau anthosCluster.
Konfigurasi untuk multi-target sama terlepas dari runtime yang Anda gunakan untuk men-deploy.
Di YAML pipeline pengiriman atau di file YAML terpisah, buat definisi target dasar, termasuk multiTarget:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]
Dalam YAML ini...
TARGET_NAME adalah nama multi-target ini, yang digunakan dalam definisi pipeline pengiriman, properti
stages.targetId.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn adalah nama target turunan yang digunakan untuk men-deploy multi-target ini. Setiap nama sesuai dengan properti
namedalam definisi target turunan.
Keberadaan properti multiTarget.targetIds menjadikan target ini sebagai
multi-target.
Mengonfigurasi target turunan
Untuk setiap target yang diidentifikasi sebagai turunan dalam konfigurasi multi-target, konfigurasi target lain, sebagai target turunan:
Di YAML pipeline pengiriman atau di file YAML terpisah, buat definisi target dasar:
GKE
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
Dalam YAML ini...
CHILD_TARGET1 adalah nama target anak ini. Nama sesuai dengan satu anggota dalam daftar target di properti
multiTarget.targetIdsdalam definisi multi-target.Nilai properti
gke.clusteradalah nama resource cluster yang dirujuk target ini, termasuk ID project, region, dan nama cluster.
Target ini dikonfigurasi sama seperti target GKE standar.
Satu-satunya hal yang menjadikan target ini sebagai target turunan adalah bahwa target ini dirujuk oleh
properti multiTarget.targetIds di multi-target.
Cloud Run
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
location: projects/PROJECT_ID/locations/REGION
Dalam YAML ini...
CHILD_TARGET1 adalah nama target anak ini. Nama sesuai dengan satu anggota dalam daftar target di properti
multiTarget.targetIdsdalam definisi multi-target.Nilai properti
run.locationadalah nama resource layanan Cloud Run yang dirujuk target ini, termasuk ID project dan region.
Target ini dikonfigurasi sama seperti target Cloud Run
standar. Satu-satunya hal yang menjadikan target ini sebagai target turunan adalah bahwa target ini dirujuk
oleh properti multiTarget.targetIds di multi-target.
Cluster terpasang GKE
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME
Dalam YAML ini...
CHILD_TARGET1 adalah nama target anak ini. Nama sesuai dengan satu anggota dalam daftar target di properti
multiTarget.targetIdsdalam definisi multi-target.MEMBERSHIP_NAME adalah nama yang Anda pilih saat mendaftarkan cluster ke fleet.
Target Kustom
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
customTargetType: CUSTOM_TARGET_TYPE_NAME
Dalam YAML ini...
CHILD_TARGET1 adalah nama target anak ini. Nama sesuai dengan salah satu anggota dalam daftar target di properti
multiTarget.targetIdsdalam definisi multi-target.CUSTOM_TARGET_TYPE_NAME adalah nama jenis target kustom yang digunakan oleh target ini.
Meneruskan parameter deployment ke target
Anda dapat membedakan target turunan dengan menyertakan parameter dalam manifes dan nilai dalam definisi pipeline pengiriman. Nilai tersebut dapat diterapkan secara terpisah ke manifest terpisah, berdasarkan pencocokan label pada target yang sesuai.
Misalnya, Anda mungkin menginginkan jumlah replika yang berbeda untuk setiap target turunan. Untuk melakukannya, Anda akan menyertakan parameter dan nilai dalam progresi pipeline pengiriman, beserta label pada target turunan yang akan dicocokkan untuk setiap pasangan parameter-nilai.
Pelajari lebih lanjut parameter deployment.
Buat rilis
Dengan target multi dan target turunan yang dikonfigurasi, buat pipeline pengiriman dan resource target, lalu buat rilis seperti biasa.
Siklus proses pipeline pengiriman sama seperti pipeline dan target Cloud Deploy lainnya, kecuali saat mencapai tahap dengan multi-target, Cloud Deploy akan membuat peluncuran pengontrol untuk multi-target dan peluncuran turunan untuk men-deploy aplikasi ke setiap target turunan.
Pesan Pub/Sub sebagai respons terhadap operasi Cloud Deploy membedakan antara peluncuran pengontrol dan peluncuran turunan.
Batasan
Target multi tidak boleh memiliki lebih dari 100 target turunan.
Semua target turunan dari satu multi-target harus memiliki target runtime yang sama (misalnya, semua GKE atau semua Cloud Run).
Dalam pipeline pengiriman, target turunan hanya dapat memiliki satu target multi-induk.
Multi-target tidak boleh tanpa turunan, dan tidak boleh mereferensikan dirinya sendiri atau multi-target lain sebagai target turunan.
Anda tidak dapat menggunakan target turunan lebih dari sekali dalam satu pipeline pengiriman, tetapi Anda dapat menggunakannya kembali dalam pipeline yang berbeda.
Jika target turunan adalah Target Kustom, semuanya harus merujuk ke
CustomTargetTypeyang sama.Kumpulan default memiliki batas serentak, tetapi kumpulan pribadi tidak.
Saat Anda men-deploy ke multi-target, semua peluncuran turunan di-deploy secara bersamaan, hingga batas serentak Cloud Build. Jika Anda memiliki lebih banyak target turunan daripada batas tersebut, tugas deployment untuk beberapa target tidak akan berjalan hingga tugas lainnya selesai, yang berarti Cloud Deploy tidak men-deploy ke semua target turunan secara bersamaan dalam kasus ini.
Selain itu, jika target mencakup tugas verifikasi, satu atau beberapa tugas verifikasi tersebut dapat dimulai sebelum aplikasi di-deploy ke semua target turunan.
Jika Anda perlu men-deploy secara bersamaan ke lebih banyak target daripada batas yang ditentukan dalam dokumentasi Cloud Build, Anda memiliki dua opsi:
Minta penambahan jumlah build serentak yang dapat Anda jalankan.
Siapkan pool pribadi dan konfigurasi target Anda untuk menggunakan pool tersebut.
Lingkungan eksekusi dan deployment paralel
Setiap target dapat dikonfigurasi untuk menggunakan lingkungan eksekusi non-default.
Jika multi-target memiliki lingkungan eksekusi non-default, semua target turunan yang menggunakan lingkungan eksekusi default akan mewarisi lingkungan eksekusi non-default dari multi-target
Jika multi-target menggunakan lingkungan eksekusi default, target turunan yang dikonfigurasi dengan lingkungan eksekusi non-default akan menggunakan lingkungan eksekusi non-default tersebut.
Aturan ini mempermudah penyebaran lingkungan eksekusi ke target turunan dari multi-target, sehingga Anda tidak perlu menentukan atau mengubah lingkungan eksekusi untuk setiap target turunan, sekaligus tetap memungkinkan Anda menyesuaikan lingkungan eksekusi untuk satu atau beberapa target turunan jika perlu.
Lihat Menggunakan lingkungan eksekusi Cloud Deploy untuk mengetahui informasi selengkapnya tentang lingkungan eksekusi di Cloud Deploy.
Me-roll back deployment paralel
Jika Anda perlu melakukan roll back deployment dari beberapa target paralel, Lakukan roll back multi-target, seperti yang dijelaskan dalam Melakukan roll back target.
Persetujuan untuk deployment paralel
Seperti halnya target lainnya, Anda dapat mengonfigurasi deployment paralel untuk mewajibkan persetujuan. Namun, dengan deployment paralel, Anda hanya dapat mengonfigurasi persetujuan pada multi-target. Persetujuan atau penolakan memengaruhi semua target turunan secara bersamaan.
Melihat deployment paralel di konsol Google Cloud
Anda dapat melihat detail untuk target multi, target anak, peluncuran pengontrol, dan peluncuran anak di Google Cloud konsol.
Saat Anda melihat daftar target untuk pipeline pengiriman tertentu, di Detail Pipeline Pengiriman, multi-target akan tercantum, tetapi target turunan tidak. Namun, saat melihat detail rilis, Anda dapat melihat peluncuran pengontrol dan peluncuran turunan. Anda juga dapat melihat peluncuran pengontrol dan anak yang tercantum di tab Peluncuran di halaman detail Delivery Pipeline.
Di pemeriksa rilis, Anda dapat melihat, dan membandingkan, manifes yang dirender untuk peluncuran turunan.
Menggunakan deployment paralel dengan strategi deployment
Anda dapat men-deploy secara paralel saat menggunakan strategi deployment canary. Lihat Menggunakan deployment paralel dengan strategi deployment canary untuk mengetahui informasi selengkapnya.
Langkah berikutnya
Coba panduan memulai: Men-deploy aplikasi ke beberapa target secara bersamaan.
Pelajari lebih lanjut cara menggunakan parameter deployment.
Lihat skema konfigurasi target.
Tinjau artikel Arsitektur layanan Cloud Deploy.