Dela via


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.

Skärmbild av UI-mikrotjänst i albumlistan.

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

  1. 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.

  2. 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 ../..
    
  3. 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.

  4. Ä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 .

  1. 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

  1. Logga först in på Azure Container Registry.

    az acr login --name $ACR_NAME
    
  2. 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 createdefinierar 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.

Skärmbild av UI-mikrotjänst i albumlistan.

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.

Nästa steg