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@0
displayName: Create imagePullSecret
inputs:
action: createSecret
secretName: $(imagePullSecret)
namespace: $(k8sNamespace)
dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
namespace: $(k8sNamespace)
manifests: |
$(System.ArtifactsDirectory)/manifests/deployment.yml
$(System.ArtifactsDirectory)/manifests/service.yml
imagePullSecrets: |
$(imagePullSecret)
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
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 DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
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
Hitelesítés konfigurálása
Ha az Azure Container Registryt (ACR) az Azure Kubernetes Service-szel (AKS) használja, létre kell hoznia egy hitelesítési mechanizmust. Ez kétféleképpen érhető el:
AKS-hozzáférés biztosítása az ACR-hez. Lásd: Hitelesítés az Azure Container Registryvel az Azure Kubernetes Service-ből.
Kubernetes-rendszerkép lekérési titkos kód használata. A rendszerkép lekéréses titkos kódjának létrehozása a Kubernetes üzembe helyezési feladatával végezhető el.
Kiadási folyamat létrehozása
A CI beállításához használt buildelési folyamat már létrehozott egy Docker-rendszerképet, és leküldte egy Azure Container Registrybe. Emellett egy Helm-diagramot is csomagolt és tett közzé összetevőként. A kiadási folyamatban a tárolórendszerképet Helm-alkalmazásként fogjuk üzembe helyezni az AKS-fürtben.
Az Azure Pipelinesban nyissa meg a build összegzését.
A build összegzésében válassza a Kiadás ikont egy új kiadási folyamat elindításához.
Ha korábban létrehozott egy kiadási folyamatot, amely ezeket a buildösszetevőket használja, a rendszer egy új kiadás létrehozását kéri. Ebben az esetben lépjen a Kiadások lapra, és az ikon kiválasztásával kezdjen el egy új kiadási + folyamatot.
Válassza az Üres feladat sablont.
Nyissa meg a Feladatok lapot, és válassza az Ügynök feladatot.
Válasszon egy + új feladatot, és vegyen fel egy Helm-eszköz telepítőfeladatot. Ez biztosítja, hogy a következő feladatokat futtató ügynök telepítve legyen a Helm és a Kubectl használatával.
Válasszon + újra, és vegyen fel egy Csomag és a Helm-diagramok üzembe helyezését . Konfigurálja a feladat beállításait az alábbiak szerint:
Kapcsolat típusa: Válassza az Azure Resource Managert az AKS-fürthöz való csatlakozáshoz egy Azure-szolgáltatáskapcsolat használatával. Ha bármely Kubernetes-fürthöz kubeconfig vagy szolgáltatásfiók használatával szeretne csatlakozni, válassza a Kubernetes szolgáltatáskapcsolatot. Ebben az esetben a következő beállításhoz létre kell hoznia és ki kell választania egy Kubernetes-szolgáltatáskapcsolatot az Azure-előfizetés helyett.
Azure-előfizetés: Válasszon ki egy kapcsolatot az Elérhető Azure-szolgáltatáskapcsolatok listából, vagy hozzon létre egy korlátozottabb engedélykapcsolatot az Azure-előfizetéshez. Ha megjelenik egy Engedélyezés gomb a bemenet mellett, azzal engedélyezheti az Azure-előfizetéshez való csatlakozást. Ha nem látja a szükséges Azure-előfizetést az előfizetések listájában, a kapcsolat manuális beállításához tekintse meg az Azure-szolgáltatáskapcsolat létrehozása című témakört.
Erőforráscsoport: Adja meg vagy válassza ki az AKS-fürtöt tartalmazó erőforráscsoportot.
Kubernetes-fürt: Adja meg vagy válassza ki a létrehozott AKS-fürtöt.
Parancs: Válassza az init elemet Helm-parancsként. Ez telepíti a Tillert a futó Kubernetes-fürtre. Emellett beállítja a szükséges helyi konfigurációt is. Tick Use canary image version to install the latest prerelease version of Tiller. Dönthet úgy is, hogy frissíti a Tillert, ha az előre telepítve van a Tiller frissítése jelölőnégyzet bejelölésével. Ha ezek a beállítások engedélyezve vannak, a feladat fut
helm init --canary-image --upgrade
Válassza + ki az ügynökfeladatot , és vegyen fel egy másik csomagcsomagot, és helyezze üzembe a Helm-diagramokat . Konfigurálja a feladat beállításait az alábbiak szerint:
Kubernetes-fürt: Adja meg vagy válassza ki a létrehozott AKS-fürtöt.
Névtér: Adja meg a Kubernetes-fürt névterét, ahol telepíteni szeretné az alkalmazást. A Kubernetes több, ugyanazon fizikai fürt által támogatott virtuális fürtöt támogat. Ezeket a virtuális fürtöket névtereknek nevezzük. A névterek használatával különböző környezeteket hozhat létre, például fejlesztést, tesztelést és előkészítést ugyanabban a fürtben.
Parancs: Válassza a Frissítés lehetőséget Helm-parancsként. Ezzel a feladattal bármelyik Helm-parancsot futtathatja, és argumentumként adhat meg parancsbeállításokat. A frissítés kiválasztásakor a tevékenység további mezőket jelenít meg:
Diagram típusa: Válassza ki a fájl elérési útját. Másik lehetőségként megadhatja a diagram nevét , ha URL-címet vagy diagramnevet szeretne megadni. Ha például a diagram neve,
stable/mysql
a feladat végrehajtásahelm upgrade stable/mysql
Diagram elérési útja: Ez lehet egy csomagolt diagram elérési útja, vagy egy kicsomagolt diagramkönyvtár elérési útja. Ebben a példában egy CI-build használatával teszi közzé a diagramot, ezért válassza ki a fájlcsomagot a fájlválasztóval, vagy írja be a
$(System.DefaultWorkingDirectory)/**/*.tgz
Kiadás neve: Adja meg a kiadás nevét, például:
azuredevops
Podok ismételt létrehozása: Jelölje be ezt a jelölőnégyzetet, ha a kiadás során konfigurációváltozás történt, és egy futó podot szeretne lecserélni az új konfigurációra.
Értékek alaphelyzetbe állítása: Jelölje be ezt a jelölőnégyzetet, ha azt szeretné, hogy a diagramba beépített értékek felülbírálják a tevékenység által biztosított összes értéket.
Kényszerítés: Jelölje be ezt a jelölőnégyzetet, ha ütközések esetén törölni szeretné a frissítést és a visszaállítást, újra létrehozza az erőforrást, és újratelepíti a teljes kiadást. Ez olyan esetekben hasznos, amikor a javítások alkalmazása meghiúsulhat (például szolgáltatások esetében, mert a fürt IP-címe nem módosítható).
Argumentumok: Adja meg a Helm-parancs argumentumait és értékeit; ebben a példában
--set image.repository=$(imageRepoName) --set image.tag=$(Build.BuildId)
Ebből a szakaszból megtudhatja, hogy miért használjuk ezeket az argumentumokat.TLS engedélyezése: Jelölje be ezt a jelölőnégyzetet a Helm és a Tiller közötti erős TLS-alapú kapcsolatok engedélyezéséhez.
CA-tanúsítvány: Adjon meg egy feltöltendő hitelesítésszolgáltatói tanúsítványt, amely a Tiller- és Helm-ügyfél tanúsítványainak kiállításához használható.
Tanúsítvány: A Tiller- vagy Helm-ügyféltanúsítvány megadása
Kulcs: A Tiller- vagy Helm-ügyfélkulcs megadása
A folyamat Változók lapján adjon hozzá egy imageRepoName nevű változót, és állítsa be az értéket a Helm-lemezképtár nevére. Ez általában a következő formátumban van:
example.azurecr.io/coderepository
Mentse a kiadási folyamatot.
A Helm-frissítési feladatban használt argumentumok
A buildelési folyamatban a tároló lemezképe fel van címkézve $(Build.BuildId)
, és a rendszer leküldi egy Azure Container Registrybe.
A Helm-diagramokban paraméterezheti a tárolórendszerkép részleteit, például a nevet és a címkét, mivel ugyanaz a diagram használható különböző környezetekben való üzembe helyezéshez.
Ezeket az értékeket a values.yaml fájlban is meg lehet adni, vagy felül lehet bírálni egy felhasználó által megadott értékfájllal, amelyet a paraméterek felülírhatnak --set
a Helm telepítése vagy frissítése során.
Ebben a példában a következő argumentumokat adjuk át:
--set image.repository=$(imageRepoName) --set image.tag=$(Build.BuildId)
Az érték $(imageRepoName)
a Változók lapon (vagy a YAML-fájl változók szakaszában) lett beállítva.
Másik lehetőségként közvetlenül lecserélheti a képtárház nevére az argumentumértékben vagy a --set
values.yaml fájlban.
Példa:
image:
repository: VALUE_TO_BE_OVERRIDDEN
tag: latest
Egy másik lehetőség, ha a feladat Értékbeállítás beállításával vesszővel tagolt kulcs-érték párként adja meg az argumentumértékeket.
Kiadás létrehozása az alkalmazás üzembe helyezéséhez
Most már készen áll egy kiadás létrehozására, ami azt jelenti, hogy elindítja a kiadási folyamat futtatását egy adott build által létrehozott összetevőkkel. Ez a build üzembe helyezését eredményezi:
Válassza a + Kiadás lehetőséget, és válassza a Kiadás létrehozása lehetőséget.
Az Új kiadás létrehozása panelen ellenőrizze, hogy a használni kívánt összetevő verziója ki van-e jelölve, és válassza a Létrehozás lehetőséget.
Válassza ki a kiadási hivatkozást az információs sáv üzenetében. Például: "A Release-1 kiadás létrejött".
A folyamat nézetben válassza a folyamat szakaszaiban található állapothivatkozást a naplók és az ügynök kimenetének megtekintéséhez.
Azure Kubernetes Service