Menjalankan hook sebelum dan sesudah deployment

Dokumen ini menjelaskan cara menjalankan program atau operasi arbitrer sebelum atau setelah Anda men-deploy.

Anda dapat mengonfigurasi Cloud Deploy untuk melakukan tindakan pre-deployment atau tindakan post-deployment, atau keduanya. Program yang dijalankan dengan cara ini disebut "hook". Hook pra-deployment dan pasca-deployment berjalan sebagai tugas pra-deployment dan pasca-deployment pada peluncuran.

Anda dapat mengonfigurasi setiap hook untuk berjalan di lingkungan eksekusi Cloud Deploy yang ditentukan, tetapi jika Anda men-deploy ke Google Kubernetes Engine, Anda dapat secara opsional mengonfigurasinya untuk berjalan di cluster GKE tempat Anda men-deploy aplikasi.

Hook deployment diasumsikan bersifat idempoten. Jika tindakan tertentu dijalankan lebih dari sekali, tidak ada efek tambahan.

Bagaimana cara kerja hook deployment?

Berikut ini penjelasan tentang cara menjalankan hook deployment di Cloud Deploy dan cara menyiapkannya:

  1. Anda mengonfigurasi hook dalam satu atau beberapa tahap dalam progres pipeline pengiriman.

  2. Sebelum tugas deployment peluncuran berjalan, Cloud Deploy menjalankan tugas apa pun yang dikonfigurasi dalam definisi predeploy dalam progres pipeline.

    Hook predeploy selalu berjalan sebagai tugas pertama dalam fase.

  3. Setelah tugas deployment peluncuran berjalan, Cloud Deploy menjalankan tugas apa pun yang dikonfigurasi dalam definisi postdeploy dalam progres pipeline.

Hook deployment dijalankan di lingkungan eksekusi Cloud Deploy.

Menggunakan hook deployment dengan deployment canary

Saat mengonfigurasi hook deployment untuk deployment canary, ada beberapa hal yang perlu diketahui:

  • Pada tahap pipeline pengiriman, konfigurasi hook (predeploy dan postdeploy) berada di bagian strategy.canary.canaryDeployment atau strategy.canary.customCanaryDeployment.phaseConfigs, bukan di bagian strategy.standard.

  • Untuk canary otomatis, hook predeploy hanya dieksekusi sebelum deployment pada fase pertama, dan hook postdeploy hanya dieksekusi setelah deployment pada fase terakhir (stabil).

Mengonfigurasi pipeline untuk menjalankan hook

Anda mengonfigurasi hook pra- dan pasca-deployment dalam satu atau beberapa tahap tertentu dalam progresi pipeline.

Berikut cara mengonfigurasi hook pra-dan pasca-deployment di tahap pipeline saat menggunakan strategi deployment standard:

serialPipeline:
  stages:
  - targetId: hooks-staging
    profiles: []
    strategy:
      standard:
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]

Dalam yaml ini:

  • TASKS

    Adalah daftar satu atau beberapa Tugas yang ingin Anda jalankan sebagai bagian dari hook pra-deploy atau pasca-deploy. Jika Anda menentukan lebih dari satu tugas, tugas tersebut akan dieksekusi secara berurutan, sesuai urutan yang ditentukan. Pekerjaan (sebelum atau sesudah deployment) gagal pada tugas pertama yang gagal, dan tugas yang tersisa tidak dijalankan.

Jalankan hook di cluster aplikasi

Secara default, hook deployment berjalan di lingkungan eksekusi Cloud Deploy. Anda juga dapat mengonfigurasi Skaffold untuk menjalankan hook deployment di cluster yang sama dengan tempat aplikasi Anda berjalan.

Untuk menjalankan hook di cluster aplikasi, Anda harus mengonfigurasinya sebagai customActions di skaffold.yaml, dan merujuknya menggunakan actions di predeploy atau stanza postdeploy dalam konfigurasi tahap pipeline pengiriman:

serialPipeline:
  stages:
  - targetId: hooks-staging
    profiles: []
    strategy:
      standard:
        predeploy:
          actions: ["my-predeploy-action"]
        postdeploy:
          actions: ["my-postdeploy-action"]

Kemampuan ini hanya tersedia untuk deployment ke GKE, bukan untuk Cloud Run. Deployment ke Cloud Run hanya dapat menjalankan hook di lingkungan eksekusi Cloud Deploy.

Untuk mengonfigurasi hook agar berjalan di cluster, sertakan stanza executionMode.kubernetesCluster dalam file konfigurasi skaffold.yaml Anda, di dalam stanza customActions untuk setiap tindakan yang ingin Anda jalankan di cluster:

customActions:
- name: ACTION_NAME
  containers:
  - name: CONTAINER_NAME
    image: IMAGE
    command: [COMMANDS_TO_RUN]
    args: [LIST_OF_ARGS]
  executionMode:
    kubernetesCluster: {}

Berikut adalah contoh stanza customActions yang menyertakan executionMode untuk memanggil container hook di cluster aplikasi:

customActions:
- name: predeploy-action
  containers:
  - name: predeploy-echo
    image: ubuntu
    command: ["/bin/sh"]
    args: ["-c", 'echo "this is a predeploy action"' ]
  executionMode:
    kubernetesCluster: {}

Stanza executionMode bersifat opsional, dan jika Anda menghapusnya, Skaffold akan menjalankan container tindakan kustom di lingkungan eksekusi Cloud Deploy.

Variabel lingkungan yang tersedia

Cloud Deploy juga menyediakan dan mengisi variabel lingkungan berikut di lingkungan eksekusi. Anda dapat menggunakan variabel lingkungan ini sebagai bagian dari hook deployment, tugas verifikasi, atau target kustom render atau deployment.

  • ANTHOS_MEMBERSHIP

    Untuk target jenis ANTHOS, nama resource yang sepenuhnya ditentukan dari keanggotaan Anthos.

  • CLOUD_RUN_LOCATION

    Untuk target jenis RUN, region tempat layanan Cloud Run di-deploy.

  • CLOUD_RUN_PROJECT

    Untuk target berjenis RUN, project tempat layanan Cloud Run dibuat.

  • CLOUD_RUN_SERVICE

    Untuk target jenis RUN, nama layanan Cloud Run yang di-deploy.

  • 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 . URL dibuat oleh Cloud Run setelah Layanan Cloud Run Anda berhasil di-deploy. Oleh karena itu, variabel lingkungan ini hanya tersedia di hook pasca-deployment dan verifikasi tugas.

  • CLOUD_RUN_REVISION

    Untuk target jenis RUN, revisi spesifik layanan Cloud Run.

  • GKE_CLUSTER

    Untuk target jenis GKE, nama resource yang sepenuhnya ditentukan dari cluster Google Kubernetes Engine, misalnya projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    Jenis runtime spesifik target. GKE, ANTHOS, atau RUN. Untuk target kustom, kolom ini tidak akan ditetapkan.

  • CLOUD_DEPLOY_LOCATION

    Region yang berisi resource Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    ID pipeline pengiriman.

  • CLOUD_DEPLOY_TARGET

    ID target.

  • CLOUD_DEPLOY_PROJECT

    Nomor project Google Cloud untuk project yang berisi resource Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    Project ID Google Cloud untuk project.

  • CLOUD_DEPLOY_RELEASE

    ID rilis tempat hook akan berjalan.

  • CLOUD_DEPLOY_ROLLOUT

    ID peluncuran yang berisi tugas untuk hook.

  • CLOUD_DEPLOY_JOB_RUN

    ID operasi tugas yang merepresentasikan eksekusi tugas saat ini.

  • CLOUD_DEPLOY_PHASE

    Fase dalam peluncuran yang berisi tugas untuk hook deployment, tugas verifikasi, atau render atau deployment kustom.

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.

Pelajari lebih lanjut.

Langkah berikutnya