Kubernetes’e dağıtma

Azure Pipelines

Azure Pipelines, birden çok bulut sağlayıcısı tarafından sunulan kubernetes kümelerine dağıtmak için kullanılabilir. Bu belge, herhangi bir Kubernetes kümesi için dağıtımları ayarlamayla ilişkili kavramları içerir.

Uzak bir konumdan veya güvenli dosyalardan kubeconfig dosyalarını yüklemek için betik kullanmak ve ardından dağıtımları gerçekleştirmek için kubectl 'yi kullanmak mümkün olsa da, KubernetesManifest görevi ve Kubernetes hizmet bağlantısı bu işlemi daha basit ve daha güvenli bir şekilde yapmak için kullanılabilir.

KubernetesManifest görevi

Kubernetesmanifest görevi , bir görevi başarılı/başarısız olarak işaretlemeden önce nesne kararlılığını denetleyebilme, yapıt değiştirme işlemini gerçekleştirme, dağıtılmış nesnelere işlem hattı izlenebilirliği ile ilgili ek açıklamalar ekleme, ımagepullgizliliklerinin oluşturulmasını ve başvurmayı, Helm veya kustomization. YAML ya da Docker Compose dosyalarını ve dağıtım stratejisi piyasaya çıkarma 'e yardımcı olma avantajına sahiptir.

Ortamlarda Kubernetes kaynağı

OrtamlardaKubernetes kaynağı , dağıtımları gerçekleştirmek üzere bir Kubernetes kümesine bağlanmak için gereken kimlik bilgilerini belirtmenin güvenli bir yolunu sunar.

Kaynak oluşturma

Azure Kubernetes hizmet sağlayıcısı seçeneğinde, abonelik, küme ve ad alanı girişleri sağlandığında, gerekli kimlik bilgilerini getirme ve güvenli bir şekilde depolamanın yanı sıra, RBAC etkinleştirilmiş bir küme Için verolebinding nesneleri, ServiceAccount 'in yalnızca seçilen ad alanında işlem gerçekleştirebilmesini sağlamak üzere oluşturulur.

Herhangi bir bulut sağlayıcısının kümesine (AKS/EKS/GKE/OpenShift/vb.) bir bağlantı yapılandırmak için genel sağlayıcı (mevcut ServiceAccount 'i yeniden kullanma) seçeneği kullanılabilir.

Örnek


jobs:
- deployment:
  displayName: Deploy to AKS
  pool:
    vmImage: ubuntu-latest
  environment: contoso.aksnamespace
  strategy:
    runOnce:
      deploy:
        steps:
        - checkout: self
        - task: KubernetesManifest@0
          displayName: Create secret
          inputs: 
            action: createSecret
            namespace: aksnamespace
            secretType: dockerRegistry
            secretName: foo-acr-secret
            dockerRegistryEndpoint: fooACR
            
        - task: KubernetesManifest@0
          displayName: Create secret
          inputs: 
            action: createSecret
            namespace: aksnamespace
            secretType: dockerRegistry
            secretName: bar-acr-secret
            dockerRegistryEndpoint: barACR
            
        - task: KubernetesManifest@0
          displayName: Deploy
          inputs:
            action: deploy
            namespace: aksnamespace
            manifests: manifests/deployment.yml|manifests/service.yml
            containers: |
              foo.azurecr.io/demo:$(tagVariable1)
              bar.azurecr.io/demo:$(tagVariable2)
            imagePullSecrets: |
              foo-acr-secret
              bar-acr-secret

Eylemden önce özel kayıt defterlerinden görüntü çekmeye izin vermek için, eylem deploy ' in createSecret eyleme karşılık gelen daha sonra başvurulan ımagepullgizlilikler oluşturmak üzere deploy örnekleri ile birlikte kullanılır deploy .

İpucu

  • Dockerfile içeren bir depo için sıfırdan uçtan uca bir CI-CD işlem hattı ayarlarsanız Azure Kubernetes şablonuna dağıtımınıkullanıma alın ve bu dağıtımları görselleştirmenize yardımcı olmak için bir ortam ve Kubernetes kaynağı oluşturma ile birlikte uçtan uca bir YAML işlem hattı oluşturur.
  • YAML tabanlı işlem hattı tek bir git deposunda Tetikleyicileri desteklese de, başka bir git deposunda depolanan bildirim dosyaları için Tetikleyiciler gerekliyse veya Azure Container Registry veya Docker Hub için Tetikleyiciler gerekliyse, Kubernetes dağıtımlarını yapmak için YAML tabanlı bir işlem hattı yerine yayın işlem hattı kullanımı önerilir.

Alternatifler

Dağıtım için KubernetesManifest görevini kullanmak yerine, bir tane aşağıdaki alternatifleri de kullanabilir:

  • Kubectl görevi
  • betikte kubectl çağrısı. Örnek: script: kubectl apply -f manifest.yml