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:test2Bu ö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: 4strategy: canarypercentage: 25Bu 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: canarytrafficSplitMethod: smipercentage: 20baselineAndCanaryReplicas: 1Bu 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:
- Ve ile belirtilen bir dağıtım
strategy: canaryeylemipercentage: $(someValue). - İşlem hattını duraklatıp ve temel türevini kanarya varyantı ile karşılaştırabilmeniz için el ile müdahale görevi.
- 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. Secrettype 'ı dockerregistryolarak 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:
|
| 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.