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 ingewikkelde cloudinfrastructuur of complexe containerorchestrators hoeft te beheren, en zonder dat u zich zorgen hoeft 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, moet u ervoor zorgen dat 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.App
en Microsoft.OperationalInsights
naamruimten.
Notitie
Azure Container Apps-resources zijn gemigreerd van de Microsoft.Web
naamruimte naar de Microsoft.App
naamruimte. Raadpleeg de naamruimtemigratie van Microsoft.Web naar Microsoft.App in maart 2022 voor meer informatie.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
De voorbeeld-app downloaden
Als u deze zelfstudie wilt volgen, hebt u een voorbeeldtoepassing nodig om een container te maken. Een voorbeeld van een Go-web-app is beschikbaar in de GitHub-opslagplaats msdocs-go-webapp-quickstart . 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. U gebruikt deze om de Docker-installatiekopieën op te slaan die de voorbeeld-Go-web-app bevat die is opgegeven in de eerder genoemde voorbeeldopslagplaats.
Voer de volgende opdrachten uit om een Azure Container Registry te maken:
Maak een Azure-resourcegroep met de opdracht az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Maak een Azure Container Registry met de opdracht az acr create .
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Meld u aan bij de Azure-containerinstantie met de opdracht az acr login .
az acr login --name <azureContainerRegistryName>
Vervang <resourceGroupName>
en <azureContainerRegistryName>
door de juiste waarden. Uw Azure Container Registry-naam moet wereldwijd uniek zijn.
Notitie
Als er een fout optreedt die vergelijkbaar is met het volgende wanneer u de az acr login
opdracht uitvoert, controleert u of de docker-deamon wordt uitgevoerd op uw systeem:
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
De Docker-installatiekopieën bouwen en pushen
Zodra u een Azure Container Registry hebt gemaakt, bouwt en pusht u de Docker-installatiekopieën van de go-voorbeeldweb-app.
Voer de volgende opdrachten uit om de installatiekopieën te bouwen en naar het register te pushen:
Haal de gegevens van de aanmeldingsserver op met de opdracht az acr show .
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Bouw de Docker-installatiekopieën lokaal.
docker build -t <loginServer>/<imageName>:latest .
Push de Docker-installatiekopieën naar Azure Container Registry.
docker push <loginServer>/<imageName>:latest
Controleer of de installatiekopieën zijn gepusht naar Azure Container Registry met de opdracht az acr repository list .
az acr repository list \ --name <azureContainerRegistryName> \ --output table
Vervang , imageName
en azureContainerRegistryName
door loginServer
de juiste waarden. De naam van de installatiekopieën is de Docker-installatiekopieën die naar Azure Container Registry worden gepusht en later worden gebruikt om te implementeren in Azure Container Apps.
Nu u een installatiekopieën hebt die beschikbaar is in Azure Container Registry, kunt u de Azure Container App en de bijbehorende 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 vast te stellen. Dit is waar Azure Container Apps-omgevingen binnenkomen. 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.
Voer de opdracht az containerapp env create uit om een Azure Container Apps-omgeving te maken.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Implementeren in Azure Container Apps
Op dit moment hebt u een Azure Container Registry gemaakt, er een Docker-installatiekopie naar gemaakt en gepusht en een Azure Container Apps-omgeving gemaakt. U hoeft alleen maar de toepassing te implementeren.
Voer de opdracht az containerapp create uit om de Go-web-app te implementeren in Azure Container Apps.
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
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/wachtwoord, wat minder veilig is, om te verifiëren met het containerregister. Met de opdracht wordt ook automatisch een AcrPull
roltoewijzing voor de identiteit gemaakt, zodat deze gemachtigd is om installatiekopieën op te halen uit het register. 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 <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
Voer vervolgens de curl-opdracht uit op de FQDN en bevestig dat de uitvoer de HTML van de website weerspiegelt.
curl "https://$APP_FQDN"
Resources 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 <resourceGroupName> \
--no-wait