Megosztás a következőn keresztül:


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

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

  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. Végezze el a varázsló lépéseit úgy, hogy először a GitHubot választja 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 Jóváhagyás > telepítés lehetőséget.

  7. Válassza az Üzembe helyezés az Azure Kubernetes Service-ben 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. Névtér esetén 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 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.

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

  16. Válassza a Mentés és futtatás lehetőséget.

  17. 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:

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

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

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

  6. 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.ymlrendszer 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

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:

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

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

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

  3. Válassza az Üres feladat sablont.

  4. Nyissa meg a Feladatok lapot, és válassza az Ügynök feladatot.

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

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

  7. 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/mysqla 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 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

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

  9. 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:

  1. Válassza a + Kiadás lehetőséget, és válassza 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ója ki van-e jelölve, é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: "A Release-1 kiadás létrejött".

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