Azure Pipelines ile oluşturma ve Azure Kubernetes Service'e dağıtma
Azure DevOps Services
Azure Kubernetes Service'e (AKS) otomatik olarak dağıtmak için Azure Pipelines'ı kullanın. Azure Pipelines, Azure DevOps kullanarak sürekli tümleştirme (CI) ve sürekli teslim (CD) ile derlemenizi, test etmenizi ve dağıtmanızı sağlar.
Bu makalede, uygulamanızı sürekli olarak derleyen ve dağıtan bir işlem hattı oluşturmayı öğreneceksiniz. Dockerfile içeren bir depoda kodunuzu her değiştirdiğinizde, görüntüler Azure Container Registry'nize gönderilir ve bildirimler AKS kümenize dağıtılır.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Azure Resource Manager hizmet bağlantısı. Azure Resource Manager hizmet bağlantısı oluşturun.
- Bir GitHub hesabı. Henüz yoksa ücretsiz bir GitHub hesabı oluşturun.
Kodu alma
Örnek uygulama ve Dockerfile içeren aşağıdaki deponun çatalını oluşturun:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Azure kaynaklarını oluşturma
Azure portalında oturum açın ve sağ üst köşedeki Cloud Shell düğmesini seçin. AKS kümesi oluşturmak için Azure CLI veya PowerShell kullanın.
Kapsayıcı kayıt defteri oluşturma
# Create a resource group
az group create --name myapp-rg --location eastus
# Create a container registry
az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
# Create a Kubernetes cluster
az aks create \
--resource-group myapp-rg \
--name myapp \
--node-count 1 \
--enable-addons monitoring \
--generate-ssh-keys
Azure Pipelines'da oturum açma
Azure Pipelines'da oturum açın. Oturum açtığınızda tarayıcınız Azure https://dev.azure.com/my-organization-name
DevOps panonuzu görüntüler.
Seçtiğiniz kuruluş içinde bir proje oluşturun. Kuruluşunuzda hiç proje yoksa Başlamak için proje oluştur ekranını görürsünüz. Aksi takdirde, panonun sağ üst köşesindeki Proje Oluştur düğmesini seçin.
İşlem hattını oluşturma
Bağlanın ve deponuzu seçin
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İşlem hatları'na gidin ve Yeni işlem hattı'na tıklayın.
İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını uygulayın.
Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.
Depo listesini gördüğünüzde deponuzu seçin.
Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Öyleyse Onayla ve yükle'yi seçin.
Azure Kubernetes Service'e Dağıt'ı seçin.
İstenirse, kayıt defterinizi ve kümenizi oluşturduğunuz aboneliği seçin.
Kümeyi
myapp
seçin.Ad Alanı için Var'ı ve ardından varsayılan'ı seçin.
Kapsayıcı kayıt defterinizin adını seçin.
Görüntü adını varsayılan olarak ayarlayabilirsiniz.
Hizmet bağlantı noktasını 8080 olarak ayarlayın.
Uygulamayla ilgili gözden geçirme yapılandırmasının sonraki adımlarda otomatik olarak oluşturulan yaml işlem hattına dahil edilmesi için Çekme İstekleri için Gözden Geçirme Uygulamasını Etkinleştir onay kutusunu ayarlayın.
Doğrula ve yapılandır'ı seçin.
Azure Pipelines işlem hattınızı oluştururken işlem şunları yapacaktır:
İşlem hattınızın kapsayıcı kayıt defterinize görüntü göndermesini sağlamak için bir Docker kayıt defteri hizmeti bağlantısı oluşturun.
Ortamda bir ortam ve Kubernetes kaynağı oluşturun. RBAC özellikli bir kümede, oluşturulan Kubernetes kaynağı kümede örtük olarak ServiceAccount ve RoleBinding nesneleri oluşturur, böylece oluşturulan ServiceAccount seçilen ad alanı dışında işlem gerçekleştiremez.
İşlem hattınızı tanımlayan bir azure-pipelines.yml dosyası oluşturun.
Kubernetes bildirim dosyaları oluşturun. Bu dosyalar, yaptığınız seçimlere göre deployment.yml ve service.yml şablonlarının nemlendirilmesiyle oluşturulur. Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.
Kaydet ve çalıştır'ı seçin.
Commit iletisini Depomuza işlem hattı ekle gibi bir şekilde değiştirebilirsiniz. Hazır olduğunuzda Kaydet ve çalıştır'ı seçerek yeni işlem hattını deponuza işleyin ve ardından yeni işlem hattınızın ilk çalıştırmasına başlayın!
Uygulama dağıtımınıza bakın
İşlem hattınız çalışırken derleme aşamanızı izleyin ve ardından dağıtım aşamanız maviden (çalışıyor) yeşile (tamamlandı) geçin. İşlem hattınızı iş başında izlemek için aşamaları ve işleri seçebilirsiniz.
Not
Microsoft tarafından barındırılan bir aracı kullanıyorsanız, Güvenlik duvarınıza Microsoft tarafından barındırılan aracının IP aralığını eklemeniz gerekir. Her Çarşamba yayımlanan haftalık JSON dosyasından haftalık IP aralıkları listesini alın. Yeni IP aralıkları, bir sonraki Pazartesi günü geçerli olur. Daha fazla bilgi için, bkz. Microsoft tarafından barındırılan aracılar. Azure DevOps kuruluşunuz için gereken IP aralıklarını bulmak için, Microsoft tarafından barındırılan aracılar için olası IP aralıklarını tanımlamayı öğrenin.
İşlem hattı çalıştırması tamamlandıktan sonra neler olduğunu keşfedin ve ardından uygulamanızın dağıtılma bölümüne gidin. İşlem hattı özetinden:
Ortamlar sekmesini seçin.
Ortamı görüntüle'yi seçin.
Dağıtılan ad alanı için uygulamanızın örneğini seçin. Varsayılanları kullandıysanız, varsayılan ad alanında myapp uygulamasıdır.
Hizmetler sekmesini seçin.
Dış IP adresini seçin ve panonuza kopyalayın.
Yeni bir tarayıcı sekmesi veya penceresi açın ve IP adresi>:8080 girin<.
Örnek uygulamamızı oluşturuyorsanız, tarayıcınızda Merhaba dünya görünür.
İşlem hattının derleme şekli
Seçenekleri belirlemeyi tamamladıktan sonra Azure Pipelines'ın Azure Kubernetes Service'e Dağıt şablonunu kullanarak sizin için bir işlem hattı oluşturduğunu doğrulamaya ve yapılandırmaya devam ettiğinizde.
Derleme aşaması, görüntüyü derlemek ve Azure Container Registry'ye göndermek için Docker görevini kullanır.
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- task: PublishPipelineArtifact@1
inputs:
artifactName: 'manifests'
path: 'manifests'
Dağıtım işi, Kubernetes küme düğümlerinin Azure Container Registry kaynağından çekmesi için gerekenleri oluşturmak imagePullSecret
için Kubernetes bildirim görevini kullanır. Bildirim dosyaları daha sonra Kubernetes bildirim görevi tarafından Kubernetes kümesine dağıtmak için kullanılır. Bildirim dosyaları ve deployment.yml
, service.yml
Azure Kubernetes Service'e Dağıt şablonunu kullandığınızda oluşturulmuştur.
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy job
pool:
vmImage: $(vmImageName)
environment: 'myenv.aksnamespace' #customize with your environment
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifactName: 'manifests'
downloadPath: '$(System.ArtifactsDirectory)/manifests'
- task: KubernetesManifest@1
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: '$(dockerRegistryServiceConnection)'
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: 'deploy'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
containers: '$(containerRegistry)/$(imageRepository):$(tag)'
imagePullSecrets: '$(imagePullSecret)'
Kaynakları temizleme
Oluşturduğunuz kaynakları her bitirdiğinizde, bunları silmek için aşağıdaki komutu kullanabilirsiniz:
az group delete --name myapp-rg
İstendiğinde girin y
.
Azure Kubernetes Service