KubernetesManifest@0 - Kubernetes v0 görevine dağıtma
Helm grafiklerini kullanarak bildirimleri pişirmek ve Kubernetes kümelerine dağıtmak için bir derleme veya yayın işlem hattında Kubernetes bildirim görevi kullanın.
Syntax
# 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.
Girişler
action
- Eylem
string
. İzin verilen değerler: bake
, createSecret
(gizli dizi oluşturma), delete
, deploy
, patch
, promote
, scale
, reject
. Varsayılan değer: deploy
.
Gerçekleştirilecek eylemi belirtir.
kubernetesServiceConnection
- Kubernetes hizmet bağlantısı
string
. olduğunda action != bake
gereklidir.
Kubernetes hizmet bağlantısını belirtir.
namespace
- Ad alanı
string
.
bayrağını kullanarak komutların ad alanını –namespace
belirtir. Ad alanı sağlanmazsa komutlar varsayılan ad alanında çalışır.
namespace
- Ad alanı
string
. olduğunda action != bake
gereklidir. Varsayılan değer: default
.
bayrağını kullanarak komutların ad alanını –namespace
belirtir. Ad alanı sağlanmazsa komutlar varsayılan ad alanında çalışır.
strategy
- Strateji
string
. İsteğe bağlı. when action = deploy || action = promote || action = reject
kullanın. İzin verilen değerler: canary
, none
. Varsayılan değer: none
.
Eylem veya reject
eylemden önce promote
eylemde deploy
kullanılan dağıtım stratejisini belirtir. canary
Şu anda kabul edilebilir tek dağıtım stratejisidir.
trafficSplitMethod
- Trafik bölme yöntemi
string
. İsteğe bağlı. when strategy = canary
kullanın. İzin verilen değerler: pod
, smi
. Varsayılan değer: pod
.
değeri smi
için trafik bölme yüzdesi bir hizmet ağı kullanılarak istek düzeyinde gerçekleştirilir. Hizmet ağı bir küme yöneticisi tarafından ayarlanmalıdır. Bu görev, SMI TrafficSplit nesnelerinin düzenlemesini işler.
değeri pod
için, bir hizmet ağı olmadığında istek düzeyinde bölme yüzdesi mümkün değildir. Bunun yerine, taban çizgisi ve kanarya için çoğaltmaları hesaplamak için yüzde girişi kullanılır. Hesaplama, kararlı değişken için giriş bildirimlerinde belirtilen çoğaltmaların yüzdesidir.
percentage
- Yüzde
string
. olduğunda strategy = Canary && action = deploy
gereklidir. Varsayılan değer: 0
.
Bildirim dosyalarında yer alan iş yüklerinin temel-değişken ve kanarya-değişken çoğaltmalarının sayısını hesaplamak için kullanılan yüzde.
Belirtilen yüzde girişi için şunu hesaplayın:
(çoğaltma sayısı × yüzdesi) / 100
Sonuç bir tamsayı değilse, temel ve kanarya çeşitleri oluşturulduğunda sonucun matematiksel katı kullanılır.
Örneğin, dağıtımın hello-world
giriş bildirimi dosyasında olduğunu ve görev girişinde aşağıdaki satırların bulunduğunu varsayalım:
replicas: 4
strategy: canary
percentage: 25
Bu durumda dağıtımlar hello-world-baseline
ve hello-world-canary
her biri bir çoğaltma ile oluşturulur. Temel değişken, dağıtımdan önceki dört çoğaltmalı değişken olan kararlı sürümle aynı görüntü ve etiketle oluşturulur. Kanarya çeşidi, yeni dağıtılan değişikliklere karşılık gelen görüntü ve etiketle oluşturulur.
baselineAndCanaryReplicas
- Temel ve kanarya çoğaltmaları
string
. olduğunda strategy = Canary && action = deploy && trafficSplitMethod = SMI
gereklidir. Varsayılan değer: 1
.
olarak smi
ayarladığınızda trafficSplitMethod
trafik bölme yüzdesi hizmet ağı düzleminde denetlenir. Kanarya ve temel varyantlar için gerçek çoğaltma sayısını trafik bölmeden bağımsız olarak denetleyebilirsiniz.
Örneğin, giriş dağıtım bildiriminin kararlı değişken için 30 çoğaltma belirttiğini varsayalım. Ayrıca görev için aşağıdaki girişi belirttiğinizi varsayalım:
strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1
Bu durumda kararlı değişken trafiğin %80'ini alırken temel ve kanarya varyantlarının her biri belirtilen %20'nin yarısını alır. Temel ve kanarya varyantları her birinde üç çoğaltma almaz. Bunun yerine belirtilen sayıda çoğaltma alır, yani her biri bir çoğaltma alır.
manifests
- Bildirim
string
. olduğunda action = deploy || action = promote || action = reject
gereklidir.
Dağıtım için kullanılacak bildirim dosyalarının yolunu belirtir. Her satır tek bir yolu temsil eder. Dosya eşleştirme deseni her satır için kabul edilebilir bir değerdir.
containers
- Konteyner
string
. İsteğe bağlı. when action = deploy || action = promote || action = bake
kullanın.
Bildirim dosyalarındaki değiştirmeler için kullanılacak görüntünün tam kaynak URL'sini belirtir. URL contosodemo.azurecr.io/helloworld:test
bir örnektir.
containers
- Konteyner
string
. İsteğe bağlı. when action = deploy || action = promote
kullanın.
Bildirim dosyalarındaki değiştirmeler için kullanılacak görüntünün tam URL'sini belirtir. Bu giriş, yeni satırla ayrılmış bir formda birden çok yapı değişikliğinin belirtimini kabul eder. Aşağıda bir örnek verilmiştir:
containers: |
contosodemo.azurecr.io/foo:test1
contosodemo.azurecr.io/bar:test2
Bu örnekte, giriş bildirim dosyalarının görüntü alanında ve contosodemo.azurecr.io/bar
için tüm başvurular contosodemo.azurecr.io/foo
aranır. Bulunan her eşleşme için etiket test1
veya test2
eşleşen başvurunun yerini alır.
imagePullSecrets
- ImagePullSecrets
string
. İsteğe bağlı. when action = deploy || action = promote
kullanın.
Her satırın küme içinde önceden ayarlanmış bir Docker kayıt defteri gizli dizisinin adını içerdiği çok satırlı bir girişi belirtir. Giriş bildirim dosyalarında bulunan iş yükleri için her gizli dizi adı altına imagePullSecrets
eklenir.
renderType
- İşleme Altyapısı
string
. İsteğe bağlı. when action = bake
kullanın. İzin verilen değerler: helm
, kompose
, kustomize
. Varsayılan değer: helm
.
Bildirim dosyalarını üretmek için kullanılan işleme türünü belirtir.
renderType
- İşleme Altyapısı
string
. İsteğe bağlı. when action = bake
kullanın. İzin verilen değerler: helm2
(Helm 2). Varsayılan değer: helm2
.
Bildirim dosyalarını üretmek için kullanılan işleme türünü belirtir.
dockerComposeFile
- Docker compose dosyasının yolu
string
. olduğunda action = bake && renderType = kompose
gereklidir.
Docker-compose dosya yolunu belirtir.
helmChart
- Helm Grafiği
string
. olduğunda action = bake && renderType = helm
gereklidir.
Pişirmek için Helm grafik yolunu belirtir.
helmChart
- Helm Grafiği
string
. olduğunda action = bake && renderType = helm2
gereklidir.
Pişirmek için Helm grafik yolunu belirtir.
releaseName
- Helm Sürüm Adı
string
. İsteğe bağlı. when action = bake && renderType = helm
kullanın.
Kullanılacak Helm yayın adını belirtir.
releaseName
- Helm Sürüm Adı
string
. İsteğe bağlı. when action = bake && renderType = helm2
kullanın.
Kullanılacak Helm yayın adını belirtir.
overrideFiles
- Dosyaları Geçersiz Kıl
string
. İsteğe bağlı. when action = bake && renderType = helm
kullanın.
Geçersiz kılma dosyalarının yolunu kabul eden çok satırlı bir giriş belirtir. Helm grafiklerindeki bildirim dosyaları pişirildiğinde dosyalar kullanılır.
overrideFiles
- Dosyaları Geçersiz Kıl
string
. İsteğe bağlı. when action = bake && renderType = helm2
kullanın.
Geçersiz kılma dosyalarının yolunu kabul eden çok satırlı bir giriş belirtir. Helm grafiklerindeki bildirim dosyaları pişirildiğinde dosyalar kullanılır.
overrides
- Geçersiz kılınır
string
. İsteğe bağlı. when action = bake && renderType = helm
kullanın.
Ayarlanacağı geçersiz kılma değerlerini belirtir.
overrides
- Geçersiz kılınır
string
. İsteğe bağlı. when action = bake && renderType = helm2
kullanın.
Helm kullanan bildirim dosyaları işlendiğinde komut satırı anahtarı --set
aracılığıyla kullanılan ek geçersiz kılma değerlerini belirtir.
geçersiz kılma değerlerini biçiminde key:value
çiftler olarak key-value
belirtin. Birden çok geçersiz kılma çifti key-value
kullanıyorsanız, her key-value
çifti ayrı bir satırda belirtin. Farklı key-value
çiftler arasındaki sınırlayıcı olarak yeni satır karakteri kullanın.
kustomizationPath
- Kustomization Yolu
string
. İsteğe bağlı. when action = bake && renderType = kustomize
kullanın.
Dosyayı içeren dizinin yolu olması gereken bağımsız değişkeni veya depo köküne göre bir yol soneki same
ile git deposu URL'si belirtir.
resourceToPatch
- Düzeltme eki uygulama kaynağı
string
. olduğunda action = patch
gereklidir. İzin verilen değerler: file
, name
. Varsayılan değer: file
.
Aşağıdaki düzeltme eki yöntemlerinden birini gösterir:
- Bildirim dosyası, düzeltme eki uygulanacak nesneleri tanımlar.
- Tek bir nesne türe ve ada göre düzeltme eki hedefi olarak tanımlanır.
Kabul edilebilir değerler dosya ve addır.
resourceFileToPatch
- Dosya yolu
string
. olduğunda action = patch && resourceToPatch = file
gereklidir.
Düzeltme eki için kullanılan dosyanın yolunu belirtir.
kind
- Tür
string
. olduğunda action = scale || resourceToPatch = name
gereklidir. İzin verilen değerler: deployment
, replicaset
, statefulset
.
gibi K8s nesnesinin deployment
replicaSet
türünü ve daha fazlasını belirtir.
name
- Adı
string
. olduğunda action = scale || resourceToPatch = name
gereklidir.
K8s nesnesinin adını belirtir.
replicas
- Çoğaltma sayısı
string
. olduğunda action = scale
gereklidir.
Ölçeklendirilecek çoğaltma sayısını belirtir.
mergeStrategy
- Birleştirme Stratejisi
string
. olduğunda action = patch
gereklidir. İzin verilen değerler: json
, merge
, strategic
. Varsayılan değer: strategic
.
Sağlanan düzeltme ekinin türünü belirtir.
arguments
- Bağımsız değişken
string
. İsteğe bağlı. when action = delete
kullanın.
Komutun bağımsız değişkenlerini kubectl delete
belirtir. Örnek olarak: arguments: deployment hello-world foo-bar
patch
- Yama
string
. olduğunda action = patch
gereklidir.
Düzeltme ekinin içeriğini belirtir.
secretType
- Gizli dizi türü
string
. olduğunda action = createSecret
gereklidir. İzin verilen değerler: dockerRegistry
, generic
. Varsayılan değer: dockerRegistry
.
Genel veya docker imagepullsecret
oluşturur veya güncelleştirir. Seçili kayıt defterinin oluşturulmasını veya güncelleştirileceğini imagepullsecret
belirtindockerRegistry
. , imagePullSecret
Kubelet'e kapsayıcı kayıt defteri parolası içeren bir gizli dizi geçirmenin bir yoludur, böylece podunuz adına özel bir görüntü çekebilir.
secretName
- Gizli dizi adı
string
. İsteğe bağlı. when action = createSecret
kullanın.
Gizli dizinin adını belirtir. Bu gizli dizi adını Kubernetes YAML yapılandırma dosyasında kullanabilirsiniz.
secretArguments
- Bağımsız değişken
string
. İsteğe bağlı. when action = createSecret && secretType = generic
kullanın.
Gizli diziye eklenecek anahtarları ve değişmez değerleri belirtir. Örneğin, --from-literal=key1=value1
--from-literal=key2="top secret"
.
dockerRegistryEndpoint
- Docker kayıt defteri hizmeti bağlantısı
string
. İsteğe bağlı. when action = createSecret && secretType = dockerRegistry
kullanın.
Küme içinde docker kayıt defteri gizli dizisi oluşturmak için kullanılan belirtilen hizmet bağlantısının kimlik bilgilerini belirtir. Alanın altındaki imagePullSecrets
bildirim dosyaları daha sonra bu gizli dizinin adına başvurabilir.
rolloutStatusTimeout
- Dağıtım durumu için zaman aşımı
string
. İsteğe bağlı. when action = deploy || action = patch || action = scale || action = promote
kullanın. Varsayılan değer: 0
.
Bitiş durumundan önce watch on rollout
bek eklenecek süreyi (saniye cinsinden) belirtir.
Görev denetimi seçenekleri
Tüm görevlerin, görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.
Çıkış değişkenleri
Bu görev aşağı akış adımlarında, işlerde ve aşamalarda kullanabileceğiniz aşağıdaki çıkış değişkenlerini tanımlar.
manifestsBundle
Pişirme eylemi tarafından oluşturulan bildirim paketlerinin konumunu belirtir.
Açıklamalar
Not
Bu görevin, özelliğini kullanarak connectionType
kubernetes kümesini farklı şekillerde hedeflemek için ek destek sağlayan daha yeni bir sürümü vardır. Daha fazla bilgi için bkz . KubernetesManifest@1 ve KubernetesManifest@1 hizmet bağlantısı açıklamaları
Bildirimleri pişirmek ve Kubernetes kümelerine dağıtmak için derleme veya yayın işlem hattında Kubernetes bildirim görevi kullanın.
Bu görev aşağıdakileri destekler:
Yapıt değiştirme: Dağıtım eylemi, etiketleri ve özetleriyle birlikte belirtebileceğiniz kapsayıcı görüntülerinin bir listesini girdi olarak alır. Aynı giriş, kümeye uygulamadan önce platformlanmamış bildirim dosyalarıyla değiştirilir. Bu değiştirme, küme düğümlerinin görüntünün doğru sürümünü çekmesini sağlar.
Bildirim kararlılığı: Dağıtılan Kubernetes nesnelerinin dağıtım durumu denetlenir. Kararlılık denetimleri, görev durumunun başarılı mı yoksa başarısız mı olduğunu belirlemek için birleştirilir.
İzlenebilirlik ek açıklamaları: İzlenebilirlik bilgilerinin yerini almak için dağıtılan Kubernetes nesnelerine ek açıklamalar eklenir. Aşağıdaki ek açıklamalar desteklenir:
- azure-pipelines/org
- azure-pipelines/project
- azure-pipelines/pipeline
- azure-pipelines/pipelineId
- azure-pipelines/execution
- azure-pipelines/executionuri
- azure-pipelines/jobName
Gizli dizi işleme: Bu eylem Docker
createSecret
kayıt defteri gizli dizilerinin Docker kayıt defteri hizmeti bağlantıları kullanılarak oluşturulmasını sağlar. Ayrıca, düz metin değişkenleri veya gizli dizi değişkenleri kullanılarak genel gizli dizilerin oluşturulmasını sağlar. Kümeye dağıtımdan önce giriş bildirimi dosyalarını uygunimagePullSecrets
değerledeploy
artırmak için eylemiyle birlikte girişi kullanabilirsinizsecrets
.Bake bildirimi:
bake
Görevin eylemi, şablonların Kubernetes bildirim dosyalarında pişirilmesine olanak tanır. Eylem Helm, Compose ve Kustomize gibi araçları kullanır. Bu Kubernetes bildirim dosyaları, pişirme ile kümeye yapılan dağıtımlar için kullanılabilir.Dağıtım stratejisi: Eylemle stratejinin
canary
deploy
seçilmesi, ve-canary
ile-baseline
ekli iş yükü adlarının oluşturulmasına yol açar. Görev iki trafik bölme yöntemini destekler:Service Mesh Arabirimi: Service Mesh Arabirimi (SMI) soyutlama, ve
Istio
gibiLinkerd
hizmet ağı sağlayıcılarıyla yapılandırmaya olanak tanır. Kubernetes Bildirimi görevi, dağıtım stratejisinin yaşam döngüsü boyunca SMITrafficSplit
nesnelerini kararlı, temel ve kanarya hizmetlerine eşler.Bir hizmet ağında temel alan ve bu görevi kullanan kanarya dağıtımları daha doğru olur. Bu doğruluk, hizmet ağı sağlayıcılarının trafiğin ayrıntılı yüzde tabanlı bölünmesini nasıl etkinleştirdiğidir. Hizmet ağı, podlara eklenen hizmet kayıt defteri ve sepet kapsayıcılarını kullanır. Bu ekleme, ayrıntılı trafik bölme işlemine ulaşmak için uygulama kapsayıcılarıyla birlikte gerçekleşir.
Hizmet ağı olmayan Kubernetes: Hizmet ağı olmadığında, istek düzeyinde istediğiniz tam yüzde bölmesini alamayabilirsiniz. Ancak, kararlı değişkenin yanındaki temel ve kanarya çeşitlemlerini kullanarak kanarya dağıtımları yapabilirsiniz.
Seçici-etiket kısıtlamaları karşılandığında hizmet, istekleri üç iş yükü değişkeninin podlarına gönderir. Kubernetes Bildirimi, temel ve kanarya varyantları oluştururken bu istekleri kabul eder. Bu yönlendirme davranışı, toplam isteklerin yalnızca bir kısmını kanaryaya yönlendirmenin hedeflenen etkisini elde eder.
Yayın işlem hatlarında El ile Müdahale görevi veya YAML işlem hatlarında Gecikme görevi kullanarak temel ve kanarya iş yüklerini karşılaştırın. Görevin yükseltme veya reddetme eylemini kullanmadan önce karşılaştırmayı yapın.
Dağıtma eylemi
Aşağıdaki YAML kodu, bildirim dosyalarını kullanarak Kubernetes ad alanına dağıtma örneğidir:
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
Yukarıdaki örnekte görev, görüntüler foo/demo
ve bar/demo
bildirim dosyalarının görüntü alanlarında eşleşmeleri bulmaya çalışır. Bulunan her eşleşme için, veya tagVariable2
değeri tagVariable1
resim adına etiket olarak eklenir. Yapıt değişimi için kapsayıcı girişinde özetleri de belirtebilirsiniz.
Not
Dağıtım stratejisiyle ilgili YAML girişiyle , promote
ve reject
eylemleri yazabilirsiniz deploy
ancak derleme işlem hatları için El ile Müdahale görevi desteği şu anda kullanılamıyor.
Yayın işlem hatları için dağıtım stratejisiyle ilgili eylemleri ve girişleri aşağıdaki sırayla kullanmanızı öneririz:
- ve
percentage: $(someValue)
ilestrategy: canary
belirtilen bir dağıtım eylemi. - İşlem hattını duraklatabilmeniz ve temel değişkenini kanarya çeşidiyle karşılaştırabilmeniz için El ile Müdahale görevi.
- El ile Müdahale görevi sürdürülürse çalıştırılan bir yükseltme eylemi ve El ile Müdahale görevi reddedilirse çalıştırılan bir reddetme eylemi.
Gizli dizi eylemi oluşturma
Aşağıdaki YAML kodu, Docker Kayıt Defteri hizmet bağlantısı kullanılarak Docker kayıt defteri gizli dizilerinin örnek bir oluşturulmasını gösterir:
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: dockerRegistry
secretName: foobar
dockerRegistryEndpoint: demoACR
kubernetesServiceConnection: someK8sSC
namespace: default
Bu YAML kodu, genel gizli dizilerin örnek bir oluşturulmasını gösterir:
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: generic
secretName: some-secret
secretArguments: --from-literal=key1=value1
kubernetesServiceConnection: someK8sSC
namespace: default
Bake eylemi
Aşağıdaki YAML kodu, Helm grafiklerinden bildirim dosyalarının pişirilmesine bir örnektir. İlk görevde ad girişinin kullanımına dikkat edin. Bu ada daha sonra, bake adımı tarafından oluşturulan bildirimlerin yolunu belirtmek için dağıtım adımından başvurulur.
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
Not
Helm'i doğrudan yayınları ve geri almaları yönetmek üzere kullanmak için Bkz. Helm grafiklerini paketleme ve dağıtma görevi.
Kustomize örneği
Aşağıdaki YAML kodu, Kustomize ile oluşturulan ve dosya içeren bildirim dosyalarının pişirilmesine bir kustomization.yaml
örnektir.
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)
Kompose örneği
Aşağıdaki YAML kodu, Docker Compose için bir dönüştürme aracı olan Kompose ile oluşturulan bildirim dosyalarını pişirme örneğidir.
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)
Ölçeklendirme eylemi
Aşağıdaki YAML kodu, nesneleri ölçeklendirme örneğini gösterir:
steps:
- task: KubernetesManifest@0
displayName: Scale
inputs:
action: scale
kind: deployment
name: bootcamp-demo
replicas: 5
kubernetesServiceConnection: someK8sSC
namespace: default
Düzeltme eki uygulama eylemi
Aşağıdaki YAML kodu, nesne düzeltme eki uygulama örneğini gösterir:
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
Silme eylemi
Bu YAML kodu örnek nesne silme işlemini gösterir:
steps:
- task: KubernetesManifest@0
displayName: Delete
inputs:
action: delete
arguments: deployment expressapp
kubernetesServiceConnection: someK8sSC
namespace: default
Sorun giderme
Kubernetes kümem güvenlik duvarının arkasında ve barındırılan aracılar kullanıyorum. Bu kümeye nasıl dağıtırım?
Barındırılan aracılar için IP adreslerine izin vererek bu barındırılan aracılara güvenlik duvarınız üzerinden erişim verebilirsiniz. Diğer ayrıntılar için bkz. Aracı IP aralıkları.
Kanarya dağıtımlarıyla istekler hizmet yollarını kararlı hale getirmek ve çeşitlendirmek için nasıl çalışır?
Kubernetes'de podlarla hizmetler arasındaki etiket seçici ilişkisi, tek bir hizmetin istekleri hem kararlı hem de kanarya çeşitlemelerine yönlendirmesini sağlayacak şekilde dağıtımların ayarlanmasına olanak tanır. Kubernetes bildirim görevi bunu kanarya dağıtımları için kullanır.
Görev giriş bildirimi dosyalarında tanımlanan her iş yükü (Deployment, ReplicaSet, Pod, ...) için ve girişlerini action: deploy
içeriyorsa dağıtımın bir -baseline
ve -canary
değişkeni strategy: canary
oluşturulur. Bu örnekte, giriş bildirimi dosyasında bir dağıtım sampleapp
vardır ve işlem hattının 22 numaralı çalıştırması tamamlandıktan sonra, bu dağıtımın adlı sampleapp
kararlı değişkeni kümede dağıtılır. Sonraki çalıştırmada (bu durumda 23 numaralı çalıştırmada), Ve ile action: deploy
strategy: canary
Kubernetes bildirim görevi, örnek uygulama-taban çizgisi ve örnek uygulama-kanarya dağıtımlarının oluşturulmasına neden olur. Bu dağıtımların sayısı, giriş bildirim dosyalarına göre son kararlı değişken için istenen çoğaltma sayısının değeriyle görev girişinin çarpımıyla percentage
sampleapp
belirlenir.
Çoğaltma sayısı hariç, temel sürüm kararlı değişkenle aynı yapılandırmaya sahipken, kanarya sürümü geçerli çalıştırma tarafından sunulan yeni değişikliklere sahiptir (bu durumda, 23 numaralı çalıştır). Yukarıda belirtilen adımdan sonra işlem hattında el ile müdahale ayarlanırsa, işlem hattı yöneticisinin temel ve kanarya sürümleri için temel ölçümleri değerlendirebilmesi ve kanarya değişikliklerinin eksiksiz bir dağıtım için güvenli ve yeterli olup olmadığına karar verebilmesi için işlem hattını duraklatma fırsatı sağlar.
action: promote
Kubernetes bildirim görevlerinin ve strategy: canary
veya action: reject
ve strategy: canary
girişleri, kanarya değişikliklerini sırasıyla yükseltmek veya reddetmek için kullanılabilir. Her iki durumda da, bu adımın sonunda, kümede kısa ömürlü temel ve kanarya sürümleri temizlenirken, yalnızca giriş bildirim dosyalarında bildirilen iş yüklerinin kararlı değişkeninin dağıtılmada kalacağını unutmayın.
Gereksinimler
Gereksinim | Açıklama |
---|---|
İşlem hattı türleri | YAML, Klasik derleme, Klasik sürüm |
Üzerinde çalıştırılır | Agent, DeploymentGroup |
Talep | Hiçbiri |
Özellikler | Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz. |
Komut kısıtlamaları | Herhangi biri |
Ayarlanabilir değişkenler | Herhangi biri |
Aracı sürümü | Desteklenen tüm aracı sürümleri. |
Görev kategorisi | Dağıtma |