Buildelés és üzembe helyezés Azure Kubernetes Service az Azure Pipelines használatával

Azure DevOps Services

Az Azure Pipelines használatával automatikusan üzembe helyezheti a Azure Kubernetes Service (AKS) szolgáltatásban. Az Azure Pipelines lehetővé teszi folyamatos integráció (CI) és 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 buildeli és telepíti az alkalmazást. Minden alkalommal, amikor módosítja a kódot egy Docker-fájlt tartalmazó adattárban, a rendszer leküldi a rendszerképeket a Azure Container Registry, és a jegyzékfájlokat ezután telepíti az AKS-fürtre.

Előfeltételek

A kód letöltése

Elágaztathatja a következő adattárat, amely egy mintaalkalmazást és egy Dockerfile-t tartalmaz:

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Azure-erőforrások létrehozása

Jelentkezzen be a Azure Portal, majd kattintson a jobb felső sarokban található Cloud Shell gombra.

Tárolóregisztrációs adatbázis 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 kiválasztott szervezeten belül hozzon létre egy projektet. Ha nem rendelkezik projektekkel a szervezetében, megjelenik a Projekt létrehozása az első lépésekhez képernyő. 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

  1. Jelentkezzen be az Azure DevOps-szervezetbe, és nyissa meg a projektet.

  2. Lépjen a Folyamatok elemre, majd válassza az Új folyamat lehetőséget.

  3. A varázsló lépéseit úgy hajthatja végre, hogy először kiválasztja a GitHubot a forráskód helyeként.

  4. Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.

  5. Amikor megjelenik az adattárak listája, válassza ki az adattárat.

  6. Előfordulhat, hogy a rendszer átirányítja a GitHubra az Azure Pipelines alkalmazás telepítéséhez. Ha igen, válassza a Telepítés jóváhagyása &lehetőséget.

  7. Válassza az Üzembe helyezés Azure Kubernetes Service lehetőséget.

  8. 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.

  9. Válassza ki a fürtöt myapp .

  10. A Névtér mezőben válassza a Meglévő, majd az Alapértelmezett lehetőséget.

  11. Válassza ki a tárolóregisztrációs adatbázis nevét.

  12. A rendszerkép nevét az alapértelmezett értékre állíthatja.

  13. Állítsa a szolgáltatásportot 8080-ra.

  14. Állítsa be az Alkalmazás áttekintése lekéréses kérelmekhez jelölőnégyzetet, hogy az alkalmazáshoz kapcsolódó konfigurációt a következő lépésekben automatikusan generált YAML-folyamat tartalmazza.

  15. 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-szolgáltatáskapcsolatot , amely lehetővé teszi, hogy a folyamat leküldje a rendszerképeket 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 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.

  16. Kattintson a Mentés és futtatás elemre.

  17. A véglegesítési üzenetet a Folyamat hozzáadása az adattárhoz hasonlóra módosíthatja. 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 fázist, a kék (futó) és a zöld (befejezett) állapotot. Kiválaszthatja a fázisokat és feladatokat, hogy működés közben figyelje a folyamatot.

Megjegyzés

Ha Microsoft ü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. Az új IP-tartományok a következő hétfőn lépnek hatályba. További információ: Microsoft által üzemeltetett ügynökök. Az Azure DevOps-szervezet számára szükséges IP-tartományok megkereséséhez megtudhatja, hogyan azonosíthatja 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:

  1. Válassza a Környezetek lapot.

  2. Válassza a Környezet megtekintése lehetőséget.

  3. Válassza ki az alkalmazás példányát ahhoz a névtérhez, amelybe telepítette. Ha a fent említett alapértelmezett értékekhez ragaszkodik, akkor az lesz a myapp alkalmazás az alapértelmezett névtérben.

  4. Válassza a Szolgáltatások lapot.

  5. Jelölje ki a külső IP-címet, és másolja a vágólapra.

  6. Nyisson meg egy új böngészőlapot vagy ablakot, és adja meg <az IP-címet>:8080.

Ha mintaalkalmazást készít, akkor a Hello world megjelenik a böngészőben.

A folyamat felépítése

Miután kiválasztotta a beállításokat, majd továbblépt az Azure Pipelines által létrehozott folyamat ellenőrzésére és konfigurálására, az Üzembe helyezés Azure Kubernetes Service sablonnal.

A buildelési szakasz a Docker-feladat használatával hozza létre és küldje le a rendszerképet a Azure Container Registry.

- 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 ezután a Kubernetes-jegyzékfeladat használja a Kubernetes-fürtön való üzembe helyezéshez.

- 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, a következő paranccsal törölheti őket:

az group delete --name myapp-rg

Amikor a rendszer kéri, írja be y a következőt: .

Azure DevOps Services-| Azure DevOps Server 2020-| 2019. Azure DevOps Server

Az Azure Pipelines használatával automatikusan üzembe helyezheti a Azure Kubernetes Service (AKS) szolgáltatásban. Az Azure Pipelines lehetővé teszi folyamatos integráció (CI) és 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 buildeli és telepíti az alkalmazást. Minden alkalommal, amikor módosítja a kódot egy Docker-fájlt tartalmazó adattárban, a rendszer leküldi a rendszerképeket a Azure Container Registry, és a jegyzékfájlokat ezután telepíti az AKS-fürtre.

Előfeltételek

A kód letöltése

Elágaztathatja a következő adattárat, amely egy mintaalkalmazást és egy Dockerfile-t tartalmaz:

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Azure-erőforrások létrehozása

Jelentkezzen be a Azure Portal, majd kattintson a jobb felső sarokban található Cloud Shell gombra.

Tárolóregisztrációs adatbázis 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 

A hitelesítés konfigurálása

Ha Azure Container Registry (ACR) Azure Kubernetes Service (AKS) használatával használja, létre kell hoznia egy hitelesítési mechanizmust. Ez kétféleképpen érhető el:

  1. AKS-hozzáférés biztosítása az ACR-hez. Lásd: Hitelesítés Azure Container Registry a Azure Kubernetes Service-ból.

  2. Kubernetes-rendszerkép lekérési titkos kód használata. A rendszerkép lekérési titkos kódja a Kubernetes üzembehelyezési feladatával hozható létre.

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 Registry. 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ürtön.

  1. Az Azure Pipelinesban nyissa meg a build összegzését.

  2. A build összegzésében válassza a Kiadás ikont egy új kiadási folyamat elindításához.

    Ha korábban már létrehozott egy kiadási folyamatot, amely ezeket a buildösszetevőket használja, a rendszer kérni fogja, hogy hozzon létre helyette egy új kiadást. Ebben az esetben lépjen a Kiadások oldalra, és az ikon kiválasztásával indítsa el az új kiadási + folyamatot.

  3. Válassza az Üres feladat sablont.

  4. Nyissa meg a Feladatok lapot, és válassza az Ügynökfeladat lehetőséget.

  5. Válasszon új + feladatot, és adjon hozzá egy Helm-eszköz telepítőfeladatot . Ez biztosítja, hogy a következő feladatokat futtató ügynökre telepítve legyen a Helm és a Kubectl.

  6. Válassza újra az elemet + , és adjon hozzá egy Csomag és üzembe helyezés Helm-diagramok feladatot. Konfigurálja a feladat beállításait az alábbiak szerint:

    • Kapcsolat típusa: Válassza az Azure Resource Manager lehetőséget 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áskapcsolat lehetőséget. Ebben az esetben a következő beállításhoz létre kell hoznia és ki kell választania egy Kubernetes-szolgáltatáskapcsolatot 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 a bemenet mellett megjelenik egy Engedélyezés gomb, 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, tekintse meg az Azure-szolgáltatáskapcsolat létrehozása a kapcsolat manuális beállításához 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. Ezzel telepíti a Tillert a futó Kubernetes-fürtre. Emellett beállítja a szükséges helyi konfigurációt is. Tick A Canary rendszerkép verziójának használata a Tiller legújabb előzetes verziójának telepítéséhez. Ha előre telepítve van, a Tiller frissítése jelölőnégyzet bejelölésével is frissítheti a Tillert. Ha ezek a beállítások engedélyezve vannak, a feladat lefut helm init --canary-image --upgrade

  7. Válassza + ki az Ügynök feladatot , és adjon hozzá egy másik Csomag és üzembe helyezés Helm-diagramok feladatot. 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 adhatja meg a parancsbeállításokat. A frissítés kiválasztásakor a tevékenység további mezőket jelenít meg:

      • Diagramtípus: Válassza a Fájl elérési útja lehetőséget. 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ása helm 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 fájlválasztóval, vagy írja be a következőt: $(System.DefaultWorkingDirectory)/**/*.tgz

      • Kiadás neve: Adja meg a kiadás nevét; például: azuredevops

      • Podok újbóli létrehozása: Jelölje be ezt a jelölőnégyzetet, ha a kiadás során konfigurációmódosítá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 frissíteni és vissza szeretné állítani az erőforrás törlését, újbóli létrehozását és a teljes kiadás újratelepítését. 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 azok értékeit; ebben a példában--set image.repository=$(imageRepoName) --set image.tag=$(Build.BuildId) Ez a szakasz ismerteti, 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ő és a Tiller- és Helm-ügyfél tanúsítványainak kiállításához használt hitelesítésszolgáltatói tanúsítványt.

      • Tanúsítvány: Adja meg a Tiller-tanúsítványt vagy a Helm-ügyféltanúsítványt

      • Kulcs: Adja meg a Tiller- vagy Helm-ügyfélkulcsot

  8. A folyamat Változók lapján adjon hozzá egy imageRepoName nevű változót, és állítsa az értéket a Helm-lemezképtár nevére. Ez általában a következő formátumban van: example.azurecr.io/coderepository

  9. Mentse a kiadási folyamatot.

A Helm-frissítési feladatban használt argumentumok

A buildelési folyamatban a tárolórendszerkép címkével van elcímkézve$(Build.BuildId), és ez egy Azure Container Registry lesz leküldve. 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 megadhatja, vagy felül lehet bírálni egy felhasználó által megadott értékfájllal, amelyet a paraméterek felül is bírálhatnak --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éke $(imageRepoName) a Változók lapon (vagy a YAML-fájl változók szakaszában) lett megadva. Másik lehetőségként közvetlenül lecserélheti a képtár nevére az argumentumértékben vagy a --setvalues.yaml fájlban. Például:

  image:
    repository: VALUE_TO_BE_OVERRIDDEN
    tag: latest

Másik lehetőségként állítsa be a feladat Értékbeállítás beállítását úgy, hogy az argumentumértékeket vesszővel elválasztott kulcs-érték párokként adja meg.

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:

  1. Válassza a + Kiadás lehetőséget, majd a Kiadás létrehozása lehetőséget.

  2. Az Új kiadás létrehozása panelen ellenőrizze, hogy a használni kívánt összetevő-verzió van-e kiválasztva, és válassza a Létrehozás lehetőséget.

  3. Válassza ki a kiadási hivatkozást az információs sáv üzenetében. Például: " Release Release-1 létrejött".

  4. A folyamatnézetben válassza az állapothivatkozást a folyamat szakaszaiban a naplók és az ügynök kimenetének megtekintéséhez.