Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Azure-Container-Apps können Sie Azure-Pipelines verwenden, um Überarbeitungen in Ihrer Container-App zu veröffentlichen. Wenn Commits an Ihr Azure DevOps-Repository übertragen werden, wird eine Pipeline ausgelöst, die das Containerimage in der Containerregistrierung aktualisiert. Container-Apps erstellen eine neue Revision basierend auf dem aktualisierten Containerimage.
Commits für einen bestimmten Branch in Ihrem Repository lösen die Pipeline aus. Beim Erstellen der Pipeline entscheiden Sie, welcher Branch den Trigger darstellt.
Azure Pipelines-Aufgabe für Container Apps
Die Aufgabe unterstützt folgende Szenarien:
- Erstellen Sie ein Dockerfile und stellen Sie es in Container-Apps bereit.
- Erstellen aus Quellcode ohne Dockerfile und Bereitstellen in Container Apps Unterstützte Sprachen sind .NET, Java, Node.js, PHP und Python.
- Stellen Sie ein vorhandenes Containerimage für Container-Apps bereit.
Mit der Produktionsversion ist diese Aufgabe im Lieferumfang von Azure DevOps und erfordert keine explizite Installation. Die vollständige Dokumentation finden Sie unter AzureContainerApps@1 – Azure Container Apps Deploy v1-Aufgabe.
Anwendungsbeispiele
Im Folgenden finden Sie einige häufige Szenarien für die Verwendung der Aufgabe. Weitere Informationen finden Sie in der Dokumentation zur Aufgabe.
Erstellen und Bereitstellen in Container Apps
Der folgende Codeausschnitt zeigt, wie Sie ein Containerimage aus einem Quellcode erstellen und in Container Apps bereitstellen.
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'
Die Aufgabe verwendet das Dockerfile unter appSourcePath zum Erstellen des Containerimages. Wenn kein Dockerfile gefunden wird, versucht die Aufgabe, das Containerimage aus dem Quellcode in appSourcePath zu erstellen.
Bereitstellen eines vorhandenen Container-Images in Container Apps
Der folgende Codeausschnitt zeigt das Bereitstellen eines vorhandenen Containerimages in Container Apps. Die Aufgabe authentifiziert sich mit der Registrierung mithilfe der Dienstverbindung. Wenn die Identität der Dienstverbindung nicht der AcrPush Rolle für die Registrierung zugewiesen ist, geben Sie die Administratoranmeldeinformationen der Registrierung mithilfe der acrUsername Parameter und acrPassword Eingabeparameter der Registrierung an.
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)'
Wichtig
Wenn Sie ein Containerimage in einem separaten Schritt erstellen, müssen Sie unbedingt ein eindeutiges Tag wie die Build-ID anstelle eines stabilen Tags latestwie z. B. verwenden. Weitere Informationen finden Sie unter Bewährte Methoden für Imagetags.
Authentifizieren mit Azure Container Registry
Die Aufgabe "Container Apps" muss sich an Ihrer Azure-Containerregistrierung authentifizieren, um das Container-Image zu pushen. Die Container-App muss sich auch bei Ihrer Containerregistrierung authentifizieren, um das Containerimage abzurufen.
Um Bilder zu pushen, authentifiziert sich die Aufgabe automatisch mit der in acrName angegebenen Containerregistrierung, indem die in azureSubscription bereitgestellte Dienstverbindung verwendet wird. Wenn der Identität der Dienstverbindung nicht die AcrPush Rolle für das Registry zugewiesen ist, geben Sie die Administratoranmeldeinformationen des Registry mithilfe von acrUsername und acrPassword an.
Container-Apps verwenden zum Abrufen von Images entweder eine verwaltete Identität (empfohlen) oder Administratoranmeldeinformationen, um sich bei der Container-Registry zu authentifizieren. Um die verwaltete Identität zu verwenden, muss die Zielcontainer-App für die Aufgabe für die Verwendung der verwalteten Identität konfiguriert sein. Um sich mit den Administratoranmeldeinformationen beim Register zu authentifizieren, legen Sie die Eingaben der Aufgabe für acrUsername und acrPassword fest.
Konfiguration
Führen Sie die folgenden Schritte aus, um eine Azure DevOps-Pipeline für die Bereitstellung in Container-Apps zu konfigurieren.
- Erstellen eines Azure DevOps-Repositorys für Ihre App
- Erstellen einer Container-App mit aktivierter verwalteter Identität
- Zuweisen der
AcrPullRolle für die Containerregistrierung zur verwalteten Identität der Container-App - Konfigurieren einer Azure DevOps-Dienstverbindung für Ihr Azure-Abonnement
- Erstellen einer Azure DevOps-Pipeline
Voraussetzungen
| Anforderung | Anweisungen |
|---|---|
| Azure-Konto | Erstellen Sie ein kostenloses Konto, falls Sie keines besitzen. Sie benötigen die Berechtigung "Mitwirkender" oder "Besitzer " für das Azure-Abonnement, um die Verfahren in diesem Artikel abzuschließen. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen mithilfe des Azure-Portals. |
| Azure DevOps-Projekt | Wechseln Sie zu Azure DevOps, und wählen Sie Get started with Azure aus. Erstellen Sie dann ein neues Projekt. |
| Azure CLI | Installieren Sie die Azure CLI. |
Erstellen eines Azure DevOps-Repositorys und Klonen des Quellcodes
Bevor Sie eine Pipeline erstellen, muss sich der Quellcode für Ihre App in einem Repository befinden.
Melden Sie sich bei Azure DevOps an, und wechseln Sie zu Ihrem Projekt.
Wählen Sie im linken Bereich " Repos" aus.
Wählen Sie "Repository importieren" aus.
Geben Sie die folgenden Werte ein, und wählen Sie dann "Importieren" aus:
Feld Wert Repository-Typ Git Klon-URL https://github.com/Azure-Samples/containerapps-albumapi-csharp.git Klicken Sie auf Importieren.
Wählen Sie Klonen aus, um die URL des Repositories anzuzeigen und zu kopieren.
Öffnen Sie eine Eingabeaufforderung, und führen Sie den folgenden Befehl aus:
git clone <REPOSITORY_URL> my-container-appErsetzen Sie
<REPOSITORY_URL>durch die kopierte URL.
Erstellen einer Container-App und Konfigurieren einer verwalteten Identität
Erstellen Sie Ihre Container-App, indem Sie die folgenden Schritte ausführen. Der az containerapp up Befehl erstellt Azure-Ressourcen, erstellt das Containerimage, speichert das Image in einer Registrierung und stellt eine Container-App bereit.
Nachdem die App erstellt wurde, können Sie Ihrer App eine verwaltete Identität hinzufügen und dieser die Rolle AcrPull zuweisen, sodass sie Images aus der Registrierung abrufen kann.
Wechseln Sie zum src-Ordner des geklonten Repositorys:
cd my-container-app cd srcErstellen Sie Azure-Ressourcen, und stellen Sie eine Container-App mithilfe des
az containerapp upBefehls bereit:az containerapp up \ --name my-container-app \ --source . \ --ingress externalTipp
Wenn der Build mit einem Debian-Repositoryfehler fehlschlägt, stellen Sie sicher, dass Sie die neueste Azure CLI-Version und containerapp-Erweiterung verwenden, indem Sie diese ausführen
az extension add --name containerapp --upgrade. Alternativ können Sie Ihrem Projekt eine Dockerfile-Datei hinzufügen, um mehr Kontrolle über den Build zu haben.Notieren Sie sich in der Befehlsausgabe den Namen der Azure-Containerregistrierung.
Rufen Sie die vollständige Ressourcen-ID der Containerregistrierung ab:
az acr show --name <ACR_NAME> --query id --output tsvErsetzen Sie
<ACR_NAME>durch den Namen Ihrer Registrierung.Aktivieren der verwalteten Identität für die Container-App:
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assignedNotieren Sie die Principal-ID der verwalteten Identität in der Kommandoausgabe.
Weisen Sie der verwalteten Identität der Container-App die
AcrPullRolle für die Containerregistrierung zu:az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>Ersetzen Sie durch
<MANAGED_IDENTITY_PRINCIPAL_ID>die Prinzipal-ID der verwalteten Identität und<ACR_RESOURCE_ID>durch die Ressourcen-ID der Containerregistrierung.Konfigurieren Sie die Container-App so, dass die verwaltete Identität zum Abrufen von Images aus der Containerregistrierung verwendet wird:
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity systemErsetzen Sie
<ACR_NAME>durch den Namen Ihrer Azure-Containerregistrierung.
Erstellen einer Azure DevOps-Dienstverbindung
Zum Bereitstellen in Container-Apps müssen Sie eine Azure DevOps-Dienstverbindung für Ihr Azure-Abonnement erstellen.
Wählen Sie in Azure DevOps Projekteinstellungen aus.
Wählen Sie Dienstverbindungen aus.
Wählen Sie Dienstleistungsverbindung erstellen.
Wählen Sie Azure Resource Manager und dann Weiter aus.
Wählen Sie die App-Registrierung (automatisch) und dann "Weiter" aus.
Geben Sie die folgenden Werte an, und wählen Sie dann "Speichern" aus:
Feld Wert Abonnement Wählen Sie Ihr Azure-Abonnement. Ressourcengruppe Wählen Sie die Ressourcengruppe ( my-container-app-rg) aus, die Ihre Container-App und Ihre Containerregistrierung enthält.Name der Dienstverbindung my-subscription-service-connection
Weitere Informationen zu Dienstverbindungen finden Sie unter Herstellen einer Verbindung mit Microsoft Azure.
Erstellen einer Azure DevOps-YAML-Pipeline
Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines aus.
Wählen Sie "Pipeline erstellen" aus.
Wählen sie Azure Repos Git aus.
Hinweis
Wenn Azure Repos Git nicht als Option angezeigt wird, stellen Sie sicher, dass Ihr Quellcode in Ihrem Azure DevOps-Projekt an ein Git-Repository übertragen wird.
Wählen Sie das Repository aus, das Ihren Quellcode (
my-container-app) enthält.Wählen Sie Starterpipeline aus.
Ersetzen Sie im Editor den Inhalt der Datei durch den folgenden YAML-Code:
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'Ersetzen Sie den
<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>Namen der Azure DevOps-Dienstverbindung (my-subscription-service-connection), die Sie im vorherigen Schritt erstellt haben. Ersetzen Sie<ACR_NAME>durch den Namen Ihrer Azure-Containerregistrierung.Wählen Sie Speichern und ausführen aus.
Eine Azure Pipelines-Ausführung beginnt mit dem Erstellen und Bereitstellen Ihrer Container-App. Um den Fortschritt zu überprüfen, gehen Sie zu Pipelines und wählen Sie die Ausführung aus. Während der ersten Pipelineausführung werden Sie möglicherweise aufgefordert, die Pipeline zur Nutzung Ihrer Dienstverbindung zu autorisieren.
Um eine neue Revision Ihrer App bereitzustellen, pushen Sie einen neuen Commit zum main-Branch.