Sestavení a nasazení do služby Azure Kubernetes Service pomocí Azure Pipelines

Služby Azure DevOps

Azure Pipelines můžete použít k automatickému nasazení do služby Azure Kubernetes Service (AKS). Azure Pipelines umožňuje sestavovat, testovat a nasazovat s využitím kontinuální integrace (CI) a průběžného doručování (CD) pomocí Azure DevOps.

V tomto článku se dozvíte, jak vytvořit kanál, který průběžně sestavuje a nasazuje vaši aplikaci. Při každé změně kódu v úložišti, které obsahuje soubor Dockerfile, se image nasdílí do služby Azure Container Registry a manifesty se pak nasadí do clusteru AKS.

Prerequisites

Získání kódu

Vytvořte fork následujícího úložiště obsahující ukázkovou aplikaci a soubor Dockerfile:

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

Vytvoření prostředků Azure

Přihlaste se k webu Azure Portal a pak vyberte tlačítko Cloud Shell v pravém horním rohu. K vytvoření clusteru AKS použijte Azure CLI nebo PowerShell.

Vytvoření registru kontejneru

# 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

Přihlášení ke službě Azure Pipelines

Přihlaste se ke službě Azure Pipelines. Po přihlášení přejde váš prohlížeč na https://dev.azure.com/my-organization-name řídicí panel Azure DevOps a zobrazí ho.

Ve vybrané organizaci vytvořte projekt. Pokud ve vaší organizaci nemáte žádné projekty, zobrazí se obrazovka Vytvořit projekt, který vám umožní začít . V opačném případě vyberte tlačítko Vytvořit projekt v pravém horním rohu řídicího panelu.

Vytvoř potrubí

Připojení a výběr úložiště

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte do svého projektu.

  2. Přejděte na Kanály a pak vyberte Nový kanál.

  3. Kroky průvodce proveďte tak, že nejprve vyberete GitHub jako umístění zdrojového kódu.

  4. Můžete být přesměrováni na GitHub kvůli přihlášení. Pokud ano, zadejte svoje přihlašovací údaje GitHubu.

  5. Až se zobrazí seznam úložišť, vyberte úložiště.

  6. K instalaci aplikace Azure Pipelines můžete být přesměrováni na GitHub. Pokud ano, vyberte Schválit a nainstalovat.

  7. Vyberte Nasadit do služby Azure Kubernetes Service.

  8. Pokud se zobrazí výzva, vyberte předplatné, ve kterém jste vytvořili registr a cluster.

  9. Vyberte myapp cluster.

  10. Jako prostor názvů vyberte Existující a pak vyberte výchozí.

  11. Vyberte název registru kontejneru.

  12. Název image můžete nechat nastavený na výchozí.

  13. Nastavte port služby na 8080.

  14. Nastavte zaškrtávací políčko Povolit kontrolní aplikaci pro žádosti o přijetí změn pro konfiguraci související s kontrolní aplikací, která bude zahrnuta do kanálu YAML automaticky vygenerovaného v následných krocích.

  15. Vyberte Ověřit a nakonfigurovat.

    Jakmile Azure Pipelines vytvoří váš kanál, proces bude:

    • Vytvořte připojení ke službě registrování Dockeru, které vaší pipeline umožní nahrání obrazů do vašeho registru kontejnerů.

    • Vytvořte prostředí a prostředek Kubernetes v rámci prostředí. V případě clusteru s podporou RBAC vytvořený prostředek Kubernetes implicitně vytvoří objekty ServiceAccount a RoleBinding v clusteru, aby vytvořený serviceAccount nemohl provádět operace mimo zvolený obor názvů.

    • Vygenerujte soubor azure-pipelines.yml , který definuje váš kanál.

    • Generování souborů manifestu Kubernetes Tyto soubory jsou generovány hydratací deployment.yml a service.yml šablon na základě vámi provedených výběrů. Až budete připraveni, vyberte Uložit a spustit.

  16. Vyberte Uložit a spusťte.

  17. Zprávu Potvrzení můžete změnit na něco jako přidat kanál do našeho úložiště. Až budete připraveni, vyberte Uložit a spustit pro uložení nového potrubí do úložiště a pak spusťte první běh vašeho nového potrubí!

Podívejte se na nasazení aplikace

Při spuštění kanálu sledujte, jak vaše fáze sestavení a pak fáze nasazení přecházejí z modré (spuštěné) na zelenou (dokončenou). Můžete vybrat fáze a úlohy a sledovat pipeline v akci.

Note

Pokud používáte agenta hostovaného Microsoftem, musíte do brány firewall přidat rozsah IP adres agenta hostovaného Microsoftem. Získejte týdenní seznam rozsahů IP adres z týdenního souboru JSON, který se publikuje každou středu. Nové rozsahy IP adres začnou platit následující pondělí. Další informace najdete v tématu Agenti hostovaní Microsoftem. Pokud chcete zjistit rozsahy IP adres vyžadované pro vaši organizaci Azure DevOps, zjistěte, jak identifikovat možné rozsahy IP adres pro agenty hostované Microsoftem.

Po dokončení spuštění kanálu prozkoumejte, co se událo, a pak se podívejte na vaši aplikaci, jak je nasazená. Ze souhrnu kanálu:

  1. Vyberte kartu Prostředí.

  2. Vyberte Zobrazit prostředí.

  3. Vyberte instanci aplikace pro obor názvů, do kterého jste nasadili. Pokud jste použili výchozí hodnoty, pak se jedná o aplikaci myapp ve výchozím oboru názvů.

  4. Vyberte kartu Služby .

  5. Vyberte a zkopírujte externí IP adresu do schránky.

  6. Otevřete novou kartu nebo okno prohlížeče a zadejte <IP adresu>:8080.

Pokud vytváříte naši ukázkovou aplikaci, zobrazí se v prohlížeči Hello World .

Jak se sestavuje pipeline

Po dokončení výběru možností a následném postupu k ověřování a konfiguraci, Azure Pipelines pro vás vytvořil kanál pomocí šablony Nasazení do služby Azure Kubernetes Service.

Fáze sestavení používá úlohu Dockeru k sestavení a nasdílení image do služby 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'

Úloha nasazení používá úlohu manifestu Kubernetes k vytvoření imagePullSecret potřebných prostředků pro uzly clusteru Kubernetes, aby mohly stahovat z prostředku Azure Container Registry. Soubory manifestu jsou poté používány úlohou zpracování manifestů Kubernetes k nasazení do clusteru Kubernetes. Soubory manifestu service.yml a deployment.ymlpři použití šablony Deploy to Azure Kubernetes Service se vygenerovaly.

- 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)'

Vyčistěte zdroje

Kdykoli budete hotovi s prostředky, které jste vytvořili, můžete je odstranit pomocí následujícího příkazu:

az group delete --name myapp-rg

Po zobrazení výzvy zadejte y .