Nasazení do Azure Container Apps ze služby Azure Pipelines

Azure Container Apps umožňuje používat Azure Pipelines k publikování revizí do vaší aplikace kontejneru. Při odesílání potvrzení do úložiště Azure DevOps se aktivuje kanál, který aktualizuje image kontejneru v registru kontejneru. Azure Container Apps vytvoří novou revizi na základě aktualizované image kontejneru.

Kanál se aktivuje potvrzením do konkrétní větve ve vašem úložišti. Při vytváření kanálu se rozhodnete, která větev je triggerem.

Úloha Container Apps Azure Pipelines

Úloha podporuje následující scénáře:

  • Sestavení ze souboru Dockerfile a nasazení do kontejnerových aplikací
  • Sestavte ze zdrojového kódu bez souboru Dockerfile a nasaďte je do Container Apps. Mezi podporované jazyky patří .NET, Java, Node.js, PHP a Python.
  • Nasazení existující image kontejneru do Container Apps

S produkční verzí se tato úloha dodává s Azure DevOps a už nevyžaduje explicitní instalaci. Kompletní dokumentaci najdete v tématu AzureContainerApps@1 – úloha Nasazení služby Azure Container Apps v1.

Příklady použití

Tady jsou některé běžné scénáře použití úlohy. Další informace najdete v dokumentaci k úkolu.

Sestavení a nasazení do kontejnerových aplikací

Následující fragment kódu ukazuje, jak sestavit image kontejneru ze zdrojového kódu a nasadit ji do Container Apps.

steps:
- task: AzureContainerApps@1
  inputs:
    appSourcePath: '$(Build.SourcesDirectory)/src'
    azureSubscription: 'my-subscription-service-connection'
    acrName: 'myregistry'
    containerAppName: 'my-container-app'
    resourceGroup: 'my-container-app-rg'

Úloha používá k sestavení image kontejneru soubor Dockerfile appSourcePath . Pokud se nenajde žádný soubor Dockerfile, úloha se pokusí sestavit image kontejneru ze zdrojového kódu v appSourcePathsouboru .

Nasazení existující image kontejneru do Container Apps

Následující fragment kódu ukazuje, jak nasadit existující image kontejneru do Container Apps. Úloha se ověřuje v registru pomocí připojení služby. Pokud identita připojení služby není přiřazená AcrPush roli registru, zadejte přihlašovací údaje správce registru pomocí acrUsername parametrů a acrPassword vstupních parametrů.

steps:
  - task: AzureContainerApps@1
    inputs:
      azureSubscription: 'my-subscription-service-connection'
      containerAppName: 'my-container-app'
      resourceGroup: 'my-container-app-rg'
      imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'

Důležité

Pokud vytváříte image kontejneru v samostatném kroku, ujistěte se, že používáte jedinečnou značku, například ID sestavení, místo stabilní značky, jako latestje . Další informace najdete v tématu Osvědčené postupy pro značky obrázků.

Ověřování pomocí služby Azure Container Registry

Úloha Azure Container Apps se musí ověřit ve službě Azure Container Registry, aby se odeslala image kontejneru. Aplikace kontejneru se také musí ověřit ve službě Azure Container Registry, aby si stáhla image kontejneru.

Pokud chcete nasdílit image, úloha se automaticky ověří v registru kontejneru zadaném pomocí acrName připojení služby poskytovaného v azureSubscription. Pokud identita připojení služby není přiřazena AcrPush k roli registru, zadejte přihlašovací údaje správce registru pomocí acrUsername a acrPassword.

K vyžádání imagí používá Služba Azure Container Apps k ověření ve službě Azure Container Registry spravovanou identitu (doporučeno) nebo přihlašovací údaje správce. Pokud chcete použít spravovanou identitu, musí být cílová aplikace kontejneru pro úlohu nakonfigurovaná tak, aby používala spravovanou identitu. Pokud se chcete ověřit pomocí přihlašovacích údajů správce registru, nastavte acrUsername jeho a acrPassword vstupy.

Konfigurace

Pomocí následujících kroků nakonfigurujte kanál Azure DevOps pro nasazení do Azure Container Apps.

  • Vytvoření úložiště Azure DevOps pro vaši aplikaci
  • Vytvoření aplikace kontejneru s povolenou spravovanou identitou
  • AcrPull Přiřazení role služby Azure Container Registry ke spravované identitě aplikace kontejneru
  • Instalace úlohy Azure Container Apps z Azure DevOps Marketplace
  • Konfigurace připojení služby Azure DevOps pro vaše předplatné Azure
  • Vytvoření kanálu Azure DevOps

Požadavky

Požadavek Pokyny
Účet Azure Pokud ho nemáte, vytvořte si účet zdarma. K pokračování potřebujete oprávnění přispěvatele nebo vlastníka předplatného Azure. Podrobnosti najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal .
Projekt Azure Devops Přejděte do Azure DevOps a vyberte Začít zdarma. Pak vytvořte nový projekt.
Azure CLI Nainstalujte rozhraní příkazového řádku Azure CLI.

Vytvoření úložiště Azure DevOps a naklonování zdrojového kódu

Před vytvořením kanálu musí být zdrojový kód vaší aplikace v úložišti.

  1. Přihlaste se k Azure DevOps a přejděte ke svému projektu.

  2. Otevřete stránku Úložiště.

  3. V horním navigačním panelu vyberte rozevírací seznam úložišť a vyberte Importovat úložiště.

  4. Zadejte následující informace a vyberte Importovat:

    Pole Hodnota
    Typ úložiště Git
    Adresa URL klonování https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
    Název my-container-app
  5. Výběrem možnosti Clone (Klonovat ) zobrazte adresu URL úložiště a zkopírujte ji.

  6. Otevřete terminál a spuštěním následujícího příkazu naklonujte úložiště:

    git clone <REPOSITORY_URL> my-container-app
    

    Nahraďte <REPOSITORY_URL> zkopírovanou adresou URL.

Vytvoření aplikace kontejneru a konfigurace spravované identity

Pomocí následujícího postupu vytvořte aplikaci kontejneru az containerapp up . Tento příkaz vytvoří prostředky Azure, sestaví image kontejneru, uloží image do registru a nasadí do aplikace kontejneru.

Po vytvoření aplikace můžete do aplikace přidat spravovanou identitu a přiřadit ji, AcrPull aby identita mohla načítat image z registru.

  1. Přejděte do složky src klonovaného úložiště.

    cd my-container-app
    cd src
    
  2. Vytvořte prostředky Azure a pomocí příkazu nasaďte aplikaci kontejneru.az containerapp up

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Ve výstupu příkazu si poznamenejte název služby Azure Container Registry.

  4. Získejte úplné ID prostředku registru kontejneru.

    az acr show --name <ACR_NAME> --query id --output tsv
    

    <ACR_NAME> nahraďte názvem vašeho registru.

  5. Povolte spravovanou identitu pro aplikaci kontejneru.

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned \
      --output tsv
    

    Poznamenejte si ID objektu zabezpečení spravované identity ve výstupu příkazu.

  6. AcrPull Přiřaďte roli služby Azure Container Registry spravované identitě aplikace kontejneru.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    Nahraďte <MANAGED_IDENTITY_PRINCIPAL_ID> ID objektu zabezpečení spravované identity a <ACR_RESOURCE_ID> ID prostředku služby Azure Container Registry.

  7. Nakonfigurujte aplikaci kontejneru tak, aby používala spravovanou identitu k načtení imagí ze služby Azure Container Registry.

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    Nahraďte <ACR_NAME> názvem služby Azure Container Registry.

Vytvoření připojení služby Azure DevOps

Pokud chcete službu Azure Container Apps nasadit, musíte pro své předplatné Azure vytvořit připojení služby Azure DevOps.

  1. V Azure DevOps vyberte Nastavení projektu.

  2. Vyberte Připojení služeb.

  3. Vyberte Nové připojení služby.

  4. Vyberte Azure Resource Manager.

  5. Vyberte Instanční objekt (automatický) a vyberte Další.

  6. Zadejte následující informace a vyberte Uložit:

    Pole Hodnota
    Předplatné Vyberte své předplatné Azure.
    Skupina prostředků Vyberte skupinu prostředků (my-container-app-rg), která obsahuje vaši aplikaci kontejneru a registr kontejneru.
    Název připojení služby my-subscription-service-connection

Další informace o připojeních služeb najdete v tématu Připojení k Microsoft Azure.

Vytvoření kanálu YAML Azure DevOps

  1. V projektu Azure DevOps vyberte Kanály.

  2. Vyberte New pipeline (Nový kanál).

  3. Vyberte Git Azure Repos.

  4. Vyberte úložiště, které obsahuje váš zdrojový kód (my-container-app).

  5. Vyberte počáteční kanál.

  6. V editoru nahraďte obsah souboru následujícím YAML:

    trigger:
      branches:
        include:
          - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
      - task: AzureContainerApps@1
        inputs:
          appSourcePath: '$(Build.SourcesDirectory)/src'
          azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>'
          acrName: '<ACR_NAME>'
          containerAppName: 'my-container-app'
          resourceGroup: 'my-container-app-rg'
    

    Nahraďte <AZURE_SUBSCRIPTION_SERVICE_CONNECTION> názvem připojení služby Azure DevOps (my-subscription-service-connection), které jste vytvořili v předchozím kroku, a <ACR_NAME> názvem služby Azure Container Registry.

  7. Zvolte Uložit a Spustit.

Spustí se spuštění azure Pipelines, které spustí sestavení a nasazení aplikace kontejneru. Pokud chcete zkontrolovat jeho průběh, přejděte na Kanály a vyberte spuštění. Během prvního spuštění kanálu se může zobrazit výzva k autorizaci kanálu pro použití připojení ke službě.

Pokud chcete nasadit novou revizi aplikace, nasdílejte do hlavní větve nové potvrzení.