Självstudie: Kommunikation mellan mikrotjänster i Azure Container Apps
Azure Container Apps exponerar varje containerapp via ett domännamn om ingress är aktiverat. Inkommande slutpunkter för containerappar i en extern miljö kan antingen vara offentligt tillgängliga eller endast tillgängliga för andra containerappar i samma miljö.
När du känner till det fullständigt kvalificerade domännamnet för en viss containerapp kan du göra direkta anrop till tjänsten från andra containerappar i den delade miljön.
I den här självstudien distribuerar du en andra containerapp som gör ett direkt tjänstanrop till API:et som distribueras i snabbstarten Distribuera din kod till Azure Container Apps .
Följande skärmbild visar användargränssnittets mikrotjänst som distribueras till containerappar i slutet av den här artikeln.
I den här självstudien får du lära dig att:
- Distribuera ett klientdelsprogram till Azure Container Apps
- Länka klientdelsappen till DEN API-slutpunkt som distribuerades i föregående snabbstart
- Kontrollera att klientdelsappen kan kommunicera med serverdels-API:et
Förutsättningar
I snabbstarten kod till molnet distribueras ett webb-API för serverdelen för att returnera en lista över musikalbum. Om du inte distribuerade albumets API-mikrotjänst går du tillbaka till Snabbstart: Distribuera koden till Azure Container Apps för att fortsätta.
Ställ in
Om du för närvarande är autentiserad till Azure och har de miljövariabler som definieras från snabbstarten hoppar du över följande steg och går direkt till Förbered GitHub-lagringsplatsen.
Definiera följande variabler i bash-gränssnittet.
RESOURCE_GROUP="album-containerapps"
LOCATION="canadacentral"
ENVIRONMENT="env-album-containerapps"
API_NAME="album-api"
FRONTEND_NAME="album-ui"
GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"
Innan du kör det här kommandot måste du ersätta <YOUR_GITHUB_USERNAME>
med ditt GitHub-användarnamn.
Definiera sedan ett containerregisternamn som är unikt för dig.
ACR_NAME="acaalbums"$GITHUB_USERNAME
Logga in på Azure CLI.
az login
az acr login --name $ACR_NAME
Förbereda GitHub-lagringsplatsen
På en ny webbläsarflik går du till lagringsplatsen för användargränssnittsprogrammet och väljer knappen Förgrening överst på sidan för att förgrena lagringsplatsen till ditt konto.
Följ anvisningarna från GitHub för att förgrena lagringsplatsen och gå tillbaka hit när åtgärden är klar.
Gå till överordnad för mappen code-to-cloud . Om du fortfarande är i katalogen code-to-cloud/src kan du använda kommandot nedan för att återgå till den överordnade mappen.
cd ../..
Använd följande git-kommando för att klona din förgrenade lagringsplats till mappen code-to-cloud-ui :
git clone https://github.com/$GITHUB_USERNAME/containerapps-albumui.git code-to-cloud-ui
Kommentar
Om kommandot
clone
misslyckas kontrollerar du att du har förgrenat lagringsplatsen.Ändra sedan katalogen till mappen src för den klonade lagringsplatsen.
cd code-to-cloud-ui/src
Skapa klientdelsprogrammet
az acr build --registry $ACR_NAME --image albumapp-ui .
Utdata från az acr build
kommandot visar källkodens uppladdningsstatus till Azure och information om åtgärden docker build
.
Följande kommando skapar en containeravbildning för albumets användargränssnitt och taggar den med det fullständigt kvalificerade namnet på ACR-inloggningsservern. I
.
slutet av kommandot representerar docker build-kontexten, vilket innebär att det här kommandot ska köras i mappen src där Dockerfile finns.docker build --tag "$ACR_NAME.azurecr.io/albumapp-ui" .
Skicka avbildningen till ditt ACR-register
Logga först in på Azure Container Registry.
az acr login --name $ACR_NAME
Skicka avbildningen till registret.
docker push "$ACR_NAME.azurecr.io/albumapp-ui"
Kommunicera mellan containerappar
I föregående snabbstart distribuerades album-API:et genom att skapa en containerapp och aktivera extern ingress. Genom att ange containerappens ingress till extern blev dess HTTP-slutpunkts-URL offentligt tillgänglig.
Nu kan du konfigurera klientdelsprogrammet för att anropa API-slutpunkten genom att gå igenom följande steg:
- Fråga API-programmet efter dess fullständigt kvalificerade domännamn (FQDN).
- Skicka API FQDN till som en miljövariabel så att
az containerapp create
användargränssnittsappen kan ange bas-URL:en för album-API-anropet i koden.
Användargränssnittsprogrammet använder slutpunkten som tillhandahålls för att anropa album-API:et. Följande kod är ett utdrag från koden som används i vägarna > index.js filen.
const api = axios.create({
baseURL: process.env.API_BASE_URL,
params: {},
timeout: process.env.TIMEOUT || 5000,
});
Observera hur egenskapen baseURL
hämtar sitt värde från API_BASE_URL
miljövariabeln.
Kör följande kommando för att fråga efter API-slutpunktsadressen.
API_BASE_URL=$(az containerapp show --resource-group $RESOURCE_GROUP --name $API_NAME --query properties.configuration.ingress.fqdn -o tsv)
Nu när du ställer in variabeln API_BASE_URL
med FQDN för album-API:et kan du ange den som en miljövariabel till klientdelscontainerappen.
Distribuera klientdelsprogram
Skapa och distribuera containerappen med följande kommando.
az containerapp create \
--name $FRONTEND_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $ACR_NAME.azurecr.io/albumapp-ui \
--target-port 3000 \
--env-vars API_BASE_URL=https://$API_BASE_URL \
--ingress external \
--registry-server $ACR_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
Genom att lägga till argumentet --env-vars "API_BASE_URL=https://$API_ENDPOINT"
i az containerapp create
definierar du en miljövariabel för klientdelsprogrammet. Med den här syntaxen anges miljövariabeln med namnet API_BASE_URL
till API:ets FQDN.
Utdata från az containerapp create
kommandot visar URL:en för klientdelsprogrammet.
Visa webbplats
Använd containerappens FQDN för att visa webbplatsen. Sidan liknar följande skärmbild.
Rensa resurser
Om du inte fortsätter att använda det här programmet kör du följande kommando för att ta bort resursgruppen tillsammans med alla resurser som skapats i den här snabbstarten.
Varning
Det här kommandot tar bort den angivna resursgruppen och alla resurser som ingår i den. Om det finns resurser utanför omfånget för den här självstudien i den angivna resursgruppen tas de också bort.
az group delete --name $RESOURCE_GROUP
Dricks
Har du problem? Meddela oss på GitHub genom att öppna ett problem i Azure Container Apps-lagringsplatsen.