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