Referensi skema konfigurasi

File konfigurasi Cloud Deploy menentukan pipeline pengiriman, target yang akan di-deploy, dan progresi target tersebut.

File konfigurasi pipeline pengiriman dapat menyertakan definisi target, atau definisi tersebut dapat berada dalam file atau file terpisah. Berdasarkan konvensi, file yang berisi konfigurasi pipeline pengiriman dan konfigurasi target disebut clouddeploy.yaml, dan konfigurasi pipeline tanpa target disebut delivery-pipeline.yaml. Namun, Anda dapat memberi nama file ini sesuai keinginan Anda. Definisi resource lainnya, seperti otomatisasi dan kebijakan deployment, juga dapat berada dalam file yang sama dengan pipeline pengiriman atau definisi target.

Apa yang harus diletakkan di mana

Cloud Deploy menggunakan dua file konfigurasi utama:

File ini dapat berupa file terpisah, atau pipeline dan target pengiriman dapat dikonfigurasi dalam file yang sama.

Struktur file konfigurasi pipeline pengiriman

Berikut adalah struktur konfigurasi pipeline pengiriman, termasuk properti untuk definisi target. Beberapa properti target tidak disertakan di sini. Lihat Definisi target untuk semua properti konfigurasi target.

# Delivery pipeline config
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name:
 annotations:
 labels:
description:
suspended:
serialPipeline:
 stages:
 - targetId:
   profiles: []
# Deployment strategies
# One of:
#   standard:
#   canary:
# See the strategy section in this document for details.
   strategy:
     standard:
       verify:
       predeploy:
         actions: []
       postdeploy:
         actions: []
   deployParameters:
   - values:
     matchTargetLabels:
 - targetId:
   profiles: []
   strategy:
   deployParameters:
---

# Target config
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name:
 annotations:
 labels:
description:
multiTarget:
 targetIds: []
deployParameters:
requireApproval:
#
# Runtimes
# one of the following runtimes:
gke:
 cluster:
 dnsEndpoint:
 internalIp:
 proxyUrl:
#
# or:
anthosCluster:
 membership:
#
# or:
run:
 location:
#
# or:
customTarget:
  customTargetType:
#
# (End runtimes. See documentation in this article for more details.)
#
executionConfigs:
- usages:
  - [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:
  verbose:
---

# Custom target type config
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name:
  annotations:
  labels:
description:
customActions:
  renderAction:
  deployAction:
  includeSkaffoldModules:
    - configs:
    # either:
    googleCloudStorage:
      source:
      path:
    # or:
    git:
      repo:
      path:
      ref:
---

# Automation config
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
  name:
  labels:
  annotations:
description:
suspended:
serviceAccount:
selector:
- target:
    id:
    # or
    labels:
rules:
- [RULE_TYPE]:
  name:
  [RULE-SPECIFIC_CONFIG]

YAML ini memiliki tiga komponen utama:

  • Pipeline dan progres pengiriman utama

    File konfigurasi dapat menyertakan sejumlah definisi pipeline.

  • Definisi target

    Agar lebih sederhana, hanya satu target yang ditampilkan dalam contoh ini, tetapi jumlahnya bisa berapa pun. Selain itu, target dapat ditentukan dalam file terpisah.

  • Definisi jenis target kustom

    Target kustom memerlukan definisi jenis target kustom. Seperti halnya target dan otomatisasi, jenis target kustom dapat ditentukan dalam file yang sama dengan pipeline pengiriman, atau dalam file terpisah.

  • Definisi otomatisasi

    Anda dapat membuat otomatisasi deployment di file yang sama dengan target dan pipeline pengiriman, atau di satu atau beberapa file terpisah. Untuk mempermudah, hanya satu Automation yang ditampilkan di sini, tetapi Anda dapat membuat sebanyak yang Anda inginkan.

Komponen ini ditentukan di bagian lain dalam dokumen ini.

Definisi dan progres pipeline

Selain metadata pipeline, seperti name, definisi pipeline utama mencakup daftar referensi ke target dalam urutan deployment. Artinya, target pertama yang tercantum adalah target deployment pertama. Setelah Anda men-deploy ke target tersebut, mempromosikan rilis akan men-deploy ke target berikutnya dalam daftar.

Berikut adalah properti konfigurasi untuk pipeline pengiriman, tidak termasuk definisi target.

metadata.name

Kolom name mengambil string yang harus unik per project dan lokasi.

metadata.annotations dan metadata.labels

Konfigurasi pipeline pengiriman dapat mencakup anotasi dan label. Anotasi dan label disimpan dengan resource pipeline pengiriman setelah pipeline didaftarkan.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan label dan anotasi dengan Cloud Deploy.

description

String arbitrer yang menjelaskan pipeline pengiriman ini. Deskripsi ini ditampilkan di detail pipeline pengiriman di Google Cloud konsol.

suspended

Boolean, yang jika true menangguhkan pipeline pengiriman sehingga tidak dapat digunakan untuk membuat, mempromosikan, meng-roll back, atau men-deploy ulang rilis. Selain itu, jika pipeline pengiriman ditangguhkan, Anda tidak dapat menyetujui atau menolak peluncuran yang dibuat dari pipeline tersebut.

Nilai defaultnya adalah false.

serialPipeline

Awal definisi pipeline penayangan progres serial. Stanza ini wajib diisi.

stages

Daftar semua target tempat pipeline pengiriman ini dikonfigurasi untuk di-deploy.

Daftar harus sesuai urutan pengiriman yang Anda inginkan. Misalnya, jika Anda memiliki target bernama dev, staging, dan production, cantumkan dalam urutan yang sama, sehingga deployment pertama Anda adalah ke dev, dan deployment terakhir adalah ke production.

Isi setiap kolom stages.targetId dengan nilai kolom metadata.name dalam definisi target yang sesuai. Di bagian targetId, sertakan profiles:

serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:

targetId

Mengidentifikasi target spesifik yang akan digunakan untuk tahap pipeline pengiriman ini. Nilainya adalah properti metadata.name dari target definition.

strategy.standard.verify yang disetel ke true akan mengaktifkan verifikasi deployment pada target. Jika tidak ada strategi deployment yang ditentukan, strategi deployment standard akan digunakan, dengan verifikasi ditetapkan ke false.

profiles

Mengambil daftar nol atau lebih nama profil Skaffold, dari skaffold.yaml. Cloud Deploy menggunakan profil dengan skaffold render saat membuat rilis. Profil Skaffold memungkinkan Anda memvariasikan konfigurasi antar-target saat menggunakan satu file konfigurasi.

strategy

Mencakup properti untuk menentukan strategi deployment. Strategi berikut didukung:

  • standard:

    Aplikasi di-deploy sepenuhnya ke target yang ditentukan.

    Ini adalah strategi deployment default. Jika Anda menghapus strategy, Cloud Deploy akan menggunakan strategi deployment standard.

  • canary:

    Dalam deployment canary, Anda men-deploy versi baru aplikasi secara bertahap, menggantikan versi yang sudah berjalan berdasarkan peningkatan berbasis persentase (misalnya, 25%, lalu 50%, lalu 75%, lalu sepenuhnya).

Strategi deployment ditentukan per target. Misalnya, Anda mungkin memiliki strategi canary untuk target prod, tetapi strategi standar (tanpa strategy yang ditentukan) untuk target lainnya.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan strategi deployment.

Konfigurasi strategy

Bagian ini menunjukkan elemen konfigurasi untuk strategy, untuk setiap runtime yang didukung.

Strategi deployment standar

Strategi standar hanya mencakup elemen berikut:

strategy:
  standard:
    verify: true|false

Properti verify bersifat opsional. Defaultnya adalah false, yang berarti tidak akan ada fase verifikasi untuk peluncuran yang dihasilkan.

Anda dapat menghilangkan elemen strategy untuk strategi deployment standar.

Strategi deployment canary

Bagian berikut menjelaskan konfigurasi untuk strategi deployment canary, untuk setiap runtime yang didukung Cloud Deploy.

Untuk target Cloud Run
strategy:
  canary:
    runtimeConfig:
      cloudRun:
        automaticTrafficControl: true | false
    canaryDeployment:
      percentages: [PERCENTAGES]
      verify: true | false
Untuk target GKE dan GKE Enterprise

YAML berikut menunjukkan cara mengonfigurasi strategi deployment untuk target GKE atau GKE Enterprise, menggunakan jaringan berbasis layanan:

      canary:
        runtimeConfig:
          kubernetes:
            serviceNetworking:
              service: "SERVICE_NAME"
              deployment: "DEPLOYMENT_NAME"
              disablePodOverprovisioning: true | false
        canaryDeployment:
          percentages: [PERCENTAGES]
          verify: true | false

YAML berikut menunjukkan cara mengonfigurasi strategi deployment untuk target GKE atau GKE Enterprise, menggunakan Gateway API:

      canary:
        runtimeConfig:
          kubernetes:
            gatewayServiceMesh:
              httpRoute: "HTTP_ROUTE_NAME"
              service: "SERVICE_NAME"
              deployment: "DEPLOYMENT_NAME"
              routeUpdateWaitTime: "WAIT_TIME"
              routeDestinations:
                destinationIds: ["KEY"]
                propagateService: [true|false]
        canaryDeployment:
          percentages: ["PERCENTAGES"]
          verify: true | false

Perhatikan dalam contoh ini routeUpdateWaitTime. Hal ini disertakan karena Gateway API membagi traffic menggunakan resource HTTPRoute, dan terkadang ada penundaan dalam menyebarkan perubahan yang dilakukan pada HTTPRoute. Dalam kasus seperti itu, permintaan dapat dibatalkan karena traffic dikirim ke resource yang tidak tersedia. Anda dapat menggunakan routeUpdateWaitTime untuk menyebabkan Cloud Deploy menunggu setelah menerapkan perubahan HTTPRoute, jika Anda mengamati penundaan ini.

YAML berikut menunjukkan cara mengonfigurasi strategi deployment canary kustom (untuk service networking, gateway api, atau Cloud Run) atau strategi deployment canary otomatis kustom (untuk service networking, gateway api, atau Cloud Run). Konfigurasi khusus runtime, di bagian runtimeConfig, tidak disertakan untuk canary kustom, tetapi disertakan dalam konfigurasi canary otomatis dan otomatis kustom. ##

strategy:
       canary:
         # Runtime configs are configured as shown in the
         # Canary Deployment Strategy section of this document.
         runtimeConfig:

         # Manual configuration for each canary phase
         customCanaryDeployment:
           - name: "PHASE1_NAME"
             percent: PERCENTAGE1
             profiles: [ "PROFILE1_NAME" ]
             verify: true | false
           - 
           - name: "stable"
             percent: 100
             profiles: [ "LAST_PROFILE_NAME" ]
             verify: true|false

verify

Boolean opsional yang menunjukkan apakah akan mendukung verifikasi deployment untuk target ini atau tidak. Defaultnya adalah false.

Mengaktifkan verifikasi deployment juga memerlukan stanza verify dalam skaffold.yaml. Jika Anda tidak memberikan properti ini, tugas verifikasi akan gagal.

deployParameters

Memungkinkan Anda menentukan key-value pair untuk meneruskan nilai ke manifes untuk target yang cocok dengan label, saat menggunakan parameter deployment.

Anda juga dapat menyertakannya di target.

Parameter deployment yang ditetapkan pada pipeline pengiriman menggunakan label untuk mencocokkan target:

deployParameters:
- values:
    someKey: "value1"
  matchTargetLabels:
    label1: firstLabel
- values:
    someKey: "value2"
  matchTargetLabels:
    label2: secondLabel

Dalam contoh ini, ada dua nilai yang diberikan untuk kunci, dan untuk setiap nilai, ada label. Nilai diterapkan ke manifes untuk target apa pun yang memiliki label yang cocok.

Lowongan predeploy dan postdeploy

Dengan ini, Anda dapat mereferensikan tindakan kustom (ditentukan secara terpisah, di skaffold.yaml) untuk dijalankan sebelum tugas deployment (predeploy) dan setelah tugas verifikasi, jika ada (postdeploy). Jika tidak ada tugas verifikasi, tugas postdeploy akan dijalankan setelah tugas deployment.

Hook deployment dikonfigurasi di bagian strategy.standard atau strategy.canary sebagai berikut:

serialPipeline:
  stages:
  - targetId: 
    strategy:
      standard:
        predeploy:
          actions: [ACTION_NAME]
        postdeploy:
          actions: [ACTION_NAME]

Dengan ACTION_NAME adalah nama yang dikonfigurasi di skaffold.yaml untuk customActions.name.

Anda dapat mengonfigurasi tugas predeploy dan postdeploy dalam strategi apa pun (misalnya, standard, canary).

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi dan menggunakan hook pra-deploy dan pasca-deploy, lihat Menjalankan hook sebelum dan setelah men-deploy.

Definisi target

File definisi pipeline pengiriman dapat berisi definisi target, atau Anda dapat menentukan target dalam file terpisah. Anda dapat mengulangi nama Target dalam project, tetapi nama tersebut harus unik dalam pipeline pengiriman.

Anda dapat menggunakan kembali target di antara beberapa pipeline pengiriman. Namun, Anda hanya dapat merujuk target satu kali dari dalam progres pipeline pengiriman tunggal.

Lihat juga: Definisi jenis target kustom

Untuk target GKE

YAML berikut menunjukkan cara mengonfigurasi target yang di-deploy ke cluster GKE:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     deployParameters:
     multiTarget:
      targetIds: []

     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
      dnsEndpoint:
      internalIp:
      proxyUrl:

     associatedEntities:
       [KEY]:
         gkeClusters:
         - cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
           dnsEndpoint: [true|false]
           internalIp: [true|false]
           proxyUrl:

     executionConfigs:
     - usages:
       - [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:
       verbose:

metadata.name

Nama target ini. Nama ini harus unik secara global.

metadata.annotations dan metadata.labels

Konfigurasi target mendukung anotasi Kubernetes dan label, tetapi Cloud Deploy tidak mewajibkannya.

Anotasi dan label disimpan dengan resource target. Untuk mengetahui informasi selengkapnya, lihat Menggunakan label dan anotasi dengan Cloud Deploy.

description

Kolom ini mengambil string arbitrer yang menjelaskan penggunaan target ini.

deployParameters

Anda dapat menyertakan parameter deployment pada target mana pun, beserta nilainya. Nilai tersebut ditetapkan ke kunci yang sesuai dalam manifes Anda, setelah rendering.

Stanza deployParameters menggunakan key-value pair, seperti yang ditunjukkan:

deployParameters:
  someKey: "someValue"
  someOtherKey: "someOtherValue"

Jika Anda menetapkan parameter deployment pada multi-target, nilai tersebut akan ditetapkan ke manifes untuk semua target turunan multi-target tersebut.

multiTarget.targetIds: []

Properti ini bersifat opsional, dan digunakan untuk mengonfigurasi multi-target yang akan digunakan untuk deployment paralel.

Nilainya adalah daftar target turunan yang dipisahkan koma. Target turunan dikonfigurasi sebagai target normal, dan tidak menyertakan properti multiTarget ini.

requireApproval

Apakah promosi ke target ini memerlukan persetujuan manual. Dapat berupa true atau false.

Properti ini bersifat opsional. Nilai defaultnya adalah false.

Saat mengonfigurasi deployment paralel, Anda dapat mewajibkan persetujuan hanya pada multi-target, bukan pada target turunan.

gke

Khusus untuk cluster GKE, jalur resource yang mengidentifikasi cluster tempat aplikasi Anda akan di-deploy:

gke:
  cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
  • project_name

    Project Google Cloud tempat cluster berada.

  • location

    Lokasi tempat cluster berada. Misalnya, us-central1. Cluster juga dapat berupa cluster zona (us-central1-c).

  • cluster_name

    Nama cluster, seperti yang muncul dalam daftar cluster Anda di konsolGoogle Cloud .

Berikut contohnya:

gke:
  cluster: projects/cd-demo-01/locations/us-central1/clusters/prod

Hilangkan properti gke saat mengonfigurasi multi-target. Sebagai gantinya, cluster GKE dikonfigurasi di dalam target turunan yang sesuai.

Lihat executionConfigs, dalam dokumen ini, untuk mengetahui deskripsi properti lingkungan eksekusi. Lihat artikel Men-deploy HTTPRoute ke cluster lain untuk mengetahui informasi tentang cara men-deploy HTTPRoute ke cluster alternatif yang bukan target.

dnsEndpoint

Jika disetel ke true, Cloud Deploy akan terhubung ke cluster GKE menggunakan endpoint DNS, bukan endpoint default, yang mungkin berupa IP publik, IP pribadi, atau endpoint DNS, bergantung pada konfigurasi cluster.

Opsi ini tidak dapat digunakan bersamaan dengan opsi internalIp.

internalIp

Jika disetel ke true, Cloud Deploy akan terhubung ke cluster GKE menggunakan alamat IP pribadi, bukan endpoint default, yang mungkin berupa IP publik, IP pribadi, atau endpoint DNS, bergantung pada konfigurasi cluster.

Opsi ini tidak dapat digunakan bersamaan dengan opsi dnsEndpoint. Karena konfigurasi jaringan untuk dnsEndpoint jauh lebih sederhana, sebaiknya gunakan versi tersebut.

proxyUrl

Jika Anda mengakses cluster melalui proxy HTTP, berikan properti proxyUrl di sini. Nilainya adalah URL proxy, yang diteruskan ke kubectl saat terhubung ke cluster Anda.

Untuk target Cloud Run

YAML berikut menunjukkan cara mengonfigurasi target yang di-deploy ke layanan Cloud Run:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     multiTarget:
      targetIds: []

     requireApproval:
     run:
      location: projects/[project_name]/locations/[location]

     executionConfigs:
     - usages:
       - [RENDER | PREDEPLOY|  DEPLOY | VERIFY | POSTDEPLOY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:
       verbose:

metadata.name

Nama target ini. Nama ini harus unik per region.

metadata.annotations dan metadata.labels

Konfigurasi target mendukung anotasi dan label, tetapi Cloud Deploy tidak mewajibkannya.

Anotasi dan label disimpan dengan resource target. Untuk mengetahui informasi selengkapnya, lihat Menggunakan label dan anotasi dengan Cloud Deploy.

description

Kolom ini mengambil string arbitrer yang menjelaskan penggunaan target ini.

multiTarget.targetIds: []

Properti ini bersifat opsional, dan digunakan untuk mengonfigurasi multi-target yang akan digunakan untuk deployment paralel.

Nilainya adalah daftar target turunan yang dipisahkan koma. Target turunan dikonfigurasi sebagai target normal, dan tidak menyertakan properti multiTarget ini.

requireApproval

Apakah promosi ke target ini memerlukan persetujuan manual. Dapat berupa true atau false.

Properti ini bersifat opsional. Nilai defaultnya adalah false.

Saat mengonfigurasi deployment paralel, Anda dapat mewajibkan persetujuan hanya pada multi-target, bukan pada target turunan.

run

Khusus untuk layanan Cloud Run, lokasi tempat layanan akan dibuat:

run:
  location: projects/[project_name]/locations/[location]
  • project_name

    Google Cloud Project tempat layanan akan berada.

  • location

    Lokasi tempat layanan akan berada. Misalnya, us-central1.

Hapus properti run saat mengonfigurasi [multi-target]. Lokasi layanan Cloud Run dikonfigurasi di dalam target turunan yang sesuai.

Lihat executionConfigs, dalam artikel ini, untuk mengetahui deskripsi properti lingkungan eksekusi.

Untuk target GKE Enterprise

Konfigurasi target untuk men-deploy ke cluster GKE mirip dengan mengonfigurasi target untuk target GKE, kecuali propertinya adalah anthosCluster.membership, bukan gke.cluster, jalur resource berbeda, dan metode koneksi tertentu (dnsEndpoint atau internalIp) tidak berlaku.

anthosCluster:
  membership: projects/[project_name]/locations/global/memberships/[membership_name]
  • project_name

    Project Google Cloud tempat cluster GKE Enterprise berada.

  • /location/global/

    Lokasi tempat cluster terdaftar. global, dalam semua kasus.

  • membership_name

    Nama keanggotaan cluster GKE Enterprise.

Berikut contohnya:

anthosCluster:
  membership: projects/cd-demo-01/locations/global/memberships/prod

Hapus properti anthosCluster saat mengonfigurasi [multi-target]. Cluster GKE Enterprise dikonfigurasi di dalam target turunan yang sesuai.

Untuk mengetahui informasi selengkapnya tentang men-deploy ke cluster GKE, lihat Men-deploy ke cluster pengguna Anthos.

Untuk target kustom

Konfigurasi untuk target kustom mirip dengan semua jenis target lainnya, kecuali tidak menyertakan stanza gke, stanza run, atau stanza anthosCluster.

Sebagai gantinya, target kustom menyertakan stanza customTarget:

customTarget:
  customTargetType: [CUSTOM_TARGET_TYPE_NAME]

Dengan CUSTOM_TARGET_TYPE_NAME adalah nama yang Anda gunakan dalam definisi jenis target kustom.

Berikut contohnya:

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: sample-env
customTarget:
  customTargetType: basic-custom-target

executionConfigs

Sekumpulan kolom untuk menentukan lingkungan eksekusi non-default untuk target ini.

  • usages

    RENDER atau DEPLOY atau keduanya, ditambah PREDEPLOY, VERIFY, atau POSTDEPLOY jika verifikasi atau hook deployment diaktifkan di target. Ini menunjukkan operasi mana yang akan dilakukan untuk target ini menggunakan lingkungan eksekusi ini. Untuk menunjukkan bahwa lingkungan eksekusi kustom akan digunakan untuk hook pra-deploy, rendering, deployment, hook pasca-deploy, dan verifikasi, Anda akan mengonfigurasinya sebagai berikut:

    usages:
    - RENDER
    - PREDEPLOY
    - DEPLOY
    - VERIFY
    - POSTDEPLOY
    

    Jika verifikasi diaktifkan di tahap pipeline, dan Anda tidak menentukan VERIFY dalam stanza usages, Cloud Deploy menggunakan lingkungan eksekusi default untuk verifikasi. Hook pra-deploy dan pasca-deploy berfungsi dengan cara yang sama.

    Namun, jika ada lingkungan eksekusi kustom untuk RENDER dan DEPLOY, Anda harus menentukan salah satunya untuk VERIFY, PREDEPLOY, ATAU POSTDEPLOY jika dikonfigurasi di pipeline pengiriman.VERIFY, PREDEPLOY, dan POSTDEPLOY dapat berada di usages yang sama dengan RENDER atau DEPLOY, atau di usages yang terpisah.

    Anda tidak dapat menentukan usages.VERIFY, usages.PREDEPLOY, atau usages.POSTDEPLOY kecuali jika RENDER dan DEPLOY ditentukan dalam lingkungan eksekusi kustom yang sama atau terpisah.

  • workerPool

    Konfigurasi untuk kumpulan pekerja yang akan digunakan. Tindakan ini memerlukan jalur resource yang mengidentifikasi kumpulan pekerja Cloud Build yang akan digunakan untuk target ini. Contoh:

    projects/p123/locations/us-central1/workerPools/wp123.

    Untuk menggunakan pool Cloud Build default, hapus properti ini.

    Target tertentu dapat memiliki dua workerPool (satu untuk RENDER dan satu untuk DEPLOY). Saat mengonfigurasi pool default, Anda dapat menentukan akun layanan atau lokasi penyimpanan alternatif, atau keduanya.

  • serviceAccount

    Nama akun layanan yang akan digunakan untuk operasi ini (RENDER atau DEPLOY) untuk target ini.

  • artifactStorage

    Bucket Cloud Storage yang akan digunakan untuk operasi ini (RENDER atau DEPLOY) untuk target ini, bukan bucket default.

  • executionTimeout

    Opsional. Menetapkan waktu tunggu, dalam detik, untuk operasi yang dilakukan Cloud Build untuk Cloud Deploy. Secara default, intervalnya adalah 3600 detik (1 jam).
    Contoh: executionTimeout: "5000s"

  • verbose

    Opsional. Jika true, tingkat panjang informasi ditetapkan ke debug untuk alat berikut:

Sintaksis alternatif yang didukung

Konfigurasi executionConfigs yang dijelaskan dalam dokumen ini adalah konfigurasi baru. Sintaksis sebelumnya masih didukung:

executionConfigs:
- privatePool:
    workerPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]
- defaultPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]

Saat Anda mengonfigurasi stanza executionConfigs untuk multi-target, setiap target turunan dapat mewarisi lingkungan eksekusi tersebut dari multi-target tersebut.

Definisi jenis target kustom

Bagian ini menjelaskan kolom yang digunakan untuk menentukan jenis target kustom

Seperti halnya target dan otomatisasi standar, definisi CustomTargetType dapat disertakan dengan definisi pipeline pengiriman, atau dalam satu atau beberapa file terpisah.

YAML berikut menunjukkan cara mengonfigurasi jenis target kustom:

apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name: [CUSTOM_TARGET_TYPE_NAME]
  annotations:
  labels:
description:
customActions:
  renderAction: [RENDER_ACTION_NAME]
  deployAction: [DEPLOY_ACTION_NAME]
  includeSkaffoldModules:
    - configs:
    # either:
    googleCloudStorage:
      source:
      path:
    # or:
    git:
      repo:
      path:
      ref:

Dengan:

  • [CUSTOM_TARGET_TYPE_NAME]

    Adalah nama arbitrer yang Anda berikan ke definisi jenis target kustom ini. Nama ini direferensikan dalam definisi target untuk target apa pun yang menggunakan jenis target kustom yang Anda tentukan.

  • [RENDER_ACTION_NAME]

    Adalah nama tindakan render kustom. Nilai ini adalah customAction.name yang ditentukan dalam skaffold.yaml.

  • [DEPLOY_ACTION_NAME]

    Adalah nama tindakan deployment kustom. Nilai ini adalah customAction.name yang ditentukan dalam skaffold.yaml.

  • Untuk includeSkaffoldModules, lihat Menggunakan konfigurasi Skaffold jarak jauh.

Definisi otomatisasi

Bagian ini menjelaskan kolom yang digunakan untuk menentukan resource otomatisasi Cloud Deploy.

Seperti target, definisi Automation dapat disertakan dengan definisi pipeline pengiriman, atau dalam satu atau beberapa file terpisah.

Untuk mengetahui informasi selengkapnya tentang otomatisasi di Cloud Deploy, lihat dokumentasi otomatisasi.

YAML berikut menunjukkan cara mengonfigurasi otomatisasi. Perhatikan bahwa spesifikasi aturan otomatisasi berbeda untuk setiap aturan. (Konfigurasi untuk jenis aturan otomatis yang tersedia ada dalam dokumen Menggunakan aturan otomatis.)

apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
  name: [PIPELINE_NAME]/[PURPOSE]
  labels:
  annotations:
description: [DESCRIPTION]
suspended: true | false
serviceAccount: [SERVICE_ACCOUNT_ID]
selector:
  targets:
    -  id: [TARGET_ID]
       labels:
         [LABEL_KEY]:[LABEL_VALUE]

rules:
- [RULE_TYPE]:
    name:[RULE_NAME]
  [RULE-SPECIFIC_CONFIG]

Dengan:

  • [PIPELINE_NAME]

    Sama dengan nilai metadata.name di pipeline pengiriman yang menggunakan otomatisasi ini. Semua otomatisasi bersifat eksklusif untuk pipeline pengiriman tempat otomatisasi tersebut dibuat. Artinya, Anda tidak dapat membagikan otomatisasi di lebih dari satu pipeline pengiriman.

  • [PURPOSE]

    Adalah nama deskriptif lebih lanjut untuk otomatisasi ini. Biasanya, tindakan yang otomatis adalah tindakan ini. Misalnya, my-app-pipeline/promote.

  • labels dan annotations adalah label atau anotasi yang ingin Anda kaitkan dengan otomatisasi ini.

  • [DESCRIPTION]

    Adalah deskripsi opsional untuk otomatisasi ini.

  • suspended

    true atau false, yang menunjukkan apakah otomatisasi ini aktif atau ditangguhkan. Jika disetel ke true, otomatisasi tidak digunakan. Hal ini dapat berguna untuk menguji otomatisasi tanpa memengaruhi pipeline penayangan.

  • [SERVICE_ACCOUNT_ID]

    Adalah ID akun layanan yang digunakan untuk melakukan otomatisasi. Misalnya, jika otomatisasi menggunakan promoteReleaseRule, maka akun layanan ini melakukan promosi rilis, sehingga memerlukan izin yang diperlukan untuk mempromosikan rilis.

    Nilai wajib diisi untuk properti ini. Cloud Deploy tidak menggunakan akun layanan default untuk otomatisasi.

    Akun layanan ini harus memiliki izin berikut:

    • izin actAs untuk meniru identitas akun layanan eksekusi.

    • izin untuk melakukan operasi yang diotomatiskan, misalnya, clouddeploy.releases.promote untuk mempromosikan rilis, atau clouddeploy.rollouts.advance untuk memajukan fase peluncuran.

  • [TARGET_ID]

    Adalah ID target yang digunakan untuk otomatisasi ini. Meskipun otomatisasi terikat dengan pipeline pengiriman, otomatisasi hanya dijalankan pada target yang ditentukan.

    Anda dapat menyetelnya ke * untuk memilih semua target dalam pipeline penayangan.

  • [LABEL_KEY]:[LABEL_VALUE]

    Adalah pasangan nilai kunci yang akan dicocokkan dengan pasangan nilai kunci yang ditentukan di target. Opsi ini memilih semua target yang terkait dengan pipeline penayangan yang memiliki label dan nilai yang sama.

  • [RULE_TYPE]

    Adalah nama aturan otomatisasi yang digunakan untuk otomatisasi ini. Nilai ini adalah promoteReleaseRule, timedPromoteReleaseRule, advanceRolloutRule, atau repairRolloutRule. Anda dapat menyertakan lebih dari satu aturan dalam otomatisasi, termasuk lebih dari satu RULE_TYPE yang sama. Misalnya, Anda dapat memiliki lebih dari satu aturan promoteReleaseRule dalam otomatisasi yang sama. Pelajari lebih lanjut.

  • [RULE_NAME]

    Nama untuk aturan. Nama ini harus unik dalam pipeline pengiriman. Nilai wajib diisi untuk properti ini.

  • [RULE-SPECIFIC_CONFIG]

    Konfigurasi berbeda untuk setiap jenis otomatisasi yang didukung. Konfigurasi tersebut ditampilkan di Menggunakan aturan otomatis.

Men-deploy definisi kebijakan

Bagian ini menjelaskan kolom yang digunakan untuk menentukan kebijakan deployment.

Seperti resource Cloud Deploy lainnya, Anda dapat menyertakan definisi DeployPolicy dengan definisi pipeline pengiriman atau dalam file terpisah.

YAML berikut menunjukkan cara mengonfigurasi kebijakan deployment:

apiVersion: deploy.cloud.google.com/v1
kind: DeployPolicy
metadata:
  name: [POLICY_NAME]
  annotations: [ANNOTATIONS]
  labels: [LABELS]
description: [DESCRIPTION]
suspended: [true | false]
selectors:
- deliveryPipeline:
    id: [PIPELINE_ID]
    labels:
      [LABEL_KEY]:[LABEL_VALUE]
  target:
    id: [TARGET_ID]
    labels:
      [LABEL_KEY]:[LABEL_VALUE]
rules:
  - [RULE_TYPE]
      [CONFIGS]

Dengan:

  • [DESCRIPTION]

    Adalah teks opsional yang menjelaskan kebijakan ini.

  • [POLICY_NAME]

    Nama kebijakan. Kolom ini menggunakan string yang harus unik per project dan lokasi. Nama ini harus berupa huruf kecil, angka, dan tanda hubung, dengan karakter pertama berupa huruf, karakter terakhir berupa huruf atau angka, dan maksimum 63 karakter. Nama ini digunakan sebagai nama tampilan di konsolGoogle Cloud .

  • [ANNOTATIONS] dan [LABELS]

    Kebijakan dapat mencakup anotasi dan label, yang merupakan bagian dari resource kebijakan setelah dibuat. Untuk mengetahui informasi selengkapnya, lihat Menggunakan anotasi dan label dengan Cloud Deploy.

  • suspended: [true | false]

    Menyetel suspended ke true akan menonaktifkan kebijakan ini.

  • [PIPELINE_ID]

    Adalah ID untuk pipeline pengiriman yang ingin Anda terapkan kebijakan ini. Anda dapat menggunakan * untuk menunjukkan semua pipeline. ID ini sama dengan properti metadata.name di pipeline pengiriman.

  • [TARGET_ID]

    Adalah ID untuk target yang ingin Anda terapkan kebijakan ini. Anda dapat menggunakan * untuk menunjukkan semua target. ID ini sama dengan properti metadata.name pada target.

  • [LABEL_KEY]:[LABEL_VALUE]

    Adalah pasangan nilai kunci yang akan dicocokkan dengan pasangan nilai kunci yang ditentukan di pipeline atau target pengiriman. Tindakan ini akan memilih semua pipeline atau target yang memiliki label dan nilai yang sama. Anda dapat menentukan labels, bukan atau sebagai tambahan dari id.

  • [RULE_TYPE]

    Adalah jenis aturan kebijakan spesifik yang Anda konfigurasi. Satu-satunya nilai yang valid adalah rolloutRestriction.

  • [CONFIGS]

    Adalah kumpulan properti konfigurasi untuk aturan kebijakan tertentu yang Anda buat. Konfigurasi untuk aturan dijelaskan di bagian selanjutnya dalam bagian ini dari referensi ini, untuk setiap aturan yang tersedia.

Men-deploy aturan kebijakan

Bagian ini menjelaskan cara mengonfigurasi setiap aturan kebijakan deployment.

rolloutRestriction

Aturan rolloutRestriction mencegah Cloud Deploy melakukan operasi tertentu pada peluncuran selama jendela waktu yang ditentukan, untuk pipeline pengiriman dan target yang ditunjukkan oleh selectors untuk kebijakan deployment.

YAML berikut menunjukkan cara mengonfigurasi aturan rolloutRestriction:

rules:
- rolloutRestriction:
    id: [RULE_ID]
    actions:
    - [ACTIONS]
    invokers:
    - [INVOKERS]
    timeWindows:
      timeZone: [TIMEZONE]
      oneTimeWindows:
      - start: [START_DATE_TIME]
        end: [END_DATE_TIME]
      weeklyWindows:
      - daysOfWeek:
        - [DAY_OF_WEEK]
        - [DAY_OF_WEEK]
        startTime: [START_TIME]
        endTime: [END_TIME]

Dengan:

  • RULE_ID

    ID untuk aturan ini. Wajib diisi. Nama harus terdiri dari huruf kecil, angka, dan tanda hubung, dengan karakter pertama berupa huruf, karakter terakhir berupa huruf atau angka, dan maksimal 63 karakter. Nama ini harus unik dalam kebijakan deployment.

  • ACTIONS

    Opsional: tindakan peluncuran yang akan dibatasi sebagai bagian dari kebijakan. Jika kosong, semua tindakan dibatasi. Nilai yang valid adalah:

    • ADVANCE

      Fase peluncuran tidak dapat dilanjutkan.

    • APPROVE

      Promosi peluncuran tidak dapat disetujui.

    • CANCEL

      Peluncuran tidak dapat dibatalkan.

    • CREATE

      Peluncuran tidak dapat dibuat.

    • IGNORE_JOB

      Tugas tidak dapat diabaikan.

    • RETRY_JOB

      Tugas tidak dapat dicoba lagi.

    • ROLLBACK

      Peluncuran tidak dapat di-roll back.

    • TERMINATE_JOBRUN

      Eksekusi tugas tidak dapat dihentikan

  • INVOKERS

    Menentukan pemanggil akan memfilter penegakan kebijakan, bergantung pada apakah tindakan yang dibatasi dipanggil oleh pengguna atau oleh otomatisasi deployment. Nilai yang valid adalah:

    • USER

      Tindakan ini didorong oleh pengguna. Misalnya, membuat peluncuran secara manual menggunakan perintah gcloud CLI.

    • DEPLOY_AUTOMATION

      Tindakan otomatis oleh Cloud Deploy.

    Anda dapat menentukan salah satu nilai atau kedua nilai. Defaultnya, jika Anda tidak menentukan apa pun, adalah keduanya.

  • TIMEZONE

    Zona waktu, dalam format IANA, tempat Anda menyatakan jangka waktu. Contoh, America/New_York. Wajib diisi.

  • START_DATE_TIME

    Untuk oneTimeWindows, tanggal dan waktu yang menandai awal periode pembatasan, dalam format "yyyy-mm-dd hh:mm". Untuk awal hari, gunakan 00:00. Kolom ini wajib diisi.

  • END_DATE_TIME

    Untuk oneTimeWindows, tanggal dan waktu yang menandai akhir periode pembatasan, dalam format "yyyy-mm-dd hh:mm". Untuk akhir hari, gunakan 24:00. Kolom ini wajib diisi.

  • DAY_OF_WEEK

    Untuk weeklyWindows, hari dalam seminggu, SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, atau SATURDAY. Jika Anda membiarkannya kosong, semua hari dalam seminggu akan cocok

  • START_TIME

    Untuk weeklyWindows, waktu mulai pada hari yang ditentukan dalam seminggu. Jika Anda menyertakan waktu mulai, Anda harus menyertakan waktu berakhir. Untuk awal hari, gunakan 00:00.

  • END_TIME

    Untuk weeklyWindows, waktu berakhir pada hari dalam seminggu yang ditentukan. Jika Anda menyertakan waktu mulai, Anda harus menyertakan waktu berakhir. Untuk mengakhiri hari, gunakan 24:00.

Langkah berikutnya