Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
- Go geïnstalleerd: versie 1.18 of hoger
- Docker Desktop
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:
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 RegistryDe voorbeeldopdrachten voor het instellen van de omgevingsvariabelen zijn voor de Bash-shell. Als u een andere shell gebruikt, past u de opdrachten dienovereenkomstig aan.
Maak een Azure-resourcegroep met de opdracht az group create.
az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATIONMaak een Azure Container Registry met de opdracht az acr create .
az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACR_NAME \ --sku basicMeld u aan bij de Azure-containerinstantie met de opdracht az acr login .
az acr login --name $ACR_NAMENotitie
Als er een fout optreedt die vergelijkbaar is met de volgende fout wanneer u de
az acr loginopdracht 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.
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 imageDe voorbeeldopdrachten voor het instellen van de omgevingsvariabelen zijn voor de Bash-shell. Als u een andere shell gebruikt, past u de opdrachten dienovereenkomstig aan.
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"Bouw de Docker-installatiekopieën lokaal.
docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .Push de Docker-installatiekopieën naar Azure Container Registry.
docker push $LOGIN_SERVER/$IMAGE_NAME:latestControleer 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.
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 appDe voorbeeldopdrachten voor het instellen van de omgevingsvariabelen zijn voor de Bash-shell. Als u een andere shell gebruikt, past u de opdrachten dienovereenkomstig aan.
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
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"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