Teilen über


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 in einem beliebigen Container ausführen, ohne komplizierte Cloudinfrastrukturen oder komplexe Container-Orchestratoren zu verwalten. Außerdem ist es nicht erforderlich, sich gedanken über das Laufzeit- oder Programmiermodell zu machen. 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.

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 beim Ausführen von az containerapp-Befehlen in der Azure CLI Fehler über fehlende Parameter angezeigt werden, stellen Sie sicher, dass die neueste Version der Azure-Container-Apps-Erweiterung installiert ist.

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 die Microsoft.App, Microsoft.ContainerRegistry und Microsoft.OperationalInsights Namespaces.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.OperationalInsights

Hinweis

Azure-Container-Apps-Ressourcen, die aus dem Microsoft.Web Namespace in den Microsoft.App Namespace migriert wurden. Weitere Informationen finden Sie unter Namespacemigration von Microsoft.Web zu Microsoft.App im März 2022.

Herunterladen der Beispiel-App

Um diesem Tutorial folgen zu können, benötigen Sie eine Beispielanwendung, die Sie in einen Container packen können. Das GitHub-Repository "msdocs-go-webapp-quickstart " stellt eine Beispiel-Go-Web-App bereit. 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. Verwenden Sie es, um das Docker-Image zu speichern, das die Go-Web-Beispiel-App enthält, die im zuvor erwähnten Beispiel-Repository bereitgestellt wurde.

Führen Sie die folgenden Befehle aus, um eine Azure-Containerregistrierung zu erstellen:

  1. Legen Sie Umgebungsvariablen für die Ressourcen fest, die Sie erstellen. Ersetzen Sie den Platzhaltertext in Klammern durch die entsprechenden Werte. Ihr Azure Containerregistrierungs-Name muss weltweit eindeutig sein.

    RESOURCE_GROUP_NAME="<resourceGroupName>"  # Name of the Azure resource group to create
    LOCATION="<location>"                      # Azure region (For example, "eastus", "westus2")
    ACR_NAME="<azureContainerRegistryName>"    # Globally unique name for Azure Container Registry
    

    Die Beispielbefehle zum Festlegen der Umgebungsvariablen sind für die Bash-Shell. Wenn Sie eine andere Shell verwenden, passen Sie die Befehle entsprechend an.

  2. Erstellen Sie mit dem Befehl az group create eine Azure-Ressourcengruppe.

    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Erstellen Sie eine Azure Containerregistrierung mit dem Befehl az acr create.

    az acr create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACR_NAME \
        --sku basic
    
  4. Melden Sie sich mit dem Befehl az acr login bei der Azure-Containerinstanz an.

    az acr login --name $ACR_NAME
    

    Hinweis

    Wenn beim Ausführen des az acr login Befehls eine Fehlermeldung wie der folgende Fehler auftritt, stellen Sie sicher, dass der Docker-Daemon auf Ihrem System ausgeführt wird:

    You may want to use 'az acr login -n $ACR_NAME --expose-token' to get an access token, which doesn't require Docker to be installed.
    An error occurred: DOCKER_COMMAND_ERROR
    

Erstellen und übertragen Sie das Docker-Image

Nachdem Sie eine Azure Container-Registrierung erstellt haben, erstellen Sie das Docker-Image der Go-Web-Beispiel-App, und übertragen Sie es.

Führen Sie die folgenden Befehle aus, um das Image zu erstellen und an die Registrierung zu übertragen.

  1. Legen Sie die Umgebungsvariable für das Docker-Image fest, das Sie erstellen. Ersetzen Sie den Platzhaltertext in Klammern durch die entsprechenden Werte.

    IMAGE_NAME="go-webapp"  # Name for the Docker image
    

    Die Beispielbefehle zum Festlegen der Umgebungsvariablen sind für die Bash-Shell. Wenn Sie eine andere Shell verwenden, passen Sie die Befehle entsprechend an.

  2. Rufen Sie die Anmeldeserverinformationen mit dem Az acr Show-Befehl ab, und speichern Sie sie in einer Umgebungsvariable.

    LOGIN_SERVER=$(az acr show \
        --name $ACR_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query loginServer \
        --output tsv)
    
    echo "Login server: $LOGIN_SERVER"
    
  3. Erstellen Sie lokal das Docker-Image.

    docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .
    
  4. Übertragen des Docker-Images an Azure Container Registry per Pushvorgang.

    docker push $LOGIN_SERVER/$IMAGE_NAME:latest
    
  5. Überprüfen Sie mit dem Befehl az acr repository list, ob das Bild erfolgreich an Azure Containerregistrierung übertragen wurde.

    az acr repository list \
        --name $ACR_NAME \
        --output table
    

Nachdem Sie nun ein Image in der Azure-Containerregistrierung verfügbar haben, können Sie die Azure-Container-App und deren Umgebung bereitstellen.

Azure Container Apps-Umgebung erstellen

Azure-Container-Apps verfügen nicht über die Komplexität eines Container-Orchestrators, aber sie benötigt dennoch eine Möglichkeit, um sichere Grenzen zu schaffen. Azure Container Apps-Umgebungen bieten diese Funktion. 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.

  1. Legen Sie Umgebungsvariablen für die Ressourcen fest, die Sie erstellen. Ersetzen Sie den Platzhaltertext in Klammern durch die entsprechenden Werte.

    CONTAINER_APP_ENV="mygoappenv"  # Name for the Container Apps environment
    CONTAINER_APP_NAME="mygoapp"    # Name for your container app
    

    Die Beispielbefehle zum Festlegen der Umgebungsvariablen sind für die Bash-Shell. Wenn Sie eine andere Shell verwenden, passen Sie die Befehle entsprechend an.

  2. Führen Sie den Befehl az containerapp env create aus, um eine Azure Container Apps-Umgebung zu erstellen.

    az containerapp env create \
        --name $CONTAINER_APP_ENV \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION
    

Bereitstellen von Azure Container Apps

An diesem Punkt haben Sie die folgenden Schritte ausgeführt:

  • Es wurde eine Azure-Containerregistrierung erstellt.
  • Erstellt und ein Docker-Image in die Registry hochgeladen.
  • Richten Sie eine Azure-Container-Apps-Umgebung ein.

Der letzte Schritt besteht darin, die Anwendung bereitzustellen.

Führen Sie den Befehl az containerapp create aus, um die Go-Web-App in Azure Container Apps bereitzustellen.

az containerapp create \
    --name $CONTAINER_APP_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --environment $CONTAINER_APP_ENV \
    --image "$LOGIN_SERVER/$IMAGE_NAME:latest" \
    --registry-server "$LOGIN_SERVER" \
    --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 von Benutzername und Kennwort, was weniger sicher ist, um sich bei der Containerregistrierung zu authentifizieren. Der Befehl erstellt außerdem automatisch eine AcrPull Rollenzuweisung für die Identität und autorisiert sie, um 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

  1. 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 $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query properties.configuration.ingress.fqdn \
        --output tsv)
    
    echo "App URL: https://$APP_FQDN"
    
  2. Führen Sie den Curl-Befehl für den FQDN aus, und bestätigen Sie, dass die Ausgabe den HTML-Code der Website widerspiegelt. Sie können die URL auch in einem Webbrowser öffnen, um mit der Web-App zu interagieren.

    curl "https://$APP_FQDN"
    

    "Der Befehl gibt den HTML-Code für die Startseite der Web-App ähnlich wie folgt zurück:

    <!DOCTYPE html>
    <html>
    
    <head>
        <title>Hello Azure - Go Quickstart</title>
        <link rel="stylesheet" href="/assets/main.css">
        <link rel="icon" type="image/x-icon" href="/assets/favicon.ico">
    </head>
    
    <header>
        <h1>Welcome to Azure</h1>
    </header>
    
    <section>
        <img src="/assets/images/azure-icon.svg">
        <form method="post">
            <label for="form-label">Could you please tell me your name?</label><br>
            <input type="text" id="name" name="name" style="max-width: 256px;"><br>
            <button type="submit">Say Hello</button>
        </form>
    </section>
    
    </html>
    

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 $RESOURCE_GROUP_NAME \
    --no-wait

Nächste Schritte