Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Kubernetes kaynak görünümü, ad alanı içinde kaynağa eşlenen nesnelerin durumunu gösterir. Kaynak görünümü ayrıca bir Kubernetes nesnesinden işlem hattına ve sonra işlemeye geri dönebilmeniz için işlem hattı izlenebilirliğini de yer paylaşımlı olarak gösterir.
Dağıtım için bir ortamdaki Kubernetes kümelerini hedeflemek için Kubernetes kaynaklarını kullanın. Azure Kubernetes Service'e (AKS) ve diğer bulut sağlayıcılarından kümelere dağıtmak için işlem hatlarını kullanın.
Kubernetes kaynaklarını genel veya özel kümelerle kullanabilirsiniz. Kaynakların nasıl çalıştığı hakkında daha fazla bilgi için bkz . YAML'deki kaynaklar ve kaynaklarla güvenlik.
Not
Özel bir AKS kümesi kullanıyorsanız, API sunucusu uç noktası genel IP adresi aracılığıyla gösterilmediğinden kümenin sanal ağına bağlı olduğunuzdan emin olun.
Azure Pipelines, kümenin sanal ağına erişimi olan bir sanal ağ içinde şirket içinde barındırılan bir aracı ayarlamanızı önerir. Ayrıntılar için bkz . Özel kümeye bağlanma seçenekleri.
Genel bakış
Ortamlar içinde Kubernetes kaynak görünümlerini kullanmanın aşağıdaki avantajlarına bakın:
İşlem hattı izlenebilirliği - Dağıtımlar için kullanılan Kubernetes bildirim görevi, kaynak görünümlerinde işlem hattı izlenebilirliğini göstermek için daha fazla ek açıklama ekler. İşlem hattı izlenebilirliği, ad alanı içindeki bir nesnede yapılan güncelleştirmelerin sorumlu olduğu kaynak Azure DevOps kuruluşunu, projesini ve işlem hattını belirlemeye yardımcı olur.
Kaynak durumunu tanılama - İş yükü durumu, yeni bir dağıtım tarafından ortaya çıkan hataları veya regresyonları hızla ayıklamak için yararlı olabilir. Örneğin, ImagePullBackOff hatalarıyla sonuçlanan yapılandırılmamış imagePullSecrets için pod durum bilgileri sorunun kök nedenini belirlemenize yardımcı olabilir.
Uygulamayı gözden geçirme - Git deponuzdaki her çekme isteğini ortamın altındaki dinamik bir Kubernetes kaynağına dağıtarak Uygulamanın çalıştığını gözden geçirin. Gözden geçirenler, hedef dalda birleştirilip üretime dağıtılmadan önce bu değişikliklerin nasıl göründüğünü görebilir ve diğer bağımlı hizmetlerle çalışabilir.
değerini hesap adınız ile değiştirin service-account-name .
kubectl get secret -n <namespace> -o jsonpath='{.items[?(@.metadata.annotations.kubernetes\.io/service-account\.name==\"service-account-name\")]}'
Hiçbir şey alamazsanız bkz . ServiceAccount için el ile uzun ömürlü API belirteci oluşturma.
Kubernetes 1.22 ve altı:
Hizmet hesabı gizli dizi adını bulma
kubectl get serviceAccounts <service-account-name> -n <namespace> -o 'jsonpath={.secrets[*].name}'
değerini, bu komuttaki önceki komuttaki değerle değiştirin <service-account-secret-name>
kubectl get secret <service-account-secret-name> -n <namespace> -o json
Önceki adımın çıkışını kullanarak gizli dizi nesnesini alın.
kubectl get secret <service-account-secret-name> -n <namespace> -o json
JSON biçiminde getirilen Gizli dizi nesnesini kopyalayıp Gizli Dizi alanına yapıştırın.
Kubernetes kaynağını oluşturmak için Doğrula ve oluştur'u seçin.
İşlem hattında Kubernetes kaynaklarınıza başvurma
Azure Kubernetes Service kullanıyor ve bir YAML işlem hattı oluşturuyorsanız işlem hattınızı yapılandırmanın en kolay yolu şablon kullanmaktır. Deponuza bağlanın ve aşağıdaki iki Kubernetes Service seçeneğinden birini seçin:
Kubernetes'e dağıtma - Azure DevSpaces ile Uygulamayı Gözden Geçirme
Şablonlar, YAML kodunu sıfırdan yazmanıza veya el ile açık rol bağlamaları oluşturmanıza gerek kalmadan Gözden Geçirme Uygulamasını ayarlamanıza olanak sağlar.
Gözden Geçirme Uygulamasını Ayarlama
Aşağıdaki örnekte, ilk dağıtım işi PR olmayan dallar için çalıştırılır ve ortamlar altında normal bir Kubernetes kaynağına yönelik dağıtımlar yapar. İkinci iş yalnızca ÇEKME isteği dalları için çalışır ve isteğe bağlı olarak oluşturulan Uygulama kaynaklarını gözden geçirme (Kubernetes kümesi içindeki ad alanları) ile dağıtılır. Kaynaklar, ortamın kaynak listeleme görünümünde "Gözden Geçir" ile etiketlenmiştir.
İşlem hattında kullanılacak değişkenleri tanımlayın. Azure Kubernetes Services'e Dağıt şablonunu kullanırsanız, bu değişkenler sizin için tanımlanır.
YAML
# Build and push image to Azure Container Registry; Deploy to Azure Kubernetes Servicetrigger:-mainresources:- repo:selfvariables:# Container registry service connection established during pipeline creation dockerRegistryServiceConnection:'12345'# Docker service connection identifier envName:'myEnv'# name of your environment imageRepository:'name-of-image-repository'# name of image repository containerRegistry:'mycontainer.azurecr.io'# path to container registry dockerfilePath:'**/Dockerfile' tag:'$(Build.BuildId)' imagePullSecret:'my-app-secret'# image pull secret# Agent VM image name vmImageName:'ubuntu-latest'# Name of the new namespace being created to deploy the PR changes. k8sNamespaceForPR:'review-app-$(System.PullRequest.PullRequestId)'stages:- stage:Build displayName:Buildstage jobs: - job:Build displayName:Build pool: vmImage:$(vmImageName) steps: - task:Docker@2 displayName:Buildandpushanimagetocontainerregistry inputs: command:buildAndPush repository:$(imageRepository) dockerfile:$(dockerfilePath) containerRegistry:$(dockerRegistryServiceConnection) tags:|
$(tag)
- upload:manifests artifact:manifests- stage:Production displayName:Deploystage dependsOn:Build jobs: - deployment:Production condition:and(succeeded(),not(startsWith(variables['Build.SourceBranch'],'refs/pull/'))) displayName:Production pool: vmImage:$(vmImageName) environment: name:$(envName).$(resourceName) resourceType:Kubernetes strategy: runOnce: deploy: steps: - task:KubernetesManifest@0 displayName:CreateimagePullSecret inputs: action:createSecret secretName:$(imagePullSecret) dockerRegistryEndpoint:$(dockerRegistryServiceConnection) - task:KubernetesManifest@0 displayName:DeploytoKubernetescluster inputs: action:deploy manifests:|
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets:|
$(imagePullSecret)
containers:|
$(containerRegistry)/$(imageRepository):$(tag)
- deployment:DeployPullRequest displayName:DeployPullrequest condition:and(succeeded(),startsWith(variables['Build.SourceBranch'],'refs/pull/')) pool: vmImage:$(vmImageName) environment: name:$(envName).$(resourceName) resourceType:Kubernetes strategy: runOnce: deploy: steps: - reviewApp:default - task:Kubernetes@1 displayName:'Create a new namespace for the pull request' inputs: command:apply useConfigurationFile:true inline:'{ "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "$(k8sNamespaceForPR)" }}' - task:KubernetesManifest@0 displayName:CreateimagePullSecret inputs: action:createSecret secretName:$(imagePullSecret) namespace:$(k8sNamespaceForPR) dockerRegistryEndpoint:$(dockerRegistryServiceConnection) - task:KubernetesManifest@0 displayName:DeploytothenewnamespaceintheKubernetescluster inputs: action:deploy namespace:$(k8sNamespaceForPR) manifests:|
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets:|
$(imagePullSecret)
containers:|
$(containerRegistry)/$(imageRepository):$(tag)
- task:Kubernetes@1 name:get displayName:'Get services in the new namespace' continueOnError:true inputs: command:get namespace:$(k8sNamespaceForPR) arguments:svc outputFormat:jsonpath='http://{.items[0].status.loadBalancer.ingress[0].ip}:{.items[0].spec.ports[0].port}'# Getting the IP of the deployed service and writing it to a variable for posting comment - script:|
url="$(get.KubectlOutput)"
message="Your review app has been deployed"
if [ ! -z "$url" -a "$url" != "http://:" ]
then
message="${message} and is available at $url.<br><br>[Learn More](https://aka.ms/testwithreviewapps) about how to test and provide feedback for the app."
fi
echo "##vso[task.setvariable variable=GITHUB_COMMENT]$message"
Bu işi mevcut bir işlem hattında kullanmak için normal Kubernetes ortam kaynağının yedeklendiği hizmet bağlantısı "Küme yöneticisi kimlik bilgilerini kullan" olarak değiştirilmelidir. Aksi takdirde, temel alınan hizmet hesabı için Uygulamayı Gözden Geçir ad alanına rol bağlamaları oluşturulmalıdır.
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Bu sertifikasyon, şu teknik görevleri yerine getirme yeteneğinizi ölçer: Süreçleri ve iletişimi tasarlama ve uygulama, kaynak denetim stratejisi tasarlama ve uygulama, derleme ve yayın işlem hatlarını tasarlama ve uygulama, güvenlik ve uyumluluk planı geliştirme ve izleme stratejisi uygulama.
İşlem hatları için dağıtım hedefleri koleksiyonu olan ortamlar için dağıtım geçmişini oluşturmayı, hedeflemeyi, güvenli duruma almayı ve görüntülemeyi öğrenin.
Kubernetes bildirim dosyalarını kullanarak kümelere dağıtın ve hatta Helm grafiklerini (görev sürümü 0) kullanarak dağıtımlar için kullanılacak bildirim dosyalarını pişirin.
İşlerinizi aşamalar halinde düzenlemeyi, bağımlılıkları tanımlamayı ve koşulları ayarlamayı öğrenin. Dağıtım stratejilerini uygulamayı ve aşamaları tanımlamak için YAML veya Klasik işlem hattını kullanmayı öğrenin.