Kubernetes bildirim görevi

Derleme veya sürüm ardışık düzeninde bir Kubernetes bildirim görevi kullanarak Kubernetes kümelerine bildirim ve dağıtım yapın.

Genel Bakış

Aşağıdaki listede bu görevin başlıca avantajları gösterilmektedir:

  • Yapıt değiştirme: dağıtım eylemi, etiketleriyle birlikte belirtebileceğiniz kapsayıcı görüntülerinin listesini giriş olarak alır. Aynı giriş, kümeden uygulamadan önce şablonsiz olmayan bildirim dosyalarına konur. 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ı veya hata olup olmadığını belirlemede birleştirilir.

  • İzlenebilirlik ek açıklamaları: ek açıklamalar, dağıtılmış Kubernetes nesnelerine, izlenebilirlik bilgilerini eklemek için eklenir. Aşağıdaki ek açıklamalar desteklenir:

    • Azure-işlem hatları/kuruluş
    • Azure-işlem hatları/proje
    • Azure-işlem hatları/işlem hattı
    • Azure-işlem hatları/Pipelineıd
    • Azure-işlem hatları/yürütme
    • Azure-işlem hatları/executionuri
    • Azure-işlem hatları/jobName
  • Gizli dizi işleme: createsecret eylemi Docker kayıt defteri gizli dizileri kullanılarak Docker kayıt defteri gizliliklerin oluşturulmasını sağlar. Ayrıca, düz metin değişkenleri veya gizli değişkenler kullanılarak genel parolaların oluşturulmasını sağlar. Kümeye dağıtımdan önce, giriş bildirimi dosyalarını uygun ımagepullgizlilikler değeri ile genişletmek için, dağıtım eylemiyle birlikte gizli dizi girişini kullanabilirsiniz.

  • Hazırlama bildirimi: görevin hazırlama eylemi, Kubernetes bildirim dosyalarına yönelik şablon oluşturma olanağı sağlar. Eylem Held, Compose ve kustomize gibi araçları kullanır. Bu Kubernetes bildirim dosyaları, fırın ile kümeye dağıtımlar için kullanılabilir.

  • Dağıtım stratejisi: Dağıt eylemi ile kanarya stratejisi seçme, "-Baseline" ve "-kanarya" ile sabit adlara sahip iş yükleri oluşturulmasına yol açar. Görev, iki trafik bölme yöntemini destekler:

    • Hizmet kafesi arabirimi: hizmet ağ arabirimi (SMI) soyutlama, Linkerd ve istio gibi hizmet ağı sağlayıcılarıyla yapılandırmaya izin verir. Kubernetes bildirim görevi, dağıtım stratejisinin yaşam döngüsü boyunca SMI TrafficSplit nesnelerini kararlı, temel ve kanarya hizmetlere eşler.

      Hizmet kafesi temel alan ve bu görevi kullanan Canary dağıtımları daha doğru. Bu doğruluk, hizmet ağı sağlayıcılarının parçalı yüzde tabanlı trafik bölünmesini etkinleştirmesi nedeniyle oluşur. Hizmet ağı, pods 'ye eklenen hizmet kayıt defteri ve dışarıdan arabası kapsayıcılarını kullanır. Bu ekleme, parçalı trafik bölünmesini sağlamak için uygulama kapsayıcılarıyla birlikte oluşur.

    • Hizmet ağı olmayan Kubernetes: bir hizmet ağı yokluğunda, istek düzeyinde istediğiniz tam bölme yüzdesini alamaz. Ancak kararlı varyantın yanında temel ve kanarya türevlerini kullanarak belki de kanarya dağıtımlar yapabilirsiniz.

      Bu hizmet, seçici etiketi kısıtlamaları karşılandığında, her üç iş yükü varyantundaki istekleri gönderir. Kubernetes bildirimi, taban çizgisi ve kanarya çeşitleri oluştururken bu istekleri atlar. Bu yönlendirme davranışı, yalnızca toplam isteklerin bir kısmını Canary 'a yönlendirmeye yönelik amaçlanan etkiye erişir.

    Yayın işlem hatlarında el ile müdahale görevi veya YAML işlem hatlarında bir gecikme görevi kullanarak taban çizgisi ve kanarya iş yüklerini karşılaştırın. Görevin Yükselt veya Reddet eylemini kullanmadan önce karşılaştırmayı yapın.

Dağıtım eylemi

Parametre Açıklama
ön
Eylem
Istenir

dağıtımı
kubernetesServiceConnection
Kubernetes hizmet bağlantısı
(Görev bir Kubernetes ortamındakullanılmamışsa gereklidir)

Kubernetes hizmet bağlantısınınadı.
uzayına
Ad Alanı
(Görev bir Kubernetes ortamındakullanılmamışsa gereklidir)

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 URL 'SI. Bu giriş, yeni satır için ayrılmış biçimde birden çok Yapıt değiştirme belirtimini kabul eder. Aşağıda bir örnek verilmiştir:

containers: |
  contosodemo.azurecr.io/foo:test1
  contosodemo.azurecr.io/bar:test2

Bu örnekte, ve öğesine yapılan tüm contosodemo.azurecr.io/foo Başvurular contosodemo.azurecr.io/bar giriş bildirim dosyalarının görüntü alanında aranır. Bulunan her eşleşme için etiket test1 veya test2 eşleşen başvuruyu değiştirir.
ımagepullgizlilikler
Görüntü gizli dizileri çeker
(İ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 altına eklenir.
inize
Strateji
(İsteğe bağlı)

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

Kabul edilebilir değerler Pod ve SMI' dir. Varsayılan değer Pod'dir.

SMIdeğeri için, bir hizmet ağı kullanılarak, yüzde trafik bölünmesi istek düzeyinde yapılır. Bir hizmet ağı, bir küme yöneticisi tarafından ayarlanmalıdır. Bu görev SMı TrafficSplit nesnelerinin düzenlemesini işler.

Poddeğeri için, bir hizmet ağı yokluğunda istek düzeyinde yüzde bölme mümkün değildir. Bunun yerine, yüzde girişi taban çizgisi ve Canary için çoğaltmaları hesaplamak üzere kullanılır. Hesaplama, kararlı varyant için giriş bildirimlerinde belirtilen çoğaltmaların yüzdesidir.
den
Yüzde
(Yalnızca strateji kanaryaolarak ayarlandıysa gereklidir)

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

Belirtilen yüzde girişi için Hesapla:

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

Sonuç bir tamsayı değilse, taban çizgisi ve kanarya çeşitleri oluşturulduğunda sonucun matematik tabanı kullanılır.

Örneğin, Hello-World ' in giriş bildirim dosyasında olduğunu ve aşağıdaki satırların görev girişinde olduğunu varsayalım:

replicas: 4
strategy: canary
percentage: 25

Bu durumda, Hello-World-Baseline ve Hello-World-Canary dağıtımları her bir çoğaltma ile oluşturulur. Taban çizgisi değişkeni, dağıtımdan önce dört çoğaltma varyantı olan kararlı sürümle birlikte oluşturulur. 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 trafficSplitMethod SMIolarak 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, tagVariable1 tagVariable2 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 Secrettype genelolarak 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 helm2, komposeve kustomize. Varsayılan değer helm2' dir.
helmChart
Helb grafiği
(Yalnızca RenderType helm2olarak 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 RenderType helm2olarak 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 RenderType helm2olarak 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 RenderType helm2olarak 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 RenderType kustomizeolarak 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 RenderType komposeolarak 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

ölçek
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 resourcetopatch Dosyaolarak ayarlandıysa gereklidir)

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

Kubernetes nesnesinin türü. Örnek olarak ReplicaSet ve StatefulSet sayılabilir.
ada
Name
(Yalnızca Resourcetopatch adı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 JSON, mergeve 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 GitHub 'daaçık kaynaktır. Geribildirim ve katılımlar hoş geldiniz.