Kubernetes bildirim görevi

Kubernetes kümelerini oluşturmak ve bu kümelere bildirim dağıtmak için derleme veya yayın işlem hattında Kubernetes bildirim görevi kullanın.

Genel Bakış

Aşağıdaki listede, bu görevin temel avantajları listelene bir liste ve ardından aşağıdakiler yer alıyor:

  • Yapıt değiştirme:Dağıtım eylemi, etiket ve özetleriyle birlikte belirtebilirsiniz kapsayıcı görüntülerinin listesini alır. Aynı giriş, kümeye uygulama öncesinde, standartlaştırılan olmayan bildirim dosyalarında da kullanılır. Bu değiştirme, küme düğümlerinin görüntünün doğru sürümünü çekmelerini sağlar.

  • Bildirim kararlılığı:Dağıtılan Kubernetes nesnelerinin kullanıma alma durumu denetlenir. Kararlılık denetimleri, görev durumunun başarılı mı yoksa başarısız mı olduğunu belirlemek için bir içine dahil edildi.

  • İzlanabilirlik ek açıklamaları:İzleme bilgilerini üst üste eklemek için dağıtılan Kubernetes nesnelerine ek açıklamalar eklenir. Aşağıdaki ek açıklamalar de destekler:

    • 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:createSecret eylemi Docker kayıt defteri gizli dizilerini Docker kayıt defteri hizmet bağlantıları kullanılarak oluşturmanızı sağlar. Ayrıca düz metin değişkenleri veya gizli dizi değişkenleri kullanılarak genel gizli dizilerin oluşturularak da oluşturulabilir. Kümeye dağıtımdan önce, giriş bildirim dosyalarını uygun imagePullSecrets değeriyle artırmak için dağıtım eylemiyle birlikte gizli dizi girişini kullanabilirsiniz.

  • Bildirim oluşturma:Görevin bake eylemi, şablonların Kubernetes bildirim dosyalarına baktırmasını sağlar. Eylem Helm, Compose ve kustomize gibi araçları kullanır. Bu Kubernetes bildirim dosyaları, kümeye dağıtımlar için kullanılabilir.

  • Dağıtım stratejisi:Dağıtım eylemiyle birlikte canary stratejisini seçmek, "-baseline" ve "-canary" ile son ekli adlara sahip iş yüklerinin oluşturulmasına neden olur. Görev iki trafik bölme yöntemini destekler:

    • Service Mesh Arabirimi:Service Mesh Arabirimi (SMI) soyutlama, Linkerd ve Istio gibi hizmet ağı sağlayıcılarıyla yapılandırmaya olanak sağlar. Kubernetes Bildirimi görevi, SMI TrafficSplit nesnelerini dağıtım stratejisinin yaşam döngüsü boyunca kararlı, temel ve canary hizmetleriyle eşler.

      Bir hizmet ağı temel alan ve bu görevi kullanan canary 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 etkinleştirmesi nedeniyle ortaya çıkar. Hizmet ağı, podlara bulunan hizmet kayıt defterini ve sidecar kapsayıcılarını kullanır. Bu ekleme, ayrıntılı trafik bölünmesi elde etmek için uygulama kapsayıcıları ile birlikte gerçekleşir.

    • Hizmet ağının olmadığı Kubernetes:Hizmet ağının olmadığı bir hizmet ağının olmaması, istek düzeyinde istediğiniz tam yüzde bölmesini alamayabilirsiniz. Ancak, kararlı varyantının yanındaki temel ve canary çeşitlemelerini kullanarak büyük olasılıkla canary dağıtımları da kullanabilirsiniz.

      Seçici-etiket kısıtlamaları karşı çalıştığından hizmet, üç iş yükü varyantının da podlarına istek gönderir. Kubernetes Bildirimi, temel ve canary çeşitlemeleri oluştururken bu istekleri karşılar. Bu yönlendirme davranışı, toplam isteklerin yalnızca bir kısmının canary'ye yönlendiren hedeflenen etkisini sağlar.

    Yayın işlem hatlarında El ile Müdahale görevi veya YAML işlem hatlarında Gecikme görevi kullanarak temel ve canary iş yüklerini karşılaştırın. Görevin yükselt veya reddet eylemlerini kullanmadan önce karşılaştırmayı yapma.

Dağıtım eylemi

Parametre Açıklama
Eylem
Eylem
(Gerekli)

Dağıtmak
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
(Görev Kubernetes ortamında kullanılmadıkça gereklidir)

Kubernetes hizmet bağlantısının adı.
Ad alanı
Ad Alanı
(Görev Kubernetes ortamında kullanılmadıkça gereklidir)

Dağıtıla küme içindeki ad alanı.
Bildirim
Bildirim
(Gerekli)

Dağıtım için kullanılacak bildirim dosyalarının yolu. Her satır tek bir yolu temsil eder. Dosya eşleştirme düzeni, her satır için kabul edilebilir bir değerdir.
Konteyner
Kapsayıcılar
(İsteğe bağlı)

Bildirim dosyalarında değiştirmeler için kullanılacak görüntünün tam URL'si. Bu giriş, yeni satırla ayrılmış formda birden çok yapıt değiştirmesi belirtimi 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 contosodemo.azurecr.io/foo görüntü alanında ve için tüm contosodemo.azurecr.io/bar başvurular aranır. Bulunan her eşleşme için, etiketi test1test2 eşlene başvuruyla değiştirilir.
imagePullSecrets
Görüntü gizli dizileri çeker
(İsteğe bağlı)

Her satırın küme içinde önceden ayarlanmış bir Docker kayıt defteri gizli anahtarının adını içerdiği çok satırlı giriş. Giriş bildirimi dosyalarında bulunan iş yükleri için her gizli ad imagePullSecrets altına eklenir.
Strateji
Strateji
(İsteğe bağlı)

Bildirim dosyaları kümeye uygulanırken kullanılan dağıtım stratejisi. Şu anda kabul edilebilir tek dağıtım stratejisi canary'dir.
trafficSplitMethod
Trafik bölme yöntemi
(İsteğe bağlı)

Kabul edilebilir değerler pod vesmi değerleridir. Varsayılan değer pod'larıdır.

smi değeri içintrafik bölme yüzdesi, hizmet ağı kullanılarak istek düzeyinde yapılır. Bir hizmet ağının küme yöneticisi tarafından ayarlanmış olması gerekir. Bu görev, SMI TrafficSplit nesnelerinin düzenlemesi için kullanılır.

Değer pod'uiçin, hizmet ağının olmamasında istek düzeyinde yüzde bölmesi mümkün değildir. Bunun yerine, taban çizgisi ve canary için çoğaltmaları hesaplamak için yüzde girişi kullanılır. Hesaplama, kararlı varyant için giriş bildirimlerde belirtilen çoğaltmaların yüzdesidir.
Yüzde
Yüzde
(Yalnızca strateji canary olarak ayarlanmışsa gereklidir)

Bildirim dosyalarında yer alan iş yüklerinin taban çizgisi varyantı ve canary-variant çoğaltmalarının sayısını hesaplamak için kullanılan yüzde.

Belirtilen yüzde girişi için şunları hesapla:

(yüzdeçoğaltma   sayısı) / 100

Sonuç bir tamsayı değilse, taban çizgisi ve canary varyantları oluşturulduğunda sonucun matematiksel katı kullanılır.

Örneğin hello-world dağıtımının giriş bildirim dosyasında olduğunu ve görev girişine aşağıdaki satırların gir olduğunu varsayalım:

replicas: 4
strategy: canary
percentage: 25

Bu durumda, hello-world-baseline ve hello-world-canary dağıtımları her biri bir çoğaltma ile oluşturulur. Temel varyant, kararlı sürümle aynı görüntü ve etiketle oluşturulur. Bu, dağıtımdan önceki dört çoğaltmalı varyanttır. Kanarya değişkeni, yeni dağıtılan değişikliklere karşılık gelen görüntüyle ve etiketle oluşturulur.
Baselineandcanaryçoğaltmalar
Taban çizgisi ve kanarya çoğaltmaları
(İsteğe bağlı ve yalnızca trafficSplitMethodSMIolarak ayarlandıysa geçerlidir)

TrafficSplitMethod ' yi SMIolarak belirlediğinizde, yüzde trafik bölünmesi hizmet kafes düzlemine göre denetlenir. Ancak, trafik bölünmesini bağımsız olarak kanarya ve temel Varyantlar için gerçek yineleme sayısını kontrol edebilirsiniz.

Örneğin, giriş dağıtım bildiriminin kararlı değişken için 30 çoğaltma sağladığını varsayalım. Ayrıca, görev için aşağıdaki girişi belirttiğinizden de varsayılmaktadır:

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

Bu durumda, kararlı değişken trafiğin %80 ' sini alır, ancak taban çizgisi ve kanarya çeşitlemeleri belirtilen %20 ' nin yarısını alır. Ancak taban çizgisi ve kanarya çeşitleri her biri üç çoğaltma almaz. Bunun yerine, her birinin bir çoğaltma alacağı anlamına gelen, belirtilen sayıda kopyayı alırlar.
rolloutStatusTimeout
Dağıtım durumu için zaman aşımı
(İsteğe bağlı)

Dağıtım durumundaki izlemeyi sonlandırmadan önce beklenecek süre (saniye cinsinden). Varsayılan değer 0 ' dır (beklememe).

Aşağıdaki YAML kodu, bildirim dosyalarını kullanarak bir Kubernetes ad alanına dağıtmaya yönelik bir örnektir:

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, ya da değeri, tagVariable1tagVariable2 görüntü adının bir etiketi olarak eklenir. Yapıt değiştirme için kapsayıcılar girişinde de özetleri belirtebilirsiniz.

Not

Dağıtım stratejisiyle ilgili YAML girişi ile dağıtım, yükseltme ve reddetme eylemlerini yazarlarken, El Ile müdahale görevi oluşturma desteği şu anda derleme işlem hatları için kullanılamaz.

Yayın işlem hatları için aşağıdaki sırada dağıtım stratejisiyle ilgili eylemleri ve girişi kullanmanızı tavsiye ederiz:

  1. Ve ile belirtilen bir dağıtım strategy: canary eylemi percentage: $(someValue) .
  2. İşlem hattını duraklatıp ve temel türevini kanarya varyantı ile karşılaştırabilmeniz için el ile müdahale görevi.
  3. El Ile müdahale görevi devam ettirildiğinde ve El Ile müdahale görevi reddedildiğinde çalıştırılan bir reddetme eylemi olduğunda çalışan bir yükseltme eylemi.

Eylemleri yükselt ve Reddet

Parametre Açıklama
ön
Eylem
Istenir

Yükselt veya Reddet
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
Istenir

Kubernetes hizmet bağlantısınınadı.
uzayına
Ad Alanı
Istenir

Dağıtım yapılacak küme içindeki ad alanı.
listeleri
Listeleri
Istenir

Dağıtım için kullanılacak bildirim dosyalarının yolu. Her satır tek bir yolu temsil eder. Dosya eşleştirme bir model her satır için kabul edilebilir bir değerdir.
kapsayıcıları
Kapsayıcılar
(İsteğe bağlı)

Bildirim dosyalarındaki değişimler için kullanılacak görüntünün tam kaynak URL 'SI. Contosodemo.azurecr.io/helloworld:test URL 'SI bir örnektir.
ımagepullgizlilikler
Resim çekme gizli dizileri
(İsteğe bağlı)

Her satırın küme içinde zaten ayarlanmış bir Docker kayıt defteri gizli dizisi adını içerdiği çok satırlı giriş. Her gizli ad, giriş bildirimi dosyalarında bulunan iş yükleri için ımagepullsecret alanının altına eklenir.
inize
Strateji
(İsteğe bağlı)

Bir yükseltme eyleminden veya reddetme eyleminden önce dağıt eyleminde kullanılan dağıtım stratejisi. Şu anda kanarya , kabul edilebilir tek dağıtım stratejisidir.

Gizli dizi eylemi oluştur

Parametre Açıklama
ön
Eylem
Istenir

createSecret
secretType
Gizli dizi türü
Istenir

Kabul edilebilir değerler Dockerregistry ve generic' dir. Dockerregistryvarsayılan değerdir.

Secrettypedockerregistryolarak ayarlarsanız ımagepullgizlilikler alanı bir kümede oluşturulur veya bir özel kapsayıcı kayıt defterinden görüntü çekmeye yardımcı olacak şekilde güncelleştirilir.
secretName
Gizli dizi adı
Istenir

Oluşturulacak veya güncellenen gizli dizi adı.
dockerRegistryEndpoint
Docker kayıt defteri hizmet bağlantısı
(Yalnızca Secrettype , dockerregistryolarak ayarlandıysa gereklidir)

Belirtilen hizmet bağlantısının kimlik bilgileri, küme içinde bir Docker kayıt defteri gizli dizisi oluşturmak için kullanılır. Imagepullsecret alanındaki bildirim dosyaları daha sonra bu gizli dizinin adına başvurabilir.
secretArguments
Gizli bağımsız değişkenler
(Yalnızca Secrettypegenelolarak ayarlandıysa gereklidir)

Gizli dizileri oluşturmak ve güncelleştirmek için kullanılacak anahtarları ve değişmez değerleri kabul eder. Aşağıda bir örnek verilmiştir:
--from-literal = KEY1 = değer1--from-literal = key2 = "üst gizli"
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
Istenir

Kubernetes hizmet bağlantısınınadı.
uzayına
Ad Alanı
Istenir

İçinde gizli anahtar oluşturmak için kullanılacak küme ad alanı.

Aşağıdaki YAML kodu, Docker kayıtdefteri gizli anahtarı kullanılarak Docker kayıt defteri gizliliklerin örnek bir oluşturulmasını göstermektedir:

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 dizileri bir örnek oluşturmayı 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

Parametre Açıklama
ön
Eylem
Istenir

hazırlama
renderType
İşleme altyapısı
Istenir

Bildirim dosyalarını oluşturmak için kullanılan işleme türü.

Kabul edilebilir değerler şunlardır
,
ve kustomize. Varsayılan değer helm2' dir.
helmChart
Helb grafiği
(Yalnızca RenderTypehelm2olarak ayarlandıysa gereklidir)

Fırlama için kullanılan hele grafiğinin yolu.
overrideFiles
Dosyaları geçersiz kıl
(İsteğe bağlı ve yalnızca RenderTypehelm2olarak ayarlandıysa geçerlidir)

Geçersiz kılma dosyalarının yolunu kabul eden çok satırlı giriş. Dosyalar, Held grafiklerinden bildirim dosyaları kullanıma açıldığında kullanılır.
kılma
Geçersiz kılma değerleri
(İsteğe bağlı ve yalnızca RenderTypehelm2olarak ayarlandıysa geçerlidir)

Komut satırı anahtarı aracılığıyla kullanılan ek geçersiz kılma değerleri, Held kullanan bildirim dosyaları kullanıma açıldığında ayarlanır .

Geçersiz kılma değerlerini anahtar-değer çiftleri olarak şu biçimde belirtin:değeri. Birden çok geçersiz kılma anahtar-değer çifti kullanırsanız her anahtar-değer çiftini ayrı bir satırda belirtin. Farklı anahtar-değer çiftleri arasındaki sınırlayıcı olarak bir yeni satır karakteri kullanın.
relet adı
Sürüm adı
(İsteğe bağlı ve yalnızca RenderTypehelm2olarak ayarlandıysa geçerlidir)

Held grafiklerini fırlama sırasında kullanılan yayının adı.
kustomizationPath
Kustomization yolu
(İsteğe bağlı ve yalnızca RenderTypekustomizeolarak ayarlandıysa geçerlidir)

Kustomization. YAML dosyasını içeren dizinin yolu.
dockerComposeFile
Docker Compose dosyasının yolu
(İsteğe bağlı ve yalnızca RenderTypekomposeolarak ayarlandıysa geçerlidir)

Docker Compose dosyasının yolu.

Aşağıdaki YAML kodu, Held grafiklerinden gelen bildirim dosyalarının bir örneğidir. İlk görevde ad girişinin kullanımını dikkate alın. Bu ada daha sonra, hazırlama adımı tarafından üretilen 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

Ölçeklendirme eylemi

Parametre Açıklama
ön
Eylem
Istenir

scale
denetlenmesi
Tip
Istenir

Ölçeği artırılacağını veya azaltılamak için Kubernetes nesnesinin türü. Örnek olarak ReplicaSet ve StatefulSet sayılabilir.
ada
Name
Istenir

Ölçeği yukarı veya aşağı olacak Kubernetes nesnesinin adı.
çoğaltmaları
Çoğaltma sayısı
Istenir

Ölçeklendirilecek kopyaların sayısı.
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
Istenir

Kubernetes hizmet bağlantısınınadı.
uzayına
Ad Alanı
Istenir

Dağıtım yapılacak küme içindeki ad alanı.
rolloutStatusTimeout
Dağıtım durumu için zaman aşımı
(İsteğe bağlı)

Dağıtım durumundaki izlemeyi sonlandırmadan önce beklenecek süre (saniye cinsinden). Varsayılan değer 0 ' dır (beklememe).

Aşağıdaki YAML kodu, nesneleri ölçeklendirmeyle bir örnek 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 eylemi

Parametre Açıklama
ön
Eylem
Istenir

düzeltmesi
resourceToPatch
Yayama kaynağı
Istenir

Aşağıdaki düzeltme eki yöntemlerinden birini gösterir:
  • Bildirim dosyası düzeltme uygulanacak nesneleri tanımlar.
  • Tek bir nesne, yama hedefi olarak Kind ve Name tarafından tanımlanır.
Kabul edilebilir değerler Dosya ve addır. Varsayılan değer Dosya' dır.
resourceFiletoPatch
Dosya yolu
(Yalnızca eylem Patch olarak ayarlandıysa ve resourcetopatchDosyaolarak ayarlandıysa gereklidir)

Düzeltme eki için kullanılan dosyanın yolu.
denetlenmesi
Tip
(Yalnızca Resourcetopatchadıolarak ayarlandıysa gereklidir)

Kubernetes nesnesinin türü. Örnek olarak ReplicaSet ve StatefulSet sayılabilir.
ada
Name
(Yalnızca Resourcetopatchadıolarak ayarlandıysa gereklidir)

Düzeltme uygulanacak Kubernetes nesnesinin adı.
Birleştirme stratejisi
Birleştirme stratejisi
Istenir

Düzeltme ekini uygulamak için kullanılacak strateji.

Kabul edilebilir değerler
,
ve stratejikdeğerlerdir. Varsayılan değer stratejik' dır.
düzeltmesi
Patch
Istenir

Düzeltme ekinin içeriği.
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
Istenir

Kubernetes hizmet bağlantısınınadı.
uzayına
Ad Alanı
Istenir

Dağıtım yapılacak küme içindeki ad alanı.
rolloutStatusTimeout
Dağıtım durumu için zaman aşımı
(İsteğe bağlı)

Dağıtım durumundaki izlemeyi sonlandırmadan önce beklenecek süre (saniye cinsinden). Varsayılan değer 0 ' dır (beklememe).

Aşağıdaki YAML kodunda, nesne düzeltme eki uygulama örneği gösterilmektedir:

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

Eylemi Sil

Parametre Açıklama
ön
Eylem
Istenir

delete
değişkenlerinden
Bağımsız değişkenler
Istenir

Gerekli nesneleri silmek için kubectl 'ye geçirilecek bağımsız değişkenler. Örnek:
arguments: deployment hello-world foo-bar
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
Istenir

Kubernetes hizmet bağlantısınınadı.
uzayına
Ad Alanı
Istenir

Dağıtım yapılacak küme içindeki ad alanı.

Bu YAML kodu bir ö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ı

Açık kaynak

Bu görev GitHubaçık kaynağıdır. Geribildirim ve katılımlar hoş geldiniz.