Bereitstellung einer Go-Web-App für Azure Container Apps
In diesem Schnellstart lernen Sie die Bereitstellung einer containerisierten Go-Web-App für Azure Container Apps kennen.
Mit Azure Container Apps können Sie Anwendungscode ausführen, der in einem beliebigen Container verpackt ist, ohne eine komplizierte Cloud-Infrastruktur oder komplexe Container-Orchestratoren verwalten zu müssen und ohne sich Gedanken über die Runtime oder das Programmiermodell machen zu müssen. Zu den gängigen Einsatzmöglichkeiten von Azure Container Apps gehören: Bereitstellung von API-Endpunkten, Hosting von Hintergrundverarbeitungsanwendungen, Verarbeitung ereignisgesteuerter Verarbeitung und Ausführung von Microservices.
Folgen Sie dieser Anleitung, um ein Docker-Image zu erstellen, dieses Image in Azure Containerregistrierung bereitzustellen und eine Go-Web-App in Azure Container Apps bereitzustellen.
Voraussetzungen
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Installation von Go: Version 1.18 oder höher
- Docker Desktop
Setup
Um sich über die CLI bei Azure anzumelden, führen Sie den Befehl az login aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.
az login
Um sicherzustellen, dass Sie die neueste Version der CLI verwenden, führen Sie den Befehl az upgrade aus.
az upgrade
Installieren oder aktualisieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.
Wenn Sie beim Ausführen von az containerapp
-Befehlen in Azure-CLI Fehlermeldungen über fehlende Parameter erhalten, stellen Sie sicher, dass Sie die neueste Version der Erweiterung für Azure-Container-Apps installiert haben.
az extension add --name containerapp --upgrade
Hinweis
Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App
und Microsoft.OperationalInsights
.
Hinweis
Azure Container Apps-Ressourcen wurden vom Microsoft.Web
-Namespace zum Microsoft.App
-Namespace migriert. Weitere Informationen finden Sie unter Namespacemigration von Microsoft.Web zu Microsoft.App im März 2022.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Herunterladen der Beispiel-App
Um diesem Tutorial folgen zu können, benötigen Sie eine Beispielanwendung, die Sie in einen Container packen können. Eine Beispiel-Go-Web-App finden Sie im msdocs-go-webapp-quickstart GitHub-Repository. Laden Sie die Beispielanwendung auf Ihre lokale Arbeitsstation herunter, oder klonen Sie sie.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Erstellen einer Azure-Containerregistrierung
Azure Containerregistrierung ermöglicht Ihnen das Erstellen, Speichern und Verwalten von Container-Images. Sie werden es verwenden, um das Docker-Image zu speichern, das die Go-Web-App-Beispiel enthält, die im zuvor erwähnten Beispiel-Repository bereitgestellt wird.
Führen Sie die folgenden Befehle aus, um eine Azure-Containerregistrierung zu erstellen:
Erstellen Sie mit dem Befehl az group create eine Azure-Ressourcengruppe.
az group create \ --name <resourceGroupName> \ --location eastus
Erstellen Sie eine Azure Containerregistrierung mit dem Befehl az acr create.
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Melden Sie sich mit dem Befehl az acr login bei der Azure-Containerinstanz an.
az acr login --name <azureContainerRegistryName>
Ersetzen Sie <resourceGroupName>
und <azureContainerRegistryName>
durch die entsprechenden Werte. Ihr Azure Containerregistrierungs-Name muss weltweit eindeutig sein.
Hinweis
Wenn Sie beim Ausführen des Befehls az acr login
eine Fehlermeldung erhalten, die der folgenden ähnelt, stellen Sie sicher, dass der Docker-Daemon auf Ihrem System ausgeführt wird:
You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR
Erstellen und übertragen Sie das Docker-Image
Sobald Sie eine Azure Containerregistrierung erstellt haben, erstellen und übertragen Sie das Docker-Image der Beispiel-Go-Web-App.
Führen Sie die folgenden Befehle, um das Image zu erstellen und in die Registrierung zu übertragen:
Rufen Sie die Informationen zum Anmeldeserver mit dem Befehl az acr show ab.
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Erstellen Sie lokal das Docker-Image.
docker build -t <loginServer>/<imageName>:latest .
Übertragen des Docker-Images an Azure Container Registry per Pushvorgang.
docker push <loginServer>/<imageName>:latest
Überprüfen Sie mit dem Befehl az acr repository list, ob das Bild erfolgreich an Azure Containerregistrierung übertragen wurde.
az acr repository list \ --name <azureContainerRegistryName> \ --output table
Ersetzen Sie loginServer
, imageName
und azureContainerRegistryName
durch die entsprechenden Werte. Der Name des Images ist das Docker-Image, das an Azure Containerregistrierung übertragen und später für die Bereitstellung in Azure Container Apps verwendet wird.
Da Sie nun über ein Bild in Azure Containerregistrierung verfügen, können Sie die Azure Container App und ihre Umgebung bereitstellen.
Azure Container Apps-Umgebung erstellen
Azure Container Apps ist nicht so komplex wie ein Container-Orchestrator, aber es muss dennoch eine Möglichkeit geben, sichere Grenzen zu schaffen, und hier kommen Azure Container Apps-Umgebungen ins Spiel. Container-Apps, die in derselben Umgebung bereitgestellt werden, nutzen dasselbe virtuelle Netzwerk und schreiben Protokolle in denselben Protokollanalyse-Arbeitsbereich. Bevor Sie eine Azure Container App bereitstellen können, benötigen Sie eine Umgebung, in der die Bereitstellung erfolgen kann.
Führen Sie den Befehl az containerapp env create aus, um eine Azure Container Apps-Umgebung zu erstellen.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Bereitstellen von Azure Container Apps
Zu diesem Zeitpunkt haben Sie eine Azure Containerregistrierung erstellt, ein Docker-Image erstellt und dorthin übertragen und eine Azure Container Apps-Umgebung erstellt. Jetzt müssen Sie die Anwendung nur noch bereitstellen.
Führen Sie den Befehl az containerapp create aus, um die Go-Web-App in Azure Container Apps bereitzustellen.
az containerapp create \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--environment <containerAppEnvName> \
--image "<loginServer>/<imageName>:latest" \
--registry-server "<loginServer>" \
--registry-identity system \
--target-port 8080 \
--ingress external
Der Parameter --registry-identity system
konfiguriert die vom System zugewiesene verwaltete Identität in der Container-App. Die Container-App verwendet diese Identität anstelle des Benutzernamens/Passworts, das weniger sicher ist, um sich bei der Containerregistrierung zu authentifizieren. Der Befehl erstellt außerdem automatisch eine AcrPull
-Zuweisung für die Identität, sodass diese berechtigt ist, Bilder aus der Registrierung abzurufen. Um verwaltete Identitäten für die Authentifizierung und Autorisierung zu verwenden, muss die Registrierung eine Azure-Containerregistrierung sein.
Überprüfen Sie die URL der Web-App
Führen Sie den Befehl az containerapp show aus, um den FQDN (Fully Qualified Domain Name) des Eingangs der Web-App zu erhalten.
APP_FQDN=$(az containerapp show \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
Führen Sie als Nächstes den Befehl curl für den FQDN aus und überprüfen Sie, ob die Ausgabe den HTML-Code der Website widerspiegelt.
curl "https://$APP_FQDN"
Bereinigen von Ressourcen
Wenn Sie mit der Beispiel-App fertig sind, können Sie alle Ressourcen für die App aus Azure entfernen. Auf diese Weise vermeiden Sie laufende Kosten und halten Ihr Azure-Abonnement übersichtlich. Wenn Sie die Ressourcengruppe entfernen, werden auch alle Ressourcen in der Ressourcengruppe entfernt. Dies stellt die schnellste Möglichkeit dar, alle Azure-Ressourcen für Ihre App zu entfernen.
Führen Sie den Befehl az group delete aus, um die Ressourcengruppe und ihre Ressourcen zu löschen.
az group delete \
--name <resourceGroupName> \
--no-wait