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 apa 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 untuk berjalan di cluster yang sama tempat aplikasi berjalan.
Bagaimana cara kerja verifikasi deployment?
Anda mengonfigurasi Skaffold untuk verifikasi.
Konfigurasi ini mengidentifikasi image container yang akan digunakan untuk menjalankan pengujian, dan perintah tertentu (misalnya skrip) yang akan dijalankan dari image container tersebut.
Anda mengonfigurasi satu atau beberapa target dalam pipeline pengiriman untuk verifikasi deployment.
Konfigurasi ini memungkinkan verifikasi untuk workload yang di-deploy ke target tersebut.
Setelah peluncuran di-deploy (
skaffold apply
), Cloud Deploy akan menjalankan perintahskaffold verify
di lingkungan eksekusi Cloud Deploy.Untuk deployment ke Google Kubernetes Engine dan GKE Enterprise, Anda dapat secara opsional menjalankan penampung verifikasi di cluster yang sama dengan penampung aplikasi yang berjalan.
Skaffold memanggil pengujian atau pengujian yang ditentukan dalam stanza
verify
skaffold.yaml
Anda untuk dijalankan terhadap aplikasi yang di-deploy.Keberhasilan atau kegagalan pengujian yang dijalankan menunjukkan keberhasilan atau kegagalan verifikasi.
Keberhasilan verifikasi ditentukan oleh kode keluar penampung yang dieksekusi.
0
menunjukkan keberhasilan. Kode keluar yang bukan nol menunjukkan kegagalan. Untuk menghasilkan hasil verifikasi yang diinginkan, pastikan penampung 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 peluncuran 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.
Tugas dijalankan
Turunan dari resource peluncuran, tugas yang dijalankan adalah instance tugas, misalnya, upaya 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 tugas yang dijalankan
Notifikasi ini dipublikasikan ke topik
clouddeploy-resources
, dan berisi atribut berikut:Resource
ResourceType
(JobRun
)Action
(Create
,Update
,Delete
)ProjectNumber
Location
TargetId
DeliveryPipelineId
ReleaseId
RolloutId
JobRunId
Berikut adalah contoh pesan Pub/Sub untuk pembuatan tugas yang dijalankan, 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:Resource
ResourceType
(JobRun
)Action
(Start
,Succeed
,Failure
)ProjectNumber
Location
TargetId
DeliveryPipelineId
ReleaseId
RolloutId
JobRunId
PhaseId
JobId
JobType
(Deploy
atauVerify
)
Berikut adalah contoh pesan Pub/Sub untuk tugas yang gagal dijalankan, 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 menambahkan properti verify: true
ke target tertentu 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 di target dev
,
tetapi tidak di target prod
. verify: false
setara dengan menghapus properti verify
atau seluruh stanza strategy
.
Operasi verifikasi dijalankan dalam lingkungan eksekusi-nya sendiri.
Lingkungan eksekusi ini dapat dikonfigurasi untuk VERIFY
sama seperti yang dapat dilakukan
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 digunakan untuk profil Skaffold tertentu, jika Anda menggunakan profil terpisah per
target.
Stanza verify
ini mengidentifikasi penampung yang akan dijalankan untuk melakukan verifikasi—
misalnya, pengujian integrasi.
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 sederhana ini menunjukkan bait verify
yang mengidentifikasi penampung yang akan digunakan dan skrip pengujian yang akan dijalankan di penampung tersebut.
#ENDPOINT_URL
dalam contoh ini hanyalah placeholder untuk URL aplikasi Anda, dan bukan variabel lingkungan Cloud Deploy yang tersedia.
Menjalankan penampung verifikasi di cluster aplikasi
Secara default, verifikasi deployment berjalan di lingkungan eksekusi Cloud Deploy. Anda juga dapat
mengonfigurasi Skaffold untuk menjalankan penampung verifikasi di cluster yang sama 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.
Verifikasi dalam cluster memerlukan Skaffold versi 2.3 atau yang lebih baru.
Untuk menjalankan penampung verifikasi di cluster, sertakan
baris executionMode.kubernetesCluster
dalam file konfigurasi
skaffold.yaml
, di dalam baris verify
untuk penampung 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: {}
Stanza executionMode
bersifat opsional, dan jika Anda menghilangkannya, Skaffold akan menjalankan
container verifikasi di lingkungan eksekusi Cloud Deploy.
Coba lagi verifikasi
Jika tugas verifikasi gagal, Anda dapat mencoba lagi verifikasi, yang akan membuat tugas baru dijalankan:
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_MEMBERSHIP
Untuk target jenis
ANTHOS
, nama resource yang sepenuhnya ditentukan dari langganan Anthos.CLOUD_RUN_LOCATION
Untuk target jenis
RUN
, region tempat layanan Cloud Run di-deploy.CLOUD_RUN_PROJECT
Untuk target jenis
RUN
, project tempat layanan Cloud Run dibuat.CLOUD_RUN_SERVICE
Untuk 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_URLS
Untuk 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 konsol Google Cloud.CLOUD_RUN_REVISION
Untuk target jenis
RUN
, revisi tertentu dari layanan Cloud Run.GKE_CLUSTER
Untuk target jenis
GKE
, nama resource yang ditentukan sepenuhnya dari cluster Google Kubernetes Engine, misalnyaprojects/p/locations/us-central1/clusters/dev
.TARGET_TYPE
Jenis runtime spesifik dari target.
GKE
,ANTHOS
, atauRUN
.CLOUD_DEPLOY_LOCATION
Region tempat lingkungan eksekusi berjalan.
CLOUD_DEPLOY_DELIVERY_PIPELINE
Pipeline pengiriman ID yang dijalankan oleh lingkungan eksekusi.
CLOUD_DEPLOY_TARGET
ID target yang dijalankan lingkungan eksekusi.
CLOUD_DEPLOY_PROJECT
Nomor project untuk project Google Cloud tempat lingkungan eksekusi berjalan.
CLOUD_DEPLOY_RELEASE
ID rilis tempat verifikasi akan berjalan.
CLOUD_DEPLOY_ROLLOUT
ID peluncuran yang berisi tugas untuk verifikasi.
CLOUD_DEPLOY_JOB_RUN
ID job run yang mewakili eksekusi tugas saat ini.
CLOUD_DEPLOY_PHASE
Fase dalam peluncuran yang berisi tugas untuk memverifikasi.
Men-deploy parameter sebagai variabel lingkungan
Selain variabel lingkungan yang tercantum di bagian ini, Cloud Deploy dapat meneruskan ke penampung kustom Anda semua parameter deployment yang telah Anda tetapkan.