Distribuera en Go-webbapp till Azure Container Apps
I den här snabbstarten lär du dig att distribuera en containerbaserad Go-webbapp till Azure Container Apps.
Med Azure Container Apps kan du köra programkod som paketeras i en container utan att behöva hantera komplicerad molninfrastruktur eller komplexa containerorkestrerare och utan att behöva bekymra dig om körnings- eller programmeringsmodellen. Vanliga användningsområden för Azure Container Apps är: Distribuera API-slutpunkter, vara värd för program för bakgrundsbearbetning, hantera händelsedriven bearbetning och köra mikrotjänster.
Följ den här självstudien om du vill gå igenom hur du skapar en Docker-avbildning, distribuerar avbildningen till Azure Container Registry och distribuerar en Go-webbapp till Azure Container Apps.
Förutsättningar
- Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Go installerat: Version 1.18 eller senare
- Docker Desktop
Ställ in
Om du vill logga in på Azure från CLI kör du kommandot az login och följer anvisningarna för att slutföra autentiseringsprocessen.
az login
Kör kommandot az upgrade för att säkerställa att du kör den senaste versionen av CLI.
az upgrade
Installera eller uppdatera sedan Azure Container Apps-tillägget för CLI.
Om du får fel om saknade parametrar när du kör az containerapp
kommandon i Azure CLI kontrollerar du att den senaste versionen av Azure Container Apps-tillägget är installerad.
az extension add --name containerapp --upgrade
Kommentar
Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App
namnrymderna och Microsoft.OperationalInsights
.
Kommentar
Azure Container Apps-resurser har migrerats från Microsoft.Web
namnområdet till Microsoft.App
namnområdet. Mer information finns i Namnområdesmigrering från Microsoft.Web till Microsoft.App i mars 2022.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Ladda ned exempelprogrammet
Om du vill följa den här självstudien behöver du ett exempelprogram för att containerisera. En Go-exempelwebbapp finns i GitHub-lagringsplatsen msdocs-go-webapp-quickstart . Ladda ned eller klona exempelprogrammet till din lokala arbetsstation.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Skapa ett Azure Container Registry
Med Azure Container Registry kan du skapa, lagra och hantera containeravbildningar. Du använder den för att lagra Docker-avbildningen som innehåller go-exempelwebbappen som angavs i exempellagringsplatsen som nämndes tidigare.
Kör följande kommandon för att skapa ett Azure Container Registry:
Skapa en Azure-resursgrupp med kommandot az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Skapa ett Azure Container Registry med kommandot az acr create .
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Logga in på Azure-containerinstansen med kommandot az acr login .
az acr login --name <azureContainerRegistryName>
Ersätt <resourceGroupName>
och <azureContainerRegistryName>
med lämpliga värden. Ditt Azure Container Registry-namn måste vara globalt unikt.
Kommentar
Om du får ett fel som liknar följande när du kör az acr login
kommandot kontrollerar du att docker-deamonen körs i systemet:
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
Skapa och push-överföra Docker-avbildningen
När du har skapat ett Azure Container Registry skapar och push-överför du Docker-avbildningen av Go-exempelwebbappen.
Kör följande kommandoversion och push-överför avbildningen till registret:
Hämta inloggningsserverinformationen med kommandot az acr show .
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Skapa Docker-avbildningen lokalt.
docker build -t <loginServer>/<imageName>:latest .
Skicka Docker-avbildningen till Azure Container Registry.
docker push <loginServer>/<imageName>:latest
Kontrollera att avbildningen har överförts till Azure Container Registry med kommandot az acr repository list .
az acr repository list \ --name <azureContainerRegistryName> \ --output table
Ersätt loginServer
, imageName
och azureContainerRegistryName
med lämpliga värden. Avbildningsnamnet är Docker-avbildningen som skickas till Azure Container Registry och senare används för att distribuera till Azure Container Apps.
Nu när du har en avbildning tillgänglig i Azure Container Registry är du redo att distribuera Azure Container App och dess miljö.
Skapa en Azure Container Apps-miljö
Azure Container Apps har inte komplexiteten hos en containerorkestrerare, men den behöver fortfarande ett sätt att upprätta säkra gränser, där Azure Container Apps-miljöer kommer in. Container Apps som distribueras i samma miljö delar samma virtuella nätverk och skriver loggar till samma Log Analytics-arbetsyta. Innan du kan distribuera en Azure Container App behöver du en miljö att distribuera till.
Kör kommandot az containerapp env create för att skapa en Azure Container Apps-miljö.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Distribuera till Azure Container Apps
Nu har du skapat ett Azure Container Registry, skapat och push-överfört en Docker-avbildning till det och skapat en Azure Container Apps-miljö. Allt som återstår är att distribuera programmet.
Kör kommandot az containerapp create för att distribuera Go-webbappen till 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
Parametern --registry-identity system
konfigurerar den systemtilldelade hanterade identiteten i containerappen. Containerappen använder den här identiteten i stället för användarnamn/lösenord, vilket är mindre säkert, för att autentisera med containerregistret. Kommandot skapar också automatiskt en AcrPull
rolltilldelning för identiteten, så att den har behörighet att hämta avbildningar från registret. Om du vill använda hanterade identiteter för autentisering och auktorisering måste registret vara ett Azure Container Registry.
Verifiera webbappens URL
Kör kommandot az containerapp show för att hämta FQDN (fullständigt domännamn) för webbprogrammets ingress.
APP_FQDN=$(az containerapp show \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
Kör sedan curl-kommandot mot FQDN och bekräfta att utdata återspeglar HTML-koden för webbplatsen.
curl "https://$APP_FQDN"
Rensa resurser
När du är klar med exempelappen kan du ta bort alla resurser för appen från Azure. På så sätt undviker du löpande avgifter och håller din Azure-prenumeration ostädad. Om du tar bort resursgruppen tas även alla resurser i resursgruppen bort och är det snabbaste sättet att ta bort alla Azure-resurser för din app.
Kör kommandot az group delete för att ta bort resursgruppen och dess resurser.
az group delete \
--name <resourceGroupName> \
--no-wait