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