KubernetesManifest@0 - Sebarkan ke tugas Kubernetes v0

Gunakan tugas manifes Kubernetes dalam alur build atau rilis untuk membuat dan menyebarkan manifes ke kluster Kubernetes menggunakan bagan Helm.

Sintaks

# Deploy to Kubernetes v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: # string. Namespace. 
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #trafficSplitMethod: 'pod' # 'pod' | 'smi'. Optional. Use when strategy = canary. Traffic split method. Default: pod.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #baselineAndCanaryReplicas: '1' # string. Required when strategy = Canary && action = deploy && trafficSplitMethod = SMI. Baseline and canary replicas. Default: 1.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote || action = bake. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm' # 'helm' | 'kompose' | 'kustomize'. Optional. Use when action = bake. Render Engine. Default: helm.
    #dockerComposeFile: # string. Required when action = bake && renderType = kompose. Path to docker compose file. 
    #helmChart: # string. Required when action = bake && renderType = helm. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm. Overrides. 
    #kustomizationPath: # string. Optional. Use when action = bake && renderType = kustomize. Kustomization Path. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection. 
    #rolloutStatusTimeout: '0' # string. Optional. Use when action = deploy || action = patch || action = scale || action = promote. Timeout for rollout status. Default: 0.
# Deploy Kubernetes manifests v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: 'default' # string. Required when action != bake. Namespace. Default: default.
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm2' # 'helm2'. Optional. Use when action = bake. Render Engine. Default: helm2.
    #helmChart: # string. Required when action = bake && renderType = helm2. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm2. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm2. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm2. Overrides. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.

Input

action - Tindakan
string. Nilai yang diizinkan: bake, createSecret (buat rahasia), delete, , deploy, promotepatch, scale, reject. Nilai default: deploy.

Menentukan tindakan yang akan dilakukan.


kubernetesServiceConnection - Koneksi layanan Kubernetes
string. Diperlukan saat action != bake.

Menentukan koneksi layanan Kubernetes.


namespace - Namespace
string.

Menentukan namespace untuk perintah dengan menggunakan –namespace bendera . Jika namespace tidak disediakan, perintah akan berjalan di namespace default.


namespace - Namespace
string. Diperlukan saat action != bake. Nilai default: default.

Menentukan namespace untuk perintah dengan menggunakan –namespace bendera . Jika namespace tidak disediakan, perintah akan berjalan di namespace default.


strategy - Strategi
string. Pilihan. Gunakan saat action = deploy || action = promote || action = reject. Nilai yang diizinkan: canary, none. Nilai default: none.

Menentukan strategi penyebaran yang digunakan dalam deploy tindakan sebelum promote tindakan atau reject tindakan. Saat ini, canary adalah satu-satunya strategi penyebaran yang dapat diterima.


trafficSplitMethod - Metode pemisahan lalu lintas
string. Opsional. Gunakan saat strategy = canary. Nilai yang diizinkan: pod, smi. Nilai default: pod.

Untuk nilai smi, pemisahan lalu lintas persentase dilakukan pada tingkat permintaan dengan menggunakan jala layanan. Jala layanan harus disiapkan oleh admin kluster. Tugas ini menangani orkestrasi objek SMI TrafficSplit .

Untuk nilai pod, persentase pemisahan tidak dimungkinkan pada tingkat permintaan tanpa adanya jala layanan. Sebaliknya, persentase input digunakan untuk menghitung replika untuk garis besar dan kenari. Perhitungan adalah persentase replika yang ditentukan dalam manifes input untuk varian stabil.


percentage - Persentase
string. Diperlukan saat strategy = Canary && action = deploy. Nilai default: 0.

Persentase yang digunakan untuk menghitung jumlah replika varian dasar dan varian kenari dari beban kerja yang terkandung dalam file manifes.

Untuk input persentase yang ditentukan, hitung:

(persentase × jumlah replika) / 100

Jika hasilnya bukan bilangan bulat, lantai matematika hasilnya digunakan saat varian garis besar dan kenari dibuat.

Misalnya, asumsikan penyebaran hello-world ada dalam file manifes input dan bahwa baris berikut berada dalam input tugas:

replicas: 4
strategy: canary
percentage: 25

Dalam hal ini, penyebaran hello-world-baseline dan hello-world-canary dibuat dengan masing-masing satu replika. Varian garis besar dibuat dengan gambar dan tag yang sama dengan versi stabil, yang merupakan varian empat replika sebelum penyebaran. Varian kenari dibuat dengan gambar dan tag yang sesuai dengan perubahan yang baru disebarkan.


baselineAndCanaryReplicas - Replika garis besar dan kenari
string. Diperlukan saat strategy = Canary && action = deploy && trafficSplitMethod = SMI. Nilai default: 1.

Ketika Anda mengatur trafficSplitMethod ke smi, persentase pemisahan lalu lintas dikontrol dalam bidang jala layanan. Anda dapat mengontrol jumlah replika aktual untuk varian kenari dan garis besar secara independen dari pemisahan lalu lintas.

Misalnya, asumsikan bahwa manifes penyebaran input menentukan 30 replika untuk varian stabil. Asumsikan juga bahwa Anda menentukan input berikut untuk tugas:

strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1

Dalam hal ini, varian stabil menerima 80% dari lalu lintas, sementara varian garis besar dan kenari masing-masing menerima setengah dari 20% yang ditentukan. Varian garis besar dan kenari tidak menerima masing-masing tiga replika. Mereka menerima jumlah replika yang ditentukan, yang berarti mereka masing-masing menerima satu replika.


manifests - Memanifestasikan
string. Diperlukan saat action = deploy || action = promote || action = reject.

Menentukan jalur ke file manifes yang akan digunakan untuk penyebaran. Setiap baris mewakili satu jalur. Pola pencocokan file adalah nilai yang dapat diterima untuk setiap baris.


containers - Wadah
string. Opsional. Gunakan saat action = deploy || action = promote || action = bake.

Menentukan URL sumber daya gambar yang sepenuhnya memenuhi syarat yang akan digunakan untuk substitusi pada file manifes. URL contosodemo.azurecr.io/helloworld:test adalah contohnya.


containers - Wadah
string. Opsional. Gunakan saat action = deploy || action = promote.

Menentukan URL gambar yang sepenuhnya memenuhi syarat yang akan digunakan untuk substitusi pada file manifes. Input ini menerima spesifikasi beberapa substitusi artefak dalam bentuk yang dipisahkan baris baru. Berikut contohnya:

containers: |
  contosodemo.azurecr.io/foo:test1
  contosodemo.azurecr.io/bar:test2

Dalam contoh ini, semua referensi ke contosodemo.azurecr.io/foo dan contosodemo.azurecr.io/bar dicari di bidang gambar file manifes input. Untuk setiap kecocokan yang ditemukan, tag test1 atau test2 mengganti referensi yang cocok.


imagePullSecrets - ImagePullSecrets
string. Pilihan. Gunakan saat action = deploy || action = promote.

Menentukan input multibaris di mana setiap baris berisi nama rahasia registri Docker yang telah disiapkan dalam kluster. Setiap nama rahasia ditambahkan di bawah imagePullSecrets untuk beban kerja yang ditemukan dalam file manifes input.


renderType - Mesin Render
string. Opsional. Gunakan saat action = bake. Nilai yang diizinkan: helm, kompose, dan kustomize. Nilai default: helm.

Menentukan jenis render yang digunakan untuk menghasilkan file manifes.


renderType - Mesin Render
string. Opsional. Gunakan saat action = bake. Nilai yang diizinkan: helm2 (Helm 2). Nilai default: helm2.

Menentukan jenis render yang digunakan untuk menghasilkan file manifes.


dockerComposeFile - Jalur ke file docker compose
string. Diperlukan saat action = bake && renderType = kompose.

Menentukan jalur file docker-compose.


helmChart - Bagan Helm
string. Diperlukan saat action = bake && renderType = helm.

Menentukan jalur bagan Helm untuk di-bake.


helmChart - Bagan Helm
string. Diperlukan saat action = bake && renderType = helm2.

Menentukan jalur bagan Helm untuk di-bake.


releaseName - Nama Rilis Helm
string. Pilihan. Gunakan saat action = bake && renderType = helm.

Menentukan nama rilis Helm yang akan digunakan.


releaseName - Nama Rilis Helm
string. Pilihan. Gunakan saat action = bake && renderType = helm2.

Menentukan nama rilis Helm yang akan digunakan.


overrideFiles - Mengesampingkan File
string. Pilihan. Gunakan saat action = bake && renderType = helm.

Menentukan input multibaris yang menerima jalur ke file penimpaan. File digunakan ketika file manifes dari bagan Helm dipanggang.


overrideFiles - Mengesampingkan File
string. Pilihan. Gunakan saat action = bake && renderType = helm2.

Menentukan input multibaris yang menerima jalur ke file penimpaan. File digunakan ketika file manifes dari bagan Helm dipanggang.


overrides - Mengabaikan
string. Opsional. Gunakan saat action = bake && renderType = helm.

Menentukan nilai penimpaan yang akan ditetapkan.


overrides - Mengabaikan
string. Opsional. Gunakan saat action = bake && renderType = helm2.

Menentukan nilai penimpaan tambahan yang digunakan melalui sakelar --set baris perintah saat file manifes menggunakan Helm dipanggang.

Tentukan ambil alih nilai sebagai key-value pasangan dalam format key:value. Jika Anda menggunakan beberapa pasangan penimpaan key-value , tentukan setiap key-value pasangan dalam baris terpisah. Gunakan karakter baris baru sebagai pemisah di antara pasangan yang berbeda key-value .


kustomizationPath - Jalur Kustomisasi
string. Pilihan. Gunakan saat action = bake && renderType = kustomize.

Menentukan argumen yang harus menjadi jalur ke direktori yang berisi file, atau URL repositori git dengan akhiran same jalur yang menentukan sehubungan dengan akar repositori.


resourceToPatch - Sumber daya untuk patch
string. Diperlukan saat action = patch. Nilai yang diizinkan: file, name. Nilai default: file.

Menunjukkan salah satu metode patch berikut:

  • File manifes mengidentifikasi objek yang akan di-patch.
  • Objek individual diidentifikasi berdasarkan jenis dan nama sebagai target patch.

Nilai yang dapat diterima adalah file dan nama.


resourceFileToPatch - Jalur file
string. Diperlukan saat action = patch && resourceToPatch = file.

Menentukan jalur ke file yang digunakan untuk patch.


kind - Jenis
string. Diperlukan saat action = scale || resourceToPatch = name. Nilai yang diizinkan: deployment, replicaset, dan statefulset.

Menentukan jenis objek K8s, seperti deployment, replicaSet dan banyak lagi.


name - Nama
string. Diperlukan saat action = scale || resourceToPatch = name.

Menentukan nama objek K8s.


replicas - Jumlah replika
string. Diperlukan saat action = scale.

Menentukan jumlah replika yang akan diskalakan.


mergeStrategy - Gabungkan Strategi
string. Diperlukan saat action = patch. Nilai yang diizinkan: json, merge, dan strategic. Nilai default: strategic.

Menentukan jenis patch yang disediakan.


arguments - Argumen
string. Pilihan. Gunakan saat action = delete.

Menentukan argumen untuk kubectl delete perintah. Contohnya adalah: arguments: deployment hello-world foo-bar


patch - Patch
string. Diperlukan saat action = patch.

Menentukan isi patch.


secretType - Jenis rahasia
string. Diperlukan saat action = createSecret. Nilai yang diizinkan: dockerRegistry, generic. Nilai default: dockerRegistry.

Membuat atau memperbarui generik atau docker imagepullsecret. Tentukan dockerRegistry untuk membuat atau memperbarui imagepullsecret registri yang dipilih. imagePullSecret Adalah cara untuk meneruskan rahasia yang berisi kata sandi registri kontainer ke Kubelet, sehingga dapat menarik gambar privat atas nama Pod Anda.


secretName - Nama rahasia
string. Pilihan. Gunakan saat action = createSecret.

Menentukan nama rahasia. Anda dapat menggunakan nama rahasia ini dalam file konfigurasi YAML Kubernetes.


secretArguments - Argumen
string. Pilihan. Gunakan saat action = createSecret && secretType = generic.

Menentukan kunci dan nilai harfiah untuk disisipkan secara rahasia. Misalnya, --from-literal=key1=value1--from-literal=key2="top secret".


dockerRegistryEndpoint - Koneksi layanan registri Docker
string. Pilihan. Gunakan saat action = createSecret && secretType = dockerRegistry.

Menentukan kredensial koneksi layanan yang ditentukan yang digunakan untuk membuat rahasia registri Docker dalam kluster. File manifes di imagePullSecrets bawah bidang kemudian dapat merujuk ke nama rahasia ini.


rolloutStatusTimeout - Waktu habis untuk status peluncuran
string. Pilihan. Gunakan saat action = deploy || action = patch || action = scale || action = promote. Nilai default: 0.

Menentukan lamanya waktu (dalam detik) untuk menunggu sebelum mengakhiri watch on rollout status.


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugasnya. Untuk informasi selengkapnya, lihat Opsi kontrol dan properti tugas umum.

Variabel output

Tugas ini mendefinisikan variabel output berikut, yang dapat Anda konsumsi dalam langkah-langkah hilir, pekerjaan, dan tahapan.

manifestsBundle
Menentukan lokasi bundel manifes yang dibuat oleh tindakan panggang.

Keterangan

Catatan

Ada versi yang lebih baru dari tugas ini yang tersedia yang menyediakan dukungan tambahan untuk menargetkan kluster Kubernetes dengan cara yang berbeda, menggunakan connectionType properti . Untuk informasi selengkapnya, lihat KubernetesManifest@1 dan KubernetesManifest@1 keterangan koneksi layanan

Gunakan tugas manifes Kubernetes dalam alur build atau rilis untuk membuat dan menyebarkan manifes ke kluster Kubernetes.

Tugas ini mendukung hal berikut:

  • Penggantian artefak: Tindakan penyebaran mengambil sebagai input daftar gambar kontainer yang dapat Anda tentukan bersama dengan tag dan hashnya. Input yang sama diganti ke dalam file manifes yang tidak diintemplatasikan sebelum aplikasi ke kluster. Penggantian ini memastikan bahwa node kluster menarik versi gambar yang tepat.

  • Stabilitas manifes: Status peluncuran objek Kubernetes yang disebarkan diperiksa. Pemeriksaan stabilitas dimasukkan untuk menentukan apakah status tugas berhasil atau gagal.

  • Anotasi keterlacakan: Anotasi ditambahkan ke objek Kubernetes yang disebarkan untuk menggantikan informasi keterlacakan. Anotasi berikut didukung:

    • azure-pipelines/org
    • azure-pipelines/project
    • azure-pipelines/pipeline
    • azure-pipelines/pipelineId
    • azure-pipelines/execution
    • azure-pipelines/executionuri
    • azure-pipelines/jobName
  • Penanganan rahasia: Tindakan ini createSecret memungkinkan rahasia registri Docker dibuat menggunakan koneksi layanan registri Docker. Ini juga memungkinkan rahasia generik dibuat menggunakan variabel teks biasa atau variabel rahasia. Sebelum penyebaran ke kluster, Anda dapat menggunakan secrets input bersama dengan deploy tindakan untuk menambah file manifes input dengan nilai yang sesuai imagePullSecrets .

  • Manifes bake: Tindakan bake tugas memungkinkan pembuatan templat ke dalam file manifes Kubernetes. Tindakan ini menggunakan alat seperti Helm, Compose, dan Kustomize. Dengan pembuatan kue, file manifes Kube ini dapat digunakan untuk penyebaran ke kluster.

  • Strategi penyebaran: Memilih canary strategi dengan deploy tindakan mengarah pada pembuatan nama beban kerja yang dia akhiri dengan -baseline dan -canary. Tugas ini mendukung dua metode pemisahan lalu lintas:

    • Antarmuka Mesh Layanan: Abstraksi Service Mesh Interface (SMI) memungkinkan konfigurasi dengan penyedia jala layanan seperti Linkerd dan Istio. Tugas Manifes Kubernetes memetakan objek SMI TrafficSplit ke layanan stabil, garis besar, dan kenari selama siklus hidup strategi penyebaran.

      Penyebaran kenari yang didasarkan pada jala layanan dan menggunakan tugas ini lebih akurat. Akurasi ini disebabkan oleh bagaimana penyedia jala layanan memungkinkan pemisahan lalu lintas berbasis persentase granular. Jala layanan menggunakan registri layanan dan kontainer sespan yang disuntikkan ke dalam pod. Injeksi ini terjadi bersama kontainer aplikasi untuk mencapai pemisahan lalu lintas terperinci.

    • Kubernetes tanpa jala layanan: Dengan tidak adanya jala layanan, Anda mungkin tidak mendapatkan pemisahan persentase yang tepat yang Anda inginkan di tingkat permintaan. Namun, Anda dapat melakukan penyebaran kenari dengan menggunakan varian garis besar dan kenari di samping varian stabil.

      Layanan mengirimkan permintaan ke pod dari ketiga varian beban kerja saat batasan label pemilih terpenuhi. Manifes Kubernetes menghormati permintaan ini saat membuat varian dasar dan kenari. Perilaku perutean ini mencapai efek perutean yang dimaksudkan hanya sebagian dari total permintaan ke kenari.

    Bandingkan beban kerja garis besar dan kenari dengan menggunakan tugas Intervensi Manual dalam alur rilis atau tugas Penundaan di alur YAML. Lakukan perbandingan sebelum menggunakan tindakan promosikan atau tolak tugas.

Menyebarkan tindakan

Kode YAML berikut adalah contoh penyebaran ke namespace Layanan Kubernetes dengan menggunakan file manifes:

steps:
- task: KubernetesManifest@0
  displayName: Deploy
  inputs:
    kubernetesServiceConnection: someK8sSC1
    namespace: default
    manifests: |
      manifests/deployment.yml
      manifests/service.yml
    containers: |
      foo/demo:$(tagVariable1)
      bar/demo:$(tagVariable2)
    imagePullSecrets: |
      some-secret
      some-other-secret

Dalam contoh di atas, tugas mencoba menemukan kecocokan untuk gambar foo/demo dan bar/demo di bidang gambar file manifes. Untuk setiap kecocokan yang ditemukan, nilai salah satu tagVariable1 atau tagVariable2 ditambahkan sebagai tag ke nama gambar. Anda juga dapat menentukan hash dalam input kontainer untuk penggantian artefak.

Catatan

Meskipun Anda dapat menulis deploypromote, , dan reject tindakan dengan input YAML yang terkait dengan strategi penyebaran, dukungan untuk tugas Intervensi Manual saat ini tidak tersedia untuk alur build.

Untuk alur rilis, kami menyarankan Anda untuk menggunakan tindakan dan input yang terkait dengan strategi penyebaran dalam urutan berikut:

  1. Tindakan penyebaran yang ditentukan dengan strategy: canary dan percentage: $(someValue).
  2. Tugas Intervensi Manual sehingga Anda dapat menjeda alur dan membandingkan varian garis besar dengan varian kenari.
  3. Tindakan promosi yang berjalan jika tugas Intervensi Manual dilanjutkan dan tindakan penolakan yang berjalan jika tugas Intervensi Manual ditolak.

Membuat tindakan rahasia

Kode YAML berikut menunjukkan contoh pembuatan rahasia registri Docker dengan menggunakan koneksi layanan Docker Registry:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: dockerRegistry
    secretName: foobar
    dockerRegistryEndpoint: demoACR
    kubernetesServiceConnection: someK8sSC
    namespace: default

Kode YAML ini menunjukkan contoh pembuatan rahasia generik:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: generic
    secretName: some-secret
    secretArguments: --from-literal=key1=value1
    kubernetesServiceConnection: someK8sSC
    namespace: default

Tindakan panggang

Kode YAML berikut adalah contoh pembuatan file manifes dari bagan Helm. Perhatikan penggunaan input nama di tugas pertama. Nama ini kemudian dirujuk dari langkah penyebaran untuk menentukan jalur ke manifes yang dihasilkan oleh langkah panggang.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from Helm chart
  inputs:
    action: bake
    helmChart: charts/sample
    overrides: 'image.repository:nginx'

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: someK8sSC
    namespace: default
    manifests: $(bake.manifestsBundle)
    containers: |
      nginx: 1.7.9

Catatan

Untuk menggunakan Helm secara langsung untuk mengelola rilis dan pemutaran kembali, lihat tugas Paket dan sebarkan bagan Helm.

Contoh kustomisasi

Kode YAML berikut adalah contoh pembuatan kue file manifes yang dihasilkan dengan Kustomize yang berisi kustomization.yaml file.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from kustomization path
  inputs:
    action: bake
    renderType: kustomize
    kustomizationPath: folderContainingKustomizationFile

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

Contoh Kompose

Kode YAML berikut adalah contoh pembuatan file manifes yang dihasilkan dengan Kompose, alat konversi untuk Docker Compose.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from Docker Compose
  inputs:
    action: bake
    renderType: kompose
    dockerComposeFile: docker-compose.yaml

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

Tindakan skala

Kode YAML berikut menunjukkan contoh penskalaan objek:

steps:
- task: KubernetesManifest@0
  displayName: Scale
  inputs: 
    action: scale
    kind: deployment
    name: bootcamp-demo
    replicas: 5
    kubernetesServiceConnection: someK8sSC
    namespace: default

Tindakan patch

Kode YAML berikut menunjukkan contoh patching objek:

steps:
- task: KubernetesManifest@0
  displayName: Patch
  inputs: 
    action: patch
    kind: pod
    name: demo-5fbc4d6cd9-pgxn4
    mergeStrategy: strategic
    patch: '{"spec":{"containers":[{"name":"demo","image":"foobar/demo:2239"}]}}'
    kubernetesServiceConnection: someK8sSC
    namespace: default

Hapus tindakan

Kode YAML ini menunjukkan contoh penghapusan objek:

steps:
- task: KubernetesManifest@0
  displayName: Delete
  inputs:
    action: delete
    arguments: deployment expressapp
    kubernetesServiceConnection: someK8sSC
    namespace: default

Pemecahan Masalah

Kluster Kubernetes saya berada di belakang firewall dan saya menggunakan agen yang dihosting. Bagaimana cara menyebarkan ke kluster ini?

Anda dapat memberikan akses kepada agen yang dihosting melalui firewall Anda dengan mengizinkan alamat IP untuk agen yang dihosting. Untuk detail selengkapnya, lihat Rentang IP Agen.

Bagaimana cara kerja permintaan ke rute layanan yang stabil dan varian dengan penyebaran Kenari?

Hubungan pemilih label antara pod dan layanan di Kubernetes memungkinkan untuk menyiapkan penyebaran sehingga satu layanan merutekan permintaan ke varian stabil dan Kenari. Tugas manifes Kubernetes menggunakan ini untuk penyebaran Kenari.

Jika tugas mencakup input action: deploy dan strategy: canary, untuk setiap beban kerja (Deployment, ReplicaSet, Pod, ...) yang ditentukan dalam file manifes input, -baseline dan -canary varian penyebaran dibuat. Dalam contoh ini, ada penyebaran sampleapp dalam file manifes input dan bahwa setelah selesai menjalankan nomor 22 dari alur, varian stabil dari penyebaran ini bernama sampleapp disebarkan dalam kluster. Dalam eksekusi berikutnya (dalam hal ini jalankan nomor 23), tugas manifes Kube dengan action: deploy dan strategy: canary akan menghasilkan pembuatan penyebaran sampleapp-baseline dan sampleapp-canary yang jumlah replikanya ditentukan oleh produk percentage input tugas dengan nilai jumlah replika yang diinginkan untuk varian sampleapp stabil akhir sesuai file manifes input.

Tidak termasuk jumlah replika, versi garis besar memiliki konfigurasi yang sama dengan varian stabil sementara versi kenari memiliki perubahan baru yang diperkenalkan oleh eksekusi saat ini (dalam hal ini, jalankan nomor 23). Jika intervensi manual disiapkan dalam alur setelah langkah yang disebutkan di atas, itu akan memungkinkan kesempatan untuk menjeda alur sehingga admin alur dapat mengevaluasi metrik utama untuk versi dasar dan kenari dan mengambil keputusan tentang apakah perubahan kenari aman dan cukup baik untuk peluncuran lengkap.

strategy: canary Danaction: promote atau action: reject dan strategy: canary input tugas manifes Kube dapat digunakan untuk mempromosikan atau menolak perubahan kenari masing-masing. Perhatikan bahwa dalam kedua kasus, pada akhir langkah ini, hanya varian stabil dari beban kerja yang dideklarasikan dalam file manifes input yang akan tetap disebarkan di kluster, sementara garis besar sementara dan versi kenari dibersihkan.

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen Semua versi agen yang didukung.
Kategori tugas Sebarkan