Aracılığıyla paylaş


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 != bakegereklidir. İ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 = kubernetesServiceConnectiongereklidir.

Kubernetes hizmet bağlantısını belirtir.


azureSubscriptionConnection - Azure aboneliği
Giriş diğer adı: azureSubscriptionEndpoint. string. olduğunda action != bake && connectionType = azureResourceManagergereklidir.

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 = azureResourceManagergereklidir.

Bir Azure kaynak grubu seçin.


kubernetesCluster - Kubernetes kümesi
string. olduğunda action != bake && connectionType = azureResourceManagergereklidir.

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 = azureResourceManagerkullanı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 = rejectkullanın. İzin verilen değerler: canary, none. Varsayılan değer: none.

Eylem veya eylemden önce promotereject 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 = canarykullanın. İzin verilen değerler: pod, smi. Varsayılan değer: pod.

değeri smiiç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 podiç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 = deploygereklidir. 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 = SMIgereklidir. Varsayılan değer: 1.

olarak smiayarladığı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 = rejectgereklidir.

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 = bakekullanı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 = promotekullanı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 = bakekullanı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 = komposegereklidir.

Docker-compose dosya yolunu belirtir.


helmChart - Helm Grafiği
string. olduğunda action = bake && renderType = helmgereklidir.

Pişirmek için Helm grafik yolunu belirtir.


releaseName - Helm Sürüm Adı
string. İsteğe bağlı. olduğunda action = bake && renderType = helmkullanı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 = helmkullanı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 = helmkullanın.

Ayarlanacağı geçersiz kılma değerlerini belirtir.


kustomizationPath - Kustomization Path
string. İsteğe bağlı. olduğunda action = bake && renderType = kustomizekullanı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 = patchgereklidir. İ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 = filegereklidir.

Düzeltme eki için kullanılan dosyanın yolunu belirtir.


kind - Tür
string. olduğunda action = scale || resourceToPatch = namegereklidir. İzin verilen değerler: deployment, replicaset, statefulset.

gibi K8s nesnesinin deploymentreplicaSet türünü ve daha fazlasını belirtir.


name - Adı
string. olduğunda action = scale || resourceToPatch = namegereklidir.

K8s nesnesinin adını belirtir.


replicas - Çoğaltma sayısı
string. olduğunda action = scalegereklidir.

Ölçeklendirilecek çoğaltma sayısını belirtir.


replicas - Çoğaltma sayısı
string. olduğunda action = scalegereklidir.

K8s nesnesinin adını belirtir.


mergeStrategy - Birleştirme Stratejisi
string. olduğunda action = patchgereklidir. İ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 = deletekullanı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 = patchgereklidir.

Düzeltme ekinin içeriğini belirtir.


secretType - Gizli dizi türü
string. olduğunda action = createSecretgereklidir. İzin verilen değerler: dockerRegistry, generic. Varsayılan değer: dockerRegistry.

Genel veya docker imagepullsecretoluş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 = createSecretkullanı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 = generickullanı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 = dockerRegistrykullanı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 = promotekullanı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

Kubernetes hizmeti bağlantı kimlik doğrulama yöntemini seçme ekran görüntüsü.

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.

Ad alanları yüklenirken kubernetes hizmeti bağlantı kimlik doğrulaması iletişim kutusu seçmenin ekran görüntüsü.

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ı uygun imagePullSecrets değerle deploy 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 canarydeploy seçilmesi, ve -canaryile -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 Istiogibi Linkerd 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 SMI TrafficSplit 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 , promoteve reject eylemleri yazabilirsiniz deployancak 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:

  1. ve percentage: $(someValue)ile strategy: canary belirtilen bir dağıtım eylemi.
  2. İşlem hattını duraklatabilmeniz ve temel değişkenini kanarya çeşidiyle karşılaştırabilmeniz için El ile Müdahale görevi.
  3. 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: canaryoluş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: deploystrategy: 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 percentagesampleapp 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