Delen via


Een Go-web-app implementeren in Azure Container Apps

In deze quickstart leert u hoe u een in een container geplaatste Go-web-app implementeert in Azure Container Apps.

Met Azure Container Apps kunt u toepassingscode uitvoeren die in elke container is verpakt zonder dat u complexe cloudinfrastructuur of complexe containerorchestrators hoeft te beheren. Het elimineert ook de noodzaak om u zorgen te maken over de runtime of het programmeermodel. Veelvoorkomende toepassingen van Azure Container Apps zijn: API-eindpunten implementeren, toepassingen voor achtergrondverwerking hosten, gebeurtenisgestuurde verwerking verwerken en microservices uitvoeren.

Volg deze zelfstudie om een Docker-installatiekopieën te bouwen, die installatiekopieën te implementeren in Azure Container Registry en een Go-web-app te implementeren in Azure Container Apps.

Vereisten

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

Instellingen

Als u zich wilt aanmelden bij Azure vanuit de CLI, voert u de opdracht az login uit en volgt u de aanwijzingen om het verificatieproces te voltooien.

az login

Voer de opdracht az upgrade uit om ervoor te zorgen dat u de nieuwste versie van de CLI uitvoert.

az upgrade

Installeer of werk vervolgens de Azure Container Apps-extensie voor de CLI bij.

Als u fouten ontvangt over ontbrekende parameters wanneer u opdrachten uitvoert az containerapp in Azure CLI, controleert u of de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd.

az extension add --name containerapp --upgrade

Notitie

Vanaf mei 2024 schakelen Azure CLI-extensies standaard geen preview-functies meer in. Als u toegang wilt krijgen tot de preview-functies van Container Apps, installeert u de Container Apps-extensie met --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Nu de huidige extensie of module is geïnstalleerd, registreert u de Microsoft.Appen Microsoft.ContainerRegistryMicrosoft.OperationalInsights naamruimten.

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

Notitie

Azure Container Apps-resources die zijn gemigreerd van de Microsoft.Web-naamruimte naar de Microsoft.App naamruimte. Zie De migratie van naamruimten van Microsoft.Web naar Microsoft.App in maart 2022 voor meer informatie.

De voorbeeld-app downloaden

Als u deze zelfstudie wilt volgen, hebt u een voorbeeldtoepassing nodig om een container te maken. De GitHub-opslagplaats msdocs-go-webapp-quickstart biedt een voorbeeld van een Go-web-app. Download of kloon de voorbeeldtoepassing naar uw lokale werkstation.

git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git

cd msdocs-go-webapp-quickstart

Een Azure Container Registry maken

Met Azure Container Registry kunt u containerinstallatiekopieën bouwen, opslaan en beheren. Gebruik het om de Docker-image op te slaan die de Go-web-app bevat die wordt aangeboden in de eerder vermelde voorbeeldopslagplaats.

Voer de volgende opdrachten uit om een Azure Container Registry te maken:

  1. Stel omgevingsvariabelen in voor de resources die u gaat maken. Vervang de tekst van de tijdelijke aanduiding tussen vierkante haken door de juiste waarden. Uw Azure Container Registry-naam moet wereldwijd uniek zijn.

    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
    

    De voorbeeldopdrachten voor het instellen van de omgevingsvariabelen zijn voor de Bash-shell. Als u een andere shell gebruikt, past u de opdrachten dienovereenkomstig aan.

  2. Maak een Azure-resourcegroep met de opdracht az group create.

    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Maak een Azure Container Registry met de opdracht az acr create .

    az acr create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACR_NAME \
        --sku basic
    
  4. Meld u aan bij de Azure-containerinstantie met de opdracht az acr login .

    az acr login --name $ACR_NAME
    

    Notitie

    Als er een fout optreedt die vergelijkbaar is met de volgende fout wanneer u de az acr login opdracht uitvoert, controleert u of de Docker-daemon wordt uitgevoerd op uw systeem:

    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
    

De Docker-installatiekopieën bouwen en pushen

Nadat u een Azure Container Registry hebt gemaakt, bouwt en pusht u de Docker-afbeelding van de Go-voorbeeldwebapp.

Voer de volgende commando's uit om de image te bouwen en naar het register te pushen.

  1. Stel de omgevingsvariabele in voor de Docker-image die u gaat maken. Vervang de placeholdertekst tussen vierkante haken door de juiste waarden.

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

    De voorbeeldopdrachten voor het instellen van de omgevingsvariabelen zijn voor de Bash-shell. Als u een andere shell gebruikt, past u de opdrachten dienovereenkomstig aan.

  2. Haal de aanmeldingsservergegevens op met de opdracht az acr show en sla deze op in een omgevingsvariabele.

    LOGIN_SERVER=$(az acr show \
        --name $ACR_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query loginServer \
        --output tsv)
    
    echo "Login server: $LOGIN_SERVER"
    
  3. Bouw de Docker-installatiekopieën lokaal.

    docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .
    
  4. Push de Docker-installatiekopieën naar Azure Container Registry.

    docker push $LOGIN_SERVER/$IMAGE_NAME:latest
    
  5. Controleer of de installatiekopieën zijn gepusht naar Azure Container Registry met de opdracht az acr repository list .

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

Nu u over een image beschikt dat beschikbaar is in Azure Container Registry, kunt u de Azure Container App en zijn omgeving implementeren.

Een Azure Container Apps-omgeving maken

Azure Container Apps heeft niet de complexiteit van een containerorchestrator, maar er is nog steeds een manier nodig om veilige grenzen tot stand te brengen. Azure Container Apps-omgevingen bieden deze mogelijkheid. Container Apps die in dezelfde omgeving zijn geïmplementeerd, delen hetzelfde virtuele netwerk en schrijven logboeken naar dezelfde Log Analytics-werkruimte. Voordat u een Azure Container App kunt implementeren, hebt u een omgeving nodig om te implementeren.

  1. Stel omgevingsvariabelen in voor de resources die u gaat maken. Vervang de tijdelijke tekst tussen vierkante haken door de juiste waarden.

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

    De voorbeeldopdrachten voor het instellen van de omgevingsvariabelen zijn voor de Bash-shell. Als u een andere shell gebruikt, past u de opdrachten dienovereenkomstig aan.

  2. Voer de opdracht az containerapp env create uit om een Azure Container Apps-omgeving te maken.

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

Implementeren in Azure Container Apps

Op dit moment hebt u de volgende stappen voltooid:

  • Er is een Azure Container Registry gemaakt.
  • Een Docker-image gebouwd en naar het register gepusht.
  • Een Azure Container Apps-omgeving instellen.

De laatste stap is het implementeren van de toepassing.

Voer de opdracht az containerapp create uit om de Go-web-app te implementeren in Azure Container Apps.

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

De --registry-identity system parameter configureert de door het systeem toegewezen beheerde identiteit in de container-app. De container-app gebruikt deze identiteit in plaats van gebruikersnaam en wachtwoord, wat minder veilig is, om te verifiëren met het containerregister. Met de opdracht wordt ook automatisch een AcrPull roltoewijzing gemaakt voor de identiteit, waarbij deze wordt gemachtigd om afbeeldingen uit het register op te halen. Als u beheerde identiteiten wilt gebruiken voor verificatie en autorisatie, moet het register een Azure Container Registry zijn.

De URL van de web-app controleren

  1. Voer de opdracht az containerapp show uit om de FQDN (Fully Qualified Domain Name) van het inkomend verkeer van de webtoepassing op te halen.

    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. Voer de curl-opdracht uit op de FQDN en controleer of de uitvoer de HTML van de website weerspiegelt. U kunt de URL ook openen in een webbrowser om te communiceren met de web-app.

    curl "https://$APP_FQDN"
    

    'De opdracht retourneert de HTML voor de startpagina van de web-app, vergelijkbaar met de volgende:

    <!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>
    

De hulpbronnen opschonen

Wanneer u klaar bent met de voorbeeld-app, kunt u alle resources voor de app verwijderen uit Azure. Dit voorkomt doorlopende kosten en zorgt ervoor dat uw Azure-abonnement overzichtelijk blijft. Als u de resourcegroep verwijdert, worden ook alle resources in de resourcegroep verwijderd en is dit de snelste manier om alle Azure-resources voor uw app te verwijderen.

Voer de opdracht az group delete uit om de resourcegroep en de bijbehorende resources te verwijderen.

az group delete \
    --name $RESOURCE_GROUP_NAME \
    --no-wait

Volgende stappen