Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server 2022
Diğer bulut sağlayıcıları tarafından sunulan Azure Kubernetes Service ve Kubernetes kümelerine dağıtmak için Azure Pipelines'ı kullanın. Azure Pipelines'ın Kubernetes ile çalışmak için iki görevi vardır:
- KubernetesManifest görevi: Helm, Kompose veya Kustomize ile Kubernetes kümelerine bildirimleri pişirme ve dağıtma
- Kubectl görevi: kubectl komutlarını çalıştırarak Azure Container Service'te kubernetes kümesini dağıtma, yapılandırma ve güncelleştirme
Azure Kubernetes Service'i iki görevden biriyle kullanıyorsanız, özel bir kümeye veya yerel hesapları devre dışı bırakılmış bir kümeye bağlanmanın en iyi yolu Azure Resource Manager hizmet bağlantı türüdür.
Daha fazla dağıtım izlenebilirliği için, bir Kubernetes göreviyle birlikte ortamlarda bir Kubernetes kaynağı kullanın.
Azure Pipelines ve Azure Kubernetes Service'i kullanmaya başlamak için bkz. Azure Pipelines ile Azure Kubernetes Service'i derleme ve yayına alma. Azure Pipelines, Kubernetes ve kanarya dağıtım stratejisini kullanmaya başlamak için bkz. Azure Pipelines ile Kubernetes dağıtımları için bir kanarya dağıtım stratejisi kullanma.
KubernetesManifest görevi
KubernetesManifest görevi, görevi başarılı veya başarısız olarak işaretlemeden önce nesne kararlılığını denetler. Görev ayrıca artefakt değişimi gerçekleştirebilir, işlem hattı takip edilebilirliğiyle ilgili ek açıklamalar ekleyebilir, imagePullSecrets oluşturulmasını ve bunlara başvurmayı basitleştirebilir, manifest dosyalarını hazırlayabilir ve dağıtım stratejilerinin uygulanmasına yardımcı olabilir.
Not
YAML tabanlı işlem hattı desteği tek bir Git deposunu tetikler. Başka bir Git deposunda depolanan bir bildirim dosyası için tetikleyiciye ihtiyacınız varsa veya Azure Container Registry veya Docker Hub için tetikleyiciler gerekiyorsa YAML tabanlı işlem hattı yerine klasik bir işlem hattı kullanın.
Şablonları Kubernetes bildirim dosyalarında pişirmek için Kubernetes bildirim görevindeki pişirme eylemini kullanabilirsiniz. Bu eylem, Helm, Kustomize ve Kompose gibi araçları kullanmanıza olanak tanır. Kubernetes bildirim görevinin pişirme eylemi, giriş şablonları ile dağıtımlarda kullanılan son bildirim dosyaları arasındaki dönüşümü gösterir. Kubernetes manifest görevinde dağıtım eylemi için giriş olarak hazırlanan manifest dosyalarını görevlerin çıktıları olarak kullanabilirsiniz.
Dağıtım işleri içeren ortamların parçası olan Kubernetes kaynaklarını hedefleyin. Ortamları ve kaynak dağıtımlarını kullanmak işlem hattı izlenebilirliğini geliştirerek dağıtım sorunlarını tanılamanıza yardımcı olur. Aynı durum kontrol özelliklerine sahip olmayan normal işlerle Kubernetes kümelerine de dağıtım yapabilirsiniz.
Aşağıdaki YAML kodu, Helm şemalarından bildirim dosyalarının nasıl oluşturulacağını gösterir.
steps:
- task: KubernetesManifest@1
name: bake
displayName: Bake K8s manifests from Helm chart
inputs:
action: bake
helmChart: charts/sample
overrides: 'image.repository:nginx'
- task: KubernetesManifest@1
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: someK8sSC
namespace: default
manifests: $(bake.manifestsBundle)
containers: |
nginx: 1.24.0
Kubectl görevi
KubernetesManifest KubernetesManifest görevine alternatif olarak kubectl komutlarını çalıştırarak Azure Container Service'te bir Kubernetes kümesini dağıtmak, yapılandırmak ve güncelleştirmek için Kubectl görevini kullanın.
Bu örnekte bir hizmet bağlantısının Kubernetes kümesine nasıl başvurduğu gösterilmektedir.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
Skript görevi
kubectl
Bir betik göreviyle kullanın.
Bu örnekte, kubectl
çalıştırmak için bir betik kullanılır.
- script: |
kubectl apply -f manifest.yml
Kubernetes dağıtım stratejileri
Kubernetes bildirim görevi kanarya dağıtım stratejisini destekler. Yeni değişikliklerin tam dağıtımdan önce geçerli dağıtımlarla birlikte mevcut olması için yeni değişiklikleri kısmen dağıtmak için kanarya dağıtım stratejisini kullanın.
İşlem hatlarıyla kanarya dağıtımları hakkında daha fazla bilgi için Azure Pipelines ile Kubernetes dağıtımları için kanarya dağıtım stratejisini kullanma bölümüne bakın.
Çok bulutlu Kubernetes dağıtımları
Kubernetes tüm bulut sağlayıcılarında aynı şekilde çalışır. Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) veya diğer bulut sağlayıcılarından kümelere dağıtmak için Azure Pipelines'ı kullanın.
Çoklu bulut dağıtımını ayarlamak için bir ortam oluşturun ve Kubernetes kümelerinin ad alanlarıyla ilişkili Kubernetes kaynaklarını ekleyin.
Mevcut bir hizmet hesabını temel alan genel sağlayıcı yaklaşımı, Azure dahil olmak üzere herhangi bir bulut sağlayıcısının kümeleriyle çalışır. Azure Kubernetes Service seçeneğinin kullanılması yeni ServiceAccount ve RoleBinding nesneleri oluşturur. Bu, RoleBinding nesnesinin ServiceAccount'ın işlemlerini seçilen ad alanıyla sınırlamasını sağlar.
Genel sağlayıcı yaklaşımını kullanırken, içinde istenen hizmet hesabına izinler veren bir RoleBinding bulunduğundanedit
ClusterRole
emin olun. Azure Pipelines'ın seçilen ad alanında nesne oluşturmak için kullanabilmesi için doğru hizmet hesabına izin verin.
Birden çok buluta paralel dağıtımlar
Aşağıdaki örnek, birden çok buluttaki kümelere paralel dağıtımların nasıl yapılacağını gösterir. Bu örnekte AKS, GKE, EKS ve OpenShift kümelerine dağıtımlar vardır. Bu dört ad alanı, ortamın contoso
altındaki Kubernetes kaynaklarıyla ilişkilendirilir.
trigger:
- main
jobs:
- deployment:
displayName: Deploy to AKS
pool:
vmImage: ubuntu-latest
environment: contoso.aksnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: aksnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to GKE
pool:
vmImage: ubuntu-latest
environment: contoso.gkenamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: gkenamespace
manifests: manifests/*
- deployment:
displayName: Deploy to EKS
pool:
vmImage: ubuntu-latest
environment: contoso.eksnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: eksnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to OpenShift
pool:
vmImage: ubuntu-latest
environment: contoso.openshiftnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: openshiftnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to DigitalOcean
pool:
vmImage: ubuntu-latest
environment: contoso.digitaloceannamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: digitaloceannamespace
manifests: manifests/*