KubernetesManifest@1 - Kubernetes v1 görevine dağıtma
Kümelere dağıtmak için Kubernetes bildirim dosyalarını kullanın, hatta Helm grafiklerini kullanarak dağıtımlar için kullanılacak bildirim dosyalarını pişirin.
Syntax
# Deploy to Kubernetes v1
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@1
inputs:
#action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
#connectionType: 'kubernetesServiceConnection' # 'azureResourceManager' | 'kubernetesServiceConnection'. Required when action != bake. Service connection type. Default: kubernetesServiceConnection.
#kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when action != bake && connectionType = kubernetesServiceConnection. Kubernetes service connection.
#azureSubscriptionConnection: # string. Alias: azureSubscriptionEndpoint. Required when action != bake && connectionType = azureResourceManager. Azure subscription.
#azureResourceGroup: # string. Required when action != bake && connectionType = azureResourceManager. Resource group.
#kubernetesCluster: # string. Required when action != bake && connectionType = azureResourceManager. Kubernetes cluster.
#useClusterAdmin: false # boolean. Optional. Use when connectionType = azureResourceManager. Use cluster admin credentials. Default: false.
#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.
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.
connectionType
- Hizmet bağlantı türü
string
. olduğunda action != bake
gereklidir. İzin verilen değerler: azureResourceManager
(Azure Resource Manager), kubernetesServiceConnection
(Kubernetes Service Connection). Varsayılan değer: kubernetesServiceConnection
.
Kubernetes hizmeti bağlantı türünü seçin.
kubernetesServiceConnection
(Kubernetes Service Connection) - Bir KubeConfig dosyası sağlamanıza, Hizmet Hesabı belirtmenize veya Azure Aboneliği seçeneğiyle bir AKS örneğini içeri aktarmanıza olanak tanır. Azure Aboneliği seçeneğiyle bir AKS örneğinin içeri aktarılması için Hizmet Bağlantısı yapılandırma zamanında Kubernetes kümesi erişimi gerekir.azureResourceManager
(Azure Resource Manager) - Bir AKS örneği seçmenize olanak tanır. Hizmet Bağlantısı yapılandırma zamanında Kubernetes kümesine erişmiyor.
Daha fazla bilgi için bkz. Açıklamalar.
kubernetesServiceConnection
- Kubernetes hizmet bağlantısı
Giriş diğer adı: kubernetesServiceEndpoint
. string
. olduğunda action != bake && connectionType = kubernetesServiceConnection
gereklidir.
Kubernetes hizmet bağlantısını belirtir.
azureSubscriptionConnection
- Azure aboneliği
Giriş diğer adı: azureSubscriptionEndpoint
. string
. olduğunda action != bake && connectionType = azureResourceManager
gereklidir.
Azure Container Registry içeren Azure Resource Manager aboneliğini seçin. Not: Yeni hizmet bağlantısını yapılandırmak için listeden Azure aboneliğini seçin ve 'Yetki ver'e tıklayın. Aboneliğiniz listelenmiyorsa veya mevcut bir Hizmet Sorumlusu kullanmak istiyorsanız , 'Ekle' veya 'Yönet' düğmesini kullanarak bir Azure hizmet bağlantısı kurabilirsiniz.
azureResourceGroup
- Kaynak grubu
string
. olduğunda action != bake && connectionType = azureResourceManager
gereklidir.
Bir Azure kaynak grubu seçin.
kubernetesCluster
- Kubernetes kümesi
string
. olduğunda action != bake && connectionType = azureResourceManager
gereklidir.
Azure tarafından yönetilen bir küme seçin.
useClusterAdmin
- Küme yöneticisi kimlik bilgilerini kullanma
boolean
. İsteğe bağlı. olduğunda connectionType = azureResourceManager
kullanın. Varsayılan değer: false
.
Varsayılan küme kullanıcı kimlik bilgileri yerine küme yöneticisi kimlik bilgilerini kullanın.
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.
strategy
- Strateji
string
. İsteğe bağlı. olduğunda action = deploy || action = promote || action = reject
kullanın. İzin verilen değerler: canary
, none
. Varsayılan değer: none
.
Eylem veya eylemden önce promote
reject
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ı. olduğunda 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 istek düzeyinde bir hizmet ağı kullanılarak yapılır. Bir hizmet ağı, küme yöneticisi tarafından ayarlanmalıdır. Bu görev, SMI TrafficSplit nesnelerinin düzenlemesini işler.
değeri pod
için, hizmet ağı olmadığında istek düzeyinde yüzde bölme 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ğaltmasayısı × yüzdesi) / 100
Sonuç bir tamsayı değilse, taban çizgisi ve kanarya varyantları oluşturulduğunda sonucun matematiksel katı kullanılır.
Örneğin, dağıtımın hello-world
giriş bildirim 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 taban çizgisi 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ı. olduğunda 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.
imagePullSecrets
- ImagePullSecrets
string
. İsteğe bağlı. olduğunda 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ı. olduğunda action = bake
kullanın. İzin verilen değerler: helm
, kompose
, kustomize
. Varsayılan değer: helm
.
Bildirim dosyalarını oluşturmak 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.
releaseName
- Helm Sürüm Adı
string
. İsteğe bağlı. olduğunda action = bake && renderType = helm
kullanın.
Kullanılacak Helm yayın adını belirtir.
overrideFiles
- Dosyaları Geçersiz Kıl
string
. İsteğe bağlı. olduğunda action = bake && renderType = helm
kullanın.
Geçersiz kılma dosyalarının yolunu kabul eden çok satırlı bir giriş belirtir. Helm grafiklerinden bildirim dosyaları pişirildiğinde dosyalar kullanılır.
overrides
- Geçersiz kılınır
string
. İsteğe bağlı. olduğunda action = bake && renderType = helm
kullanın.
Ayarlanacağı geçersiz kılma değerlerini belirtir.
kustomizationPath
- Kustomization Path
string
. İsteğe bağlı. olduğunda action = bake && renderType = kustomize
kullanın.
Dosyanın bulunduğu dizinin yolu olması gereken bağımsız değişkeni veya depo köküne göre yol soneki same
içeren bir 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.
replicas
- Çoğaltma sayısı
string
. olduğunda action = scale
gereklidir.
K8s nesnesinin adı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ı. olduğunda 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
Kapsayıcı kayıt defteri parolasını içeren bir gizli diziyi Kubelet'e geçirmenin bir yoludur; böylece Pod'unuz adına özel bir görüntü çekebilir.
secretName
- Gizli dizi adı
string
. İsteğe bağlı. olduğunda 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ı. olduğunda 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ı. olduğunda 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 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ı. olduğunda action = deploy || action = patch || action = scale || action = promote
kullanın. Varsayılan değer: 0
.
Durumu sonlandırmadan watch on rollout
önce bek eklenecek süreyi (saniye cinsinden) belirtir.
Görev denetim seçenekleri
Tüm görevlerde 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
Bake eylemi tarafından oluşturulan bildirim paketlerinin konumu
Açıklamalar
AKS'ye erişirken Kubernetes Service Connection ile ilgili dikkat edilmesi gerekenler
Aşağıdaki seçeneklerden herhangi biriyle Kubernetes hizmet bağlantısı oluşturabilirsiniz.
- KubeConfig
- Hizmet Hesabı
- Azure Aboneliği
Azure Aboneliği seçeneğini belirlediğinizde Kubernetes'in hizmet bağlantısı yapılandırma zamanında Azure DevOps tarafından erişilebilir olması gerekir. Bir hizmet bağlantısının oluşturulamamasının çeşitli nedenleri olabilir, örneğin özel bir küme oluşturdunuz veya kümede yerel hesaplar devre dışı bırakılmış olabilir. Böyle durumlarda Azure DevOps, hizmet bağlantısı yapılandırma zamanında kümenize bağlanamaz ve takılmış Bir Ad alanları yükleniyor ekranı görürsünüz.
Kubernetes 1.24'den başlayarak, uzun süreli belirteçler artık varsayılan olarak oluşturulmaz. Kubernetes, uzun süreli belirteçler kullanmamanızı önerir. Sonuç olarak, Azure Aboneliği seçeneğiyle oluşturulan bir Kubernetes hizmet bağlantısı kullanan görevlerin kimlik doğrulaması için gereken kalıcı belirteçe erişimi yoktur ve Kubernetes kümenize erişemez. Bu, dondurulan Ad alanlarını yükleme iletişim kutusuyla da sonuçlanmış olur.
AKS'ye erişmek için Azure Resource Manager Hizmet Bağlantısı'nı kullanma
AKS müşterileri için Azure Resource Manager hizmeti bağlantı türü, özel bir kümeye veya yerel hesapları devre dışı bırakılmış bir kümeye bağlanmak için en iyi yöntemi sağlar. Bu yöntem, hizmet bağlantısı oluşturduğunuzda küme bağlantısına bağımlı değildir. AKS'ye erişim, aşağıdaki avantajlara sahip işlem hattı çalışma zamanına ertelenmiştir:
- Bir (özel) AKS kümesine erişim, kümeye görüş çizgisi olan şirket içinde barındırılan veya ölçek kümesi aracısından gerçekleştirilebilir.
- Azure Resource Manager hizmet bağlantısı kullanan her görev için bir belirteç oluşturulur. Bu, Kubernetes'e kubernetes önerisi olan kısa süreli bir belirteçle bağlanmanızı sağlar.
- Yerel hesaplar devre dışı bırakıldığında bile AKS'ye erişilebilir.
Hizmet bağlantısı hakkında SSS
Şu hata iletisini alıyorum: Hizmet hesabıyla ilişkili gizli dizi bulunamadı. Ne oluyor?
Azure Aboneliği ile Kubernetes hizmet bağlantısını kullanıyorsunuz. Uzun süreli belirteçler oluşturmak için bu yöntemi güncelleştiriyoruz. Bu özelliğin Mayıs ayı ortasında kullanıma sunulması beklenmektedir. Ancak, Azure hizmet bağlantı türünü kullanmaya başlamanız ve Kubernetes kılavuzuna göre uzun süreli belirteçler kullanmamanızı öneririz.
AKS kullanıyorum ve hiçbir şeyi değiştirmek istemiyorum, Kubernetes hizmet bağlantısıyla görevleri kullanmaya devam edebilir miyim?
Uzun süreli belirteçler oluşturmak için bu yöntemi güncelleştiriyoruz. Bu özelliğin Mayıs ayı ortasında kullanıma sunulması beklenmektedir. Ancak bu yaklaşımın Kubernetes kılavuzuna aykırı olduğunu lütfen unutmayın.
Kubernetes görevlerini ve Kubernetes hizmet bağlantısını kullanıyorum ama AKS'yi kullanmıyorum. Endişelenmeli miyim?
Görevleriniz daha önce olduğu gibi çalışmaya devam edecektir.
Kubernetes hizmeti bağlantı türü kaldırılacak mı?
Kubernetes görevlerimiz, nerede çalıştıklarından bağımsız olarak tüm Kubernetes kümeleriyle çalışır. Kubernetes hizmet bağlantısı varolmaya devam edecektir.
Aks müşterisiyim ve her şey yolunda, harekete geçeyim mi?
Hiçbir şeyi değiştirmeye gerek yok. Kubernetes hizmet bağlantısını kullanıyorsanız ve oluşturma sırasında Azure Aboneliği'ni seçtiyseniz , uzun süreli belirteçleri kullanma konusunda Kubernetes kılavuzunun farkında olmanız gerekir.
Kubernetes Ortamı oluşturuyorum ve hizmet bağlantılarını kullanma seçeneğim yok
Ortam oluşturma sırasında AKS'nize erişemiyorsanız boş bir ortam kullanabilir ve girişi bir Azure Resource Manager hizmet bağlantısına ayarlayabilirsinizconnectionType
.
AKS'yi Azure Active Directory RBAC ile yapılandırdım ve işlem hattım çalışmıyor. Bu güncelleştirmeler bu sorunu çözecek mi?
AAD RBAC etkinleştirildiğinde Kubernetes'e erişmenin belirteç oluşturmayla ilgisi yok. Etkileşimli bir istem önlemek için, gelecekteki bir güncelleştirmede kubelogin'i destekleyeceğiz.
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, genel gizli dizilerin düz metin değişkenleri veya gizli dizi değişkenleri kullanılarak 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ı 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 tanıtılan 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 |