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
, promote
patch
, 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 menggunakansecrets
input bersama dengandeploy
tindakan untuk menambah file manifes input dengan nilai yang sesuaiimagePullSecrets
.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 dengandeploy
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
danIstio
. Tugas Manifes Kubernetes memetakan objek SMITrafficSplit
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 deploy
promote
, , 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:
- Tindakan penyebaran yang ditentukan dengan
strategy: canary
danpercentage: $(someValue)
. - Tugas Intervensi Manual sehingga Anda dapat menjeda alur dan membandingkan varian garis besar dengan varian kenari.
- 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 |