Dokumen ini menjelaskan cara memverifikasi deployment Cloud Deploy.
Anda dapat mengonfigurasi Cloud Deploy dan Skaffold untuk memverifikasi bahwa aplikasi yang telah Anda deploy ke target mana pun berfungsi dengan benar. Verifikasi dilakukan menggunakan image pengujian Anda sendiri, dan Anda mengonfigurasi Cloud Deploy dan Skaffold untuk menjalankan pengujian tersebut setelah deployment selesai.
Secara default, verifikasi deployment berjalan di lingkungan eksekusi Cloud Deploy, tetapi Anda juga dapat mengonfigurasinya agar berjalan di cluster yang sama tempat aplikasi berjalan.
Bagaimana cara kerja verifikasi deployment?
Anda mengonfigurasi Skaffold untuk verifikasi.
Konfigurasi ini mengidentifikasi image container (atau beberapa image) yang akan digunakan untuk menjalankan pengujian, dan perintah spesifik (misalnya, skrip) yang akan dijalankan dari image container tersebut.
Anda dapat menentukan lebih dari satu image container. Jika Anda menentukan beberapa penampung, penampung tersebut akan dieksekusi secara paralel, bukan berurutan.
Anda mengonfigurasi satu atau beberapa target di pipeline penayangan untuk verifikasi deployment.
Konfigurasi ini mengaktifkan verifikasi untuk workload yang di-deploy ke target tersebut.
Setelah peluncuran di-deploy (
skaffold apply), Cloud Deploy menjalankan perintahskaffold verifydi lingkungan eksekusi Cloud Deploy.Untuk deployment ke Google Kubernetes Engine dan GKE Enterprise, Anda dapat secara opsional menjalankan container verifikasi (atau beberapa container) di cluster yang sama tempat container aplikasi berjalan.
Skaffold memanggil pengujian yang ditentukan dalam stanza
verifydariskaffold.yamluntuk dijalankan terhadap aplikasi yang di-deploy.Keberhasilan atau kegagalan pengujian yang dijalankan menunjukkan keberhasilan atau kegagalan verifikasi.
Keberhasilan verifikasi ditentukan oleh kode keluar container yang dieksekusi.
0menunjukkan keberhasilan. Kode keluar bukan nol menunjukkan kegagalan. Untuk menghasilkan hasil verifikasi yang diinginkan, pastikan container keluar dengan kode keluar yang sesuai. Jika lebih dari satu penampung dieksekusi sebagai bagian dari verifikasi, semuanya harus berhasil agar verifikasi berhasil.Jika verifikasi gagal, peluncuran juga akan gagal.
Jika deployment gagal selama verifikasi, Anda dapat melihatnya dengan memeriksa peluncuran:
Anda dapat mengabaikan atau mencoba lagi verifikasi yang gagal.
Anda juga dapat menghentikan tugas verifikasi yang sedang berlangsung.
Komponen yang digunakan untuk verifikasi
Resource rollout mencakup objek berikut, yang mendukung verifikasi deployment:
Fase
Kumpulan operasi (tugas) dalam peluncuran yang dikelompokkan secara logis, misalnya, deployment atau deployment dan verifikasi.
Tugas
Operasi spesifik yang akan dilakukan pada peluncuran, seperti men-deploy atau memverifikasi.
Menjalankan tugas
Turunan resource peluncuran, yaitu proses tugas adalah instance tugas, misalnya percobaan untuk men-deploy.
Untuk mengetahui informasi selengkapnya tentang resource Cloud Deploy, lihat Arsitektur layanan Cloud Deploy
Notifikasi yang dihasilkan oleh verifikasi deployment
Cloud Deploy membuat pesan Pub/Sub dan memublikasikannya untuk peristiwa berikut:
Membuat, memperbarui, dan menghapus eksekusi tugas
Notifikasi ini dipublikasikan ke topik
clouddeploy-resources, dan berisi atribut berikut:ResourceResourceType(JobRun)Action(Create,Update,Delete)ProjectNumberLocationTargetIdDeliveryPipelineIdReleaseIdRolloutIdJobRunId
Berikut adalah contoh pesan Pub/Sub untuk pembuatan
eksekusi tugas, yang dipublikasikan ke topik clouddeploy-resources:
{
"ackId": "UAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRAGAE8CKF15MFcrQVh9Dz4NGXJ9YXRiWRIJBkUHeF9cEQ1iXE5EB0nq0KDVV1dKXxYGAExQeVhbHQVoWVh0Bnn7h5nK-8HjYwk9OqKarPdtO4PY2fNHZiI9XhJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FU0Q",
"message": {
"attributes": {
"Action": "Create",
"DeliveryPipelineId": "dv-pipeline",
"JobRunId": "634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
"Location": "us-central1",
"ProjectNumber": "253401481285",
"ReleaseId": "test-release-100",
"Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-100/rollouts/test-release-100-to-dev-0001/jobRuns/634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
"ResourceType": "JobRun",
"RolloutId": "test-release-100-to-dev-0001"
},
"messageId": "5572937706805411",
"publishTime": "2022-09-07T14:00:46.040Z"
}
},
Mulai, berhasil, dan gagal menjalankan tugas
Notifikasi ini dipublikasikan ke topik
clouddeploy-operations, dan berisi atribut berikut:ResourceResourceType(JobRun)Action(Start,Succeed,Failure)ProjectNumberLocationTargetIdDeliveryPipelineIdReleaseIdRolloutIdJobRunIdPhaseIdJobIdJobType(DeployatauVerify)
Berikut adalah contoh pesan Pub/Sub untuk eksekusi tugas yang gagal, yang dipublikasikan ke topik clouddeploy-operations:
{
"ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUUBAgUBXx9cEFPdVhec2hRDRlyfWB9aVsbCAUXU3cJURsHaE5tdR-6xcvaS0NVb18UAgRFWndfXhMEblhfcy-fkK3HwvT9U0AvOemNgdZpe6jHiulvZiM9XxJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FUw",
"message": {
"attributes": {
"Action": "Failure",
"DeliveryPipelineId": "dv-pipeline",
"JobId": "verify",
"JobRunId": "b389224a-c259-4a00-ab75-c22e48bc3136",
"JobType": "Verify",
"Location": "us-central1",
"PhaseId": "stable",
"ProjectNumber": "253401481285",
"ReleaseId": "test-release-101",
"Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-101/rollouts/test-release-101-to-dev-0001/jobRuns/b389224a-c259-4a00-ab75-c22e48bc3136",
"ResourceType": "JobRun",
"RolloutId": "test-release-101-to-dev-0001",
"TargetId": "dev"
},
"messageId": "5573609905896436",
"publishTime": "2022-09-07T15:35:37.906Z"
}
},
Mengonfigurasi Cloud Deploy untuk verifikasi deployment
Mengaktifkan verifikasi deployment untuk target Cloud Deploy terdiri dari penambahan properti verify: true ke target tertentu (atau beberapa target) dalam progres pipeline pengiriman, seperti yang ditunjukkan dalam contoh ini:
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
name: my-demo-app
description: main application pipeline
serialPipeline:
stages:
- targetId: dev
profiles: []
strategy:
standard:
verify: true
- targetId: prod
profiles: []
strategy:
standard:
verify: false
Dalam konfigurasi ini, verifikasi deployment diaktifkan pada target dev,
tetapi tidak pada target prod. verify: false setara dengan menghilangkan properti
verify atau seluruh stanza strategy.
Operasi verifikasi dieksekusi dalam lingkungan eksekusi-nya sendiri.
Lingkungan eksekusi ini dapat dikonfigurasi untuk VERIFY sama seperti untuk RENDER dan DEPLOY.
Mengonfigurasi Skaffold untuk verifikasi deployment
Mengaktifkan verifikasi deployment untuk target memerlukan stanza verify dalam
file konfigurasi skaffold.yaml untuk deployment Anda. Konfigurasi ini
dapat berupa profil Skaffold tertentu, jika Anda menggunakan profil terpisah per
target.
Bagian verify ini mengidentifikasi satu atau beberapa penampung yang akan dijalankan untuk melakukan verifikasi—misalnya, pengujian integrasi. Jika Anda menentukan beberapa
penampung, penampung tersebut akan dieksekusi secara paralel, bukan berurutan.
Berikut adalah contoh skaffold.yaml yang menyertakan stanza verify:
apiVersion: skaffold/v4beta7
kind: Config
build:
artifacts:
- image: integration-test
context: integration-test
manifests:
rawYaml:
- kubernetes.yaml
deploy:
kubectl: {}
verify:
- name: verify-integration-test
container:
name: integration-test
image: integration-test
command: ["./test-systems.sh"]
- name: verify-endpoint-test
container:
name: alpine
image: alpine
command: ["/bin/sh"]
args: ["-c", "wget #ENDPOINT_URL"]
Contoh ini menunjukkan
stanza verify
yang mengidentifikasi container yang akan digunakan dan skrip pengujian yang akan dijalankan dalam container tersebut.
#ENDPOINT_URL dalam contoh ini hanyalah placeholder untuk URL aplikasi Anda, dan bukan variabel lingkungan Cloud Deploy yang tersedia.
Jalankan container verifikasi di cluster aplikasi
Secara default, verifikasi deployment berjalan di
lingkungan eksekusi Cloud Deploy. Anda juga dapat
mengonfigurasi Skaffold untuk menjalankan container verifikasi di cluster yang sama dengan tempat aplikasi Anda berjalan. Saat Anda mengonfigurasi verifikasi dalam cluster
di skaffold.yaml dan mengaktifkan verifikasi pada target, verifikasi akan berjalan secara otomatis di cluster target tersebut.
Kemampuan ini hanya tersedia untuk deployment ke GKE dan GKE Enterprise, bukan untuk Cloud Run. Deployment ke Cloud Run hanya dapat menjalankan verifikasi di lingkungan eksekusi Cloud Deploy.
Untuk menjalankan container verifikasi di cluster, sertakan bagian
executionMode.kubernetesCluster dalam file konfigurasi skaffold.yaml, di dalam bagian verify untuk container verifikasi tertentu:
verify:
- name:
container:
name:
image:
command:
args:
executionMode:
kubernetesCluster:
Berikut adalah contoh stanza verifikasi yang menyertakan executionMode untuk
memanggil penampung verifikasi di cluster aplikasi:
verify:
- name: integration-test-container
container:
name: integration-test-container
image: integration-test-container
executionMode:
kubernetesCluster: {}
Bagian executionMode bersifat opsional, dan jika Anda menghapusnya, Skaffold akan menjalankan
container verifikasi di lingkungan eksekusi Cloud Deploy.
Coba verifikasi lagi
Jika tugas verifikasi gagal, Anda dapat mencoba lagi verifikasi dengan membuat proses tugas baru:
gcloud deploy rollouts retry-job ROLLOUT_NAME \
--job-id=JOB_ID \
--phase-id=PHASE_ID \
--delivery-pipeline=PIPELINE_NAME \
--release=RELEASE_NAME \
--region=REGION
Mencoba ulang verifikasi akan mengubah status peluncuran dari FAILED menjadi
IN_PROGRESS.
Anda hanya dapat mencoba kembali verifikasi untuk peluncuran yang tugas verifikasinya gagal.
Variabel lingkungan yang tersedia
Cloud Deploy menyediakan dan mengisi variabel lingkungan berikut di lingkungan eksekusi VERIFY,
yang dapat Anda gunakan untuk pengujian:
ANTHOS_MEMBERSHIPUntuk target jenis
ANTHOS, nama resource yang sepenuhnya ditentukan dari keanggotaan Anthos.CLOUD_RUN_LOCATIONUntuk target jenis
RUN, region tempat layanan Cloud Run di-deploy.CLOUD_RUN_PROJECTUntuk target berjenis
RUN, project tempat layanan Cloud Run dibuat.CLOUD_RUN_SERVICEUntuk target jenis
RUN, nama resource yang ditentukan sepenuhnya dari layanan Cloud Run yang di-deploy, misalnyaprojects/p/locations/us-central1/services/dev.CLOUD_RUN_SERVICE_URLSUntuk target jenis
RUN, URL atau URL (daftar yang dipisahkan koma) yang akan digunakan pengguna akhir untuk mengakses layanan Anda. Anda dapat menemukannya di detail layanan Cloud Run untuk layanan Anda, di Google Cloud konsol.CLOUD_RUN_REVISIONUntuk target jenis
RUN, revisi spesifik layanan Cloud Run.GKE_CLUSTERUntuk target jenis
GKE, nama resource yang ditentukan sepenuhnya dari cluster Google Kubernetes Engine, misalnyaprojects/p/locations/us-central1/clusters/dev.TARGET_TYPEJenis runtime spesifik target.
GKE,ANTHOS, atauRUN.CLOUD_DEPLOY_LOCATIONRegion tempat lingkungan eksekusi berjalan.
CLOUD_DEPLOY_DELIVERY_PIPELINEPipeline penayangan ID yang menjalankan lingkungan eksekusi.
CLOUD_DEPLOY_TARGETID target tempat lingkungan eksekusi berjalan.
CLOUD_DEPLOY_PROJECTNomor project Google Cloud tempat lingkungan eksekusi berjalan.
CLOUD_DEPLOY_PROJECT_IDID project Google Cloud yang berisi resource Cloud Deploy.
CLOUD_DEPLOY_RELEASEID rilis tempat verifikasi akan berjalan.
CLOUD_DEPLOY_ROLLOUTID peluncuran yang berisi tugas untuk verifikasi.
CLOUD_DEPLOY_JOB_RUNID operasi tugas yang merepresentasikan eksekusi tugas saat ini.
CLOUD_DEPLOY_PHASEFase dalam peluncuran yang berisi tugas untuk verifikasi.
Men-deploy parameter sebagai variabel lingkungan
Selain variabel lingkungan yang tercantum di bagian ini, Cloud Deploy dapat meneruskan parameter deployment yang telah Anda tetapkan ke container kustom Anda.