Delen via


Azure Container Apps implementeren vanuit Azure-pipelines

Met Azure Container Apps kunt u Azure Pipelines gebruiken om revisies naar uw container-app te publiceren. Wanneer doorvoeringen naar uw Azure DevOps-opslagplaats worden gepusht, wordt er een pijplijn geactiveerd waarmee de containerinstallatiekopieën in het containerregister worden bijgewerkt. Azure Container Apps maakt een nieuwe revisie op basis van de bijgewerkte containerinstallatiekopieën.

Doorvoeringen naar een specifieke vertakking in uw opslagplaats activeren de pijplijn. Wanneer u de pijplijn maakt, bepaalt u welke vertakking de trigger is.

Azure Pipelines-taak voor Container Apps

De taak ondersteunt de volgende scenario's:

  • Bouwen vanuit een Dockerfile en implementeren in Container Apps
  • Build from source code without a Dockerfile and deploy to Container Apps. Ondersteunde talen zijn .NET, Java, Node.js, PHP en Python
  • Een bestaande containerinstallatiekopieën implementeren in Container Apps

Met de productierelease wordt deze taak geleverd bij Azure DevOps en is geen expliciete installatie meer vereist. Zie AzureContainerApps@1 - Azure Container Apps Deploy v1-taak voor de volledige documentatie.

Voorbeelden van gebruik

Hier volgen enkele veelvoorkomende scenario's voor het gebruik van de taak. Zie de documentatie van de taak voor meer informatie.

Bouwen en implementeren in Container Apps

In het volgende codefragment ziet u hoe u een containerinstallatiekopieën bouwt op basis van broncode en implementeert in 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'

De taak maakt gebruik van het Dockerfile om appSourcePath de containerinstallatiekopieën te bouwen. Als er geen Dockerfile wordt gevonden, probeert de taak de containerinstallatiekopieën te bouwen vanuit de broncode in appSourcePath.

Een bestaande containerinstallatiekopieën implementeren in Container Apps

In het volgende fragment ziet u hoe u een bestaande containerinstallatiekopieën implementeert in Container Apps. De taak wordt geverifieerd met het register met behulp van de serviceverbinding. Als de identiteit van de serviceverbinding niet is toegewezen aan de AcrPush rol voor het register, geeft u de beheerdersreferenties van het register op met behulp van de acrUsername en acrPassword invoerparameters van het register.

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

Belangrijk

Als u een containerinstallatiekopieën in een afzonderlijke stap bouwt, moet u ervoor zorgen dat u een unieke tag zoals de build-id gebruikt in plaats van een stabiele tag, zoals latest. Zie Best practices voor afbeeldingstags voor meer informatie.

Verifiëren met Azure Container Registry

De Azure Container Apps-taak moet worden geverifieerd met uw Azure Container Registry om de containerinstallatiekopieën te pushen. De container-app moet ook worden geverifieerd met uw Azure Container Registry om de containerinstallatiekopie op te halen.

Als u installatiekopieën wilt pushen, wordt de taak automatisch geverifieerd met het containerregister dat is opgegeven met acrName behulp van de serviceverbinding die is opgegeven in azureSubscription. Als de identiteit van de serviceverbinding niet is toegewezen aan de AcrPush rol voor het register, geeft u de beheerdersreferenties van het register op met enacrPasswordacrUsername.

Voor het ophalen van installatiekopieën gebruikt Azure Container Apps beheerde identiteiten (aanbevolen) of beheerdersreferenties voor verificatie met Azure Container Registry. Als u een beheerde identiteit wilt gebruiken, moet de doelcontainer-app voor de taak zijn geconfigureerd voor het gebruik van een beheerde identiteit. Als u wilt verifiëren met de beheerdersreferenties van het register, stelt u de taak acrUsername en acrPassword invoer in.

Configuratie

Voer de volgende stappen uit om een Azure DevOps-pijplijn te configureren voor implementatie in Azure Container Apps.

  • Een Azure DevOps-opslagplaats voor uw app maken
  • Een container-app maken waarvoor beheerde identiteit is ingeschakeld
  • AcrPull De rol voor Azure Container Registry toewijzen aan de beheerde identiteit van de container-app
  • De Azure Container Apps-taak installeren vanuit Azure DevOps Marketplace
  • Een Azure DevOps-serviceverbinding configureren voor uw Azure-abonnement
  • Een Azure DevOps-pijplijn maken

Vereisten

Vereiste Instructies
Azure-account Als u nog geen account hebt, maakt u gratis een account. U hebt de machtiging Inzender of Eigenaar voor het Azure-abonnement nodig om door te gaan. Raadpleeg Azure-rollen toewijzen met behulp van Azure Portal voor meer informatie.
Azure DevOps-project Ga naar Azure DevOps en selecteer Gratis starten. Maak vervolgens een nieuw project.
Azure-CLI Installeer de Azure CLI.

Een Azure DevOps-opslagplaats maken en de broncode klonen

Voordat u een pijplijn maakt, moet de broncode voor uw app zich in een opslagplaats bevindt.

  1. Meld u aan bij Azure DevOps en navigeer naar uw project.

  2. Open de pagina Opslagplaatsen .

  3. Selecteer in de bovenste navigatiebalk de vervolgkeuzelijst opslagplaatsen en selecteer Opslagplaats importeren.

  4. Voer de volgende gegevens in en selecteer Importeren:

    Veld Waarde
    Type opslagplaats Git
    URL klonen https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
    Naam my-container-app
  5. Selecteer Klonen om de URL van de opslagplaats weer te geven en te kopiëren.

  6. Open een terminal en voer de volgende opdracht uit:

    git clone <REPOSITORY_URL> my-container-app
    

    Vervang door <REPOSITORY_URL> de URL die u hebt gekopieerd.

Een container-app maken en beheerde identiteit configureren

Maak uw container-app met behulp van de az containerapp up opdracht met de volgende stappen. Met deze opdracht maakt u Azure-resources, bouwt u de containerinstallatiekopieën, slaat u de installatiekopieën op in een register en implementeert u deze in een container-app.

Nadat uw app is gemaakt, kunt u een beheerde identiteit aan uw app toevoegen en de identiteit toewijzen aan de AcrPull rol, zodat de identiteit installatiekopieën uit het register kan ophalen.

  1. Ga naar de src-map van de gekloonde opslagplaats.

    cd my-container-app
    cd src
    
  2. Maak Azure-resources en implementeer een container-app met de az containerapp up opdracht.

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Noteer in de uitvoer van de opdracht de naam van het Azure Container Registry.

  4. Haal de volledige resource-id van het containerregister op.

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

    Vervang <ACR_NAME> door de naam van uw register.

  5. Schakel beheerde identiteit in voor de container-app.

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

    Noteer de principal-id van de beheerde identiteit in de opdrachtuitvoer.

  6. Wijs de AcrPull rol voor Azure Container Registry toe aan de beheerde identiteit van de container-app.

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

    Vervang door <MANAGED_IDENTITY_PRINCIPAL_ID> de principal-id van de beheerde identiteit en <ACR_RESOURCE_ID> door de resource-id van Azure Container Registry.

  7. Configureer de container-app om de beheerde identiteit te gebruiken om installatiekopieën op te halen uit Azure Container Registry.

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

    Vervang door <ACR_NAME> de naam van uw Azure Container Registry.

Een Azure DevOps-serviceverbinding maken

Als u wilt implementeren in Azure Container Apps, moet u een Azure DevOps-serviceverbinding maken voor uw Azure-abonnement.

  1. Selecteer Projectinstellingen in Azure DevOps.

  2. Selecteer Serviceverbindingen.

  3. Selecteer Nieuwe serviceverbinding.

  4. Selecteer Azure Resource Manager.

  5. Selecteer Service-principal (automatisch) en selecteer Volgende.

  6. Voer de volgende gegevens in en selecteer Opslaan:

    Veld Waarde
    Abonnement Selecteer uw Azure-abonnement.
    Resourcegroep Selecteer de resourcegroep (my-container-app-rg) die uw container-app en containerregister bevat.
    Serviceverbindingsnaam my-subscription-service-connection

Zie Verbinding maken met Microsoft Azure voor meer informatie over serviceverbindingen.

Een Azure DevOps YAML-pijplijn maken

  1. Selecteer Pijplijnen in uw Azure DevOps-project.

  2. Selecteer Nieuwe pijplijn.

  3. Selecteer Git voor Azure-opslagplaatsen.

  4. Selecteer de opslagplaats die uw broncode (my-container-app) bevat.

  5. Selecteer Starter-pijplijn.

  6. Vervang in de editor de inhoud van het bestand door de volgende 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'
    

    Vervang <AZURE_SUBSCRIPTION_SERVICE_CONNECTION> door de naam van de Azure DevOps-serviceverbinding (my-subscription-service-connection) die u in de vorige stap hebt gemaakt en <ACR_NAME> door de naam van uw Azure Container Registry.

  7. Selecteer Opslaan en uitvoeren.

Een Azure Pipelines-uitvoering begint met het bouwen en implementeren van uw container-app. Als u de voortgang wilt controleren, gaat u naar Pijplijnen en selecteert u de uitvoering. Tijdens de eerste pijplijnuitvoering wordt u mogelijk gevraagd om de pijplijn te autoriseren om uw serviceverbinding te gebruiken.

Als u een nieuwe revisie van uw app wilt implementeren, pusht u een nieuwe doorvoering naar de hoofdbranch .