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 enacrPassword
acrUsername
.
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.
Meld u aan bij Azure DevOps en navigeer naar uw project.
Open de pagina Opslagplaatsen .
Selecteer in de bovenste navigatiebalk de vervolgkeuzelijst opslagplaatsen en selecteer Opslagplaats importeren.
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
Selecteer Klonen om de URL van de opslagplaats weer te geven en te kopiëren.
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.
Ga naar de src-map van de gekloonde opslagplaats.
cd my-container-app cd src
Maak Azure-resources en implementeer een container-app met de
az containerapp up
opdracht.az containerapp up \ --name my-container-app \ --source . \ --ingress external
Noteer in de uitvoer van de opdracht de naam van het Azure Container Registry.
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.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.
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.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.
Selecteer Projectinstellingen in Azure DevOps.
Selecteer Serviceverbindingen.
Selecteer Nieuwe serviceverbinding.
Selecteer Azure Resource Manager.
Selecteer Service-principal (automatisch) en selecteer Volgende.
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
Selecteer Pijplijnen in uw Azure DevOps-project.
Selecteer Nieuwe pijplijn.
Selecteer Git voor Azure-opslagplaatsen.
Selecteer de opslagplaats die uw broncode (
my-container-app
) bevat.Selecteer Starter-pijplijn.
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.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 .