Buildelés és üzembe helyezés az Azure Kubernetes Service-ben az Azure Pipelines használatával
Azure DevOps Services
Az Azure Pipelines használatával automatikusan üzembe helyezheti az Azure Kubernetes Service-ben (AKS). Az Azure Pipelines lehetővé teszi a folyamatos integráció (CI) és a folyamatos teljesítés (CD) használatával történő buildelést, tesztelést és üzembe helyezést az Azure DevOps használatával.
Ebből a cikkből megtudhatja, hogyan hozhat létre olyan folyamatot, amely folyamatosan fejleszti és telepíti az alkalmazást. Minden alkalommal, amikor módosítja a kódot egy Dockerfile-t tartalmazó adattárban, a rendszer leküldi a rendszer a rendszerképeket az Azure Container Registrybe, majd a jegyzékfájlokat az AKS-fürtön helyezi üzembe.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Azure Resource Manager-szolgáltatáskapcsolat. Azure Resource Manager-szolgáltatáskapcsolat létrehozása.
- Egy GitHub-fiók. Hozzon létre egy ingyenes GitHub-fiókot, ha még nem rendelkezik ilyen fiókkal .
A kód letöltése
A mintaalkalmazást és egy Dockerfile-t tartalmazó következő adattár elágaztatása:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Azure-erőforrások létrehozása
Jelentkezzen be az Azure Portalra, majd válassza a Cloud Shell gombot a jobb felső sarokban. AKS-fürt létrehozásához használja az Azure CLI-t vagy a PowerShellt.
Container Registry létrehozása
# 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
Bejelentkezés az Azure Pipelinesba
Jelentkezzen be az Azure Pipelinesba. A bejelentkezés után a böngésző megtekinti https://dev.azure.com/my-organization-name
és megjeleníti az Azure DevOps-irányítópultot.
A kijelölt szervezeten belül hozzon létre egy projektet. Ha nem rendelkezik projekttel a szervezetében, megjelenik egy Projekt létrehozása az első lépések képernyőre. Ellenkező esetben válassza a Projekt létrehozása gombot az irányítópult jobb felső sarkában.
A folyamat létrehozása
Csatlakozás és az adattár kiválasztása
Jelentkezzen be az Azure DevOps-szervezetbe, és nyissa meg a projektet.
Lépjen a Folyamatok elemre, majd válassza az Új folyamat lehetőséget.
Végezze el a varázsló lépéseit úgy, hogy először a GitHubot választja a forráskód helyeként.
Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.
Amikor megjelenik az adattárak listája, válassza ki az adattárat.
Előfordulhat, hogy a Rendszer átirányítja a GitHubra az Azure Pipelines alkalmazás telepítéséhez. Ha igen, válassza a Jóváhagyás > telepítés lehetőséget.
Válassza az Üzembe helyezés az Azure Kubernetes Service-ben lehetőséget.
Ha a rendszer kéri, válassza ki azt az előfizetést, amelyben létrehozta a beállításjegyzéket és a fürtöt.
Válassza ki a fürtöt
myapp
.Névtér esetén válassza a Meglévő, majd az Alapértelmezett lehetőséget.
Válassza ki a tárolóregisztrációs adatbázis nevét.
A rendszerkép nevét az alapértelmezett értékre állíthatja.
Állítsa a szolgáltatásportot 8080-ra.
Állítsa be a Felülvizsgálati alkalmazás engedélyezése lekéréses kérelmekhez jelölőnégyzetet, hogy az alkalmazással kapcsolatos konfigurációt a következő lépésekben automatikusan generált YAML-folyamat tartalmazza.
Válassza az Ellenőrzés és konfigurálás lehetőséget.
Amikor az Azure Pipelines létrehozza a folyamatot, a folyamat a következő lesz:
Hozzon létre egy Docker-beállításjegyzék-kapcsolatot , amely lehetővé teszi a folyamat számára a rendszerképek leküldését a tárolóregisztrációs adatbázisba.
Hozzon létre egy környezetet és egy Kubernetes-erőforrást a környezetben. RBAC-kompatibilis fürtök esetén a létrehozott Kubernetes-erőforrás implicit módon hozza létre a ServiceAccount és a RoleBinding objektumokat a fürtben, hogy a létrehozott ServiceAccount ne hajthasson végre műveleteket a kiválasztott névtéren kívül.
Hozzon létre egy azure-pipelines.yml fájlt, amely meghatározza a folyamatot.
Kubernetes-jegyzékfájlok létrehozása. Ezek a fájlok a deployment.yml és a service.yml-sablonok hidratálásával jönnek létre az Ön által megadott beállítások alapján. Ha elkészült, válassza a Mentés és futtatás lehetőséget.
Válassza a Mentés és futtatás lehetőséget.
A véglegesítési üzenetet módosíthatja úgy, mint a Folyamat hozzáadása az adattárhoz. Ha elkészült, válassza a Mentés és futtatás lehetőséget az új folyamat adattárba való véglegesítéséhez, majd kezdje el az új folyamat első futtatását!
Az alkalmazás üzembe helyezésének megtekintése
A folyamat futása közben figyelje meg a buildelési fázist, majd az üzembe helyezési szakaszt, és lépjen a kékről (futó) a zöldre (befejezve). Kiválaszthatja a folyamat működés közbeni megtekintéséhez szükséges fázisokat és feladatokat.
Feljegyzés
Megjegyzés: Ha Microsoft által üzemeltetett ügynököt használ, hozzá kell adnia a Microsoft által üzemeltetett ügynök IP-tartományát a tűzfalhoz. A hetente közzétett JSON-fájlból lekérheti az IP-tartományok heti listáját, amely szerdánként teszünk közzé. Az új IP-tartományok a következő hétfőn lépnek életbe. További információk: Microsoft által üzemeltetett ügynökök. Az Azure DevOps-szervezetéhez szükséges IP-tartományok megkereséséhez ismerje meg, hogyan azonosíthatja a Microsoft által üzemeltetett ügynökök lehetséges IP-tartományait.
A folyamat futtatása után vizsgálja meg, hogy mi történt, majd tekintse meg az üzembe helyezett alkalmazást. A folyamat összefoglalásából:
Válassza a Környezetek lapot.
Válassza a Környezet megtekintése lehetőséget.
Válassza ki az alkalmazás példányát a telepített névtérhez. Ha az alapértelmezett értékeket használta, akkor ez a myapp alkalmazás az alapértelmezett névtérben.
Válassza a Szolgáltatások lapot.
Jelölje ki és másolja a külső IP-címet a vágólapra.
Nyisson meg egy új böngészőlapot vagy ablakot, és adja meg <a következő IP-címet>: 8080.
Ha a mintaalkalmazást készíti, akkor a Hello World megjelenik a böngészőben.
A folyamat felépítése
Amikor befejezte a beállítások kiválasztását, majd folytatta az Azure Pipelines által létrehozott folyamat ellenőrzését és konfigurálását az Üzembe helyezés az Azure Kubernetes Service-sablonnal .
A buildelési szakasz a Docker-feladat használatával hozza létre és küldi el a rendszerképet az Azure Container Registrybe.
- 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'
Az üzembe helyezési feladat a Kubernetes jegyzékfeladatával hozza létre a imagePullSecret
Kubernetes-fürtcsomópontok által az Azure Container Registry-erőforrásból való lekéréshez szükségest. A jegyzékfájlokat a Kubernetes-jegyzékfeladat ezután a Kubernetes-fürtben való üzembe helyezéshez használja. A jegyzékfájlokat a service.yml
deployment.yml
rendszer az Üzembe helyezés az Azure Kubernetes Service-sablon használatakor hozta létre.
- 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)'
Az erőforrások eltávolítása
Ha végzett a létrehozott erőforrásokkal, az alábbi paranccsal törölheti őket:
az group delete --name myapp-rg
Adja meg y
, amikor a rendszer kéri.
Azure Kubernetes Service