Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan distribuera en app med flera containrar till Azure Container Apps med hjälp av Visual Studio. Vanligtvis distribuerar du varje container till en separat containerappinstans, men du inkluderar alla din apps containrar i samma containerappsmiljö så att de enkelt och säkert kan kommunicera med varandra. Du kan konfigurera varje containerapp så att den antingen accepterar begäranden från containermiljön eller tillåter extern trafik. Azure Container Apps är mycket flexibelt och konfigurerbart, vilket möjliggör många möjliga mikrotjänstscenarier och en fullständig uppsättning avancerade övervakningsverktyg. Om du använder Docker Compose för att hantera lokala containerappar kan du försöka portera den till en containerappmiljö i Azure.
Processen omfattar några steg med hjälp av Visual Studio och Azure-portalen. Du kan också använda Azure CLI för att utföra dessa åtgärder, men det ligger utanför omfånget för den här självstudien. Först använder vi den app som du skapade med hjälp av appen Skapa en app med flera containrar och distribuerar den med publiceringsprocessen. Visual Studio vägleder dig genom stegen för att skapa den första containerappen, en containerappmiljö, samt skapa ett containerregister för att lagra containeravbildningarna. Sedan kör du publiceringsprocessen igen med den andra containerappen. Du måste specifikt välja samma containerappmiljö i publiceringsprocessen. Slutligen måste du konfigurera Redis-cachen så att den fungerar med Azure Redis Cache-tjänsten. Du ändrar cachekonfigurationskoden och publicerar webb-API:et igen. Sedan konfigurerar du behörigheterna för att bevilja appens systemtilldelade hanterade identitet åtkomst till cachen.
Förutsättningar
- Ett Azure-abonnemang. Registrera dig för en kostnadsfri utvärderingsversion.
 - Visual Studio med arbetsbelastningar för Azure-utveckling och ASP.NET och webbutveckling installerade.
 - MulticontainerSample-projektet vid 
https://github.com/MicrosoftDocs/vs-tutorial-samplesi docker-mappen. Exempellösningen innehåller två projekt, webb-API-serverdelen och ASP.NET Razor-klientdelen, som du skapade i en annan självstudie. Du kan också skapa de två projekten från grunden, eftersom de är mycket enkla ändringar av standardmallarna, genom att följa handledningen. Du kan hoppa över Docker Compose-stegen. 
Förutsättningar
- Ett Azure-abonnemang. Registrera dig för en kostnadsfri utvärderingsversion.
 - Visual Studio eller senare med Azure-utvecklings- och ASP.NET- och webbutvecklingsarbetsbelastningar installerade.
 - MulticontainerSample-projektet vid 
https://github.com/MicrosoftDocs/vs-tutorial-samplesi docker-mappen. Exempellösningen innehåller två projekt, webb-API-serverdelen och ASP.NET Razor-klientdelen, som du skapade i en annan självstudie. Du kan också skapa de två projekten från grunden, eftersom de är mycket enkla ändringar av standardmallarna, genom att följa handledningen. Du kan hoppa över Docker Compose-stegen. 
Driftsätt backend för webb-API
Högerklicka på projektnoden webb-API i Solution Explorer och välj Publicera.
Välj mål-Azure och välj sedan Azure Container Apps.
Om du inte redan är inloggad med ett konto som är associerat med en Azure-prenumeration kan du logga in nu eller ändra klientorganisationen om du behöver det.
På skärmen där du anger en containerapp väljer du Skapa ny för att skapa en ny containerapp.
På sidan Skapa Azure Container-app anger du information, till exempel resursgruppen. I det här steget skapar du en ny resursgrupp, en ny containermiljö och ett nytt containerregister.
Det kan ta en liten stund att skapa resurserna. När den är klar klickar du på Nästa för att gå vidare till nästa steg.
I nästa steg skapar du ett containerregister. Om du skapar ett nytt containerregister uppmanas du att ange några detaljer. Du kan välja samma region och resursgrupp som containerappen.
I nästa steg uppmanas du att välja typ av containerbygge. Välj .NET SDK om du inte har någon Dockerfile eller Docker Desktop om du har det.
Som distributionstyp väljer du Publicera (generera pubxml-fil) för att skapa en publiceringsprofil.
Välj Slutför för att slutföra publiceringsprocessen och skapa en Publiceringsprofil. Om du ser en fråga om extra konfiguration för att komma åt den publicerade containern väljer du Ja.
              
              
            
Du ser en sida som visar aktiviteten i Azure, och när du stänger den har skärmen Publicera nu containerappens information, till exempel URL:en för ingress till webb-API:et.
Klicka på knappen Publicera för att publicera till Azure-containerappen. Visual Studio begär att Azure-resurserna skapas och startar publiceringsprocessen för WebAPI-containerappen.
Visual Studio kan försöka läsa in sidan för den nya containerappen, men detta förväntas inte fungera i det här skedet.
Nu när du har publicerat en gång har du skapat en Publicera profil (.pubxml fil), så du behöver inte upprepa de här stegen nästa gång du publicerar. Klicka bara på knappen Publicera på den här skärmen om du inte vill börja om eller ändra någon av de Azure-resurser som du har angett.
Senare använder du Azure-portalen för att göra ytterligare konfigurationsändringar för ingressen och för att stödja Azure Redis Cache, men först publicerar du webbklientdelen i nästa avsnitt.
Distribuera frontend
Ändra klientdelskodfilen i Index.cshtml.cs för att referera till den nya URL:en för webb-API-containerappen. Det här är namnet som visas under Resursnamn på skärmen Publicera webb-API. För kommunikation mellan containrar kan du direkt använda HTTP med namnet på containerappen, utan att ange ett fullständigt domännamn (FQDN) och portnummer.
OnGetI -metoden ersätter du den befintliga raden som angerRequestUriatt referera till namnet på webb-API-containerappen, som i följande kod.request.RequestUri = new Uri("http://<mywebapi-container-app-name>/Counter");Högerklicka på projektnoden för Webfrontend-projektet i Solution Explorer och välj Publicera. På nästa skärm väljer du Skapa ny för att skapa en ny containerapp.
På skärmen Skapa ny Azure-containerapp väljer du samma resursgrupp och samma containermiljö som du skapade när du publicerade webb-API-projektet.
Viktigt! Välj samma containerregister som du skapade tidigare.
Välj samma alternativ som för webb-API:et för de andra stegen. Containerbyggtypen är Docker Desktop och distributionstypen är Publish (genererar pubxml-fil).
Välj Slutför för att slutföra publiceringsprocessen och skapa en Publiceringsprofil. Du ser en sida som visar aktiviteten i Azure, och när du stänger sidan, har publiceringsskärmen nu information om din containerapp, såsom URL:en för ingång till Webfrontend-appen.
Visa och konfigurera containerapparna i Azure-portalen
- Logga in på Azure-portalen.
 - Sök efter containerappar och lokalisera de som du just skapade.
 - Välj Ingress och konfigurera följande alternativ: 
På skärmen Ingress anger du Inkommande trafik som Begränsad till Container Apps-miljö. Det innebär att endast Webfrontend kan skicka begäranden. Inte ens Visual Studio kommer att kunna komma åt den här tjänsten, till exempel när du slutför publiceringsprocessen, och Visual Studio försöker läsa in sidan, får du ett fel i webbläsaren i stället för att komma åt tjänsten. Detta är förväntat.
Kontrollera ingressporten (den ska vara 8080). Du använder HTTP för webb-API-anropet och du kan referera direkt till containerappen efter namn i begärande-URI:n. Det fullständigt kvalificerade domännamnet (FQDN) som genereras av Azure Container-appar använder en HTTPS-URL (som visas i Visual Studio på publiceringsskärmen ), men intern trafik kan kringgå detta.
För Webfrontend-ingressen kan du acceptera standardvärdena. Målporten är 8080 eftersom Ingress hanterar alla begäranden på ett säkert sätt med hjälp av FQDN och HTTPS (eller HTTP till HTTPS-omdirigering) och vidarebefordrar dem till webfrontend med http på containerport 8080.
 
Skapa Azure Redis Cache
Följ de här stegen för att skapa en Azure Redis Cache i samma resursgrupp som containerapparna.
Öppna webb-API-containerappen som du skapade tidigare i Azure-portalen. Öppna skärmen Service Connector och välj Skapa. Avsnittet Skapa anslutning visas.
På skärmen Skapa anslutning anger du Tjänsttyp som Cache for Redis och väljer Skapa ny för att skapa en ny Redis-cache.
Välj en cache eller följ länken Skapa ny för att skapa en cache. Om du skapar en ny cache kan du behöva gå tillbaka till containerappen och Service Connector och upprepa föregående steg för att skapa anslutningen.
För databasen väljer du "0" för att skapa den första numrerade databasen för den här cachen.
Gå till fliken Autentisering . Välj Systemtilldelad hanterad identitet. Acceptera alla andra standardvärden och välj Skapa. Detta skapar anslutningen till cachen.
I avsnittet Service Connector i webb-API-containerappen uppdaterar du för att se den nyligen anslutna cachen (om du inte redan ser den) och markerar kryssrutan bredvid cacheminnet. Välj Verifiera för att kontrollera anslutningens status. Du kan expandera cachenoden för att se värdena för miljövariablerna för azure-cachen. I den här självstudien behöver du bara AZURE_REDIS_HOST, men du kan använda de andra i verklig kod eller för en mer fullständig konfiguration. Använd värdena här för att ange miljövariablerna i Dockerfile, enligt beskrivningen i nästa avsnitt, så att webb-API:et kan ansluta till cachen.
Mer information finns i Snabbstart: Skapa en tjänstanslutning för Azure Container Apps från Azure-portalen.
Konfigurera roller för hanterad identitet
I Azure-portalen använder du Åtkomstkontroll (IAM) i Azure Redis Cache för att ge deltagare åtkomst till containerappens systemtilldelade hanterade identitet.
- Öppna sidan för Azure Redis Cache i Azure-portalen och välj Åtkomstkontroll (IAM).
 - Välj Lägg till>Lägg till rolltilldelning. Sidan Lägg till rolltilldelning öppnas.
 - Välj fliken Medlemmar och välj hanterad identitet.
 - Välj Välj medlemmar. Sidan Välj medlemmar öppnas och väljer Systemtilldelad hanterad identitet.
 - Välj ContainerApp och välj webb-API-containerappen.
 - På fliken Roll väljer du Redis Cache-deltagare.
 - Välj Granska och tilldela. Systemet bearbetar begäran.
 - Öppna Rolltilldelningar för att se den systemtilldelade hanterade identiteten under rollen Redis Cache-bidragsgivare.
 
Nästa steg är att ändra cachekonfigurationen i webb-API-klienten så att den använder DefaultAzureCredential, vilket är det rekommenderade sättet att autentisera när du använder den systemtilldelade hanterade identiteten. Alla som kommer åt programmet externt behöver inte ha specifika rolltilldelningar på användarnivå för att få åtkomst till resurserna via den här formen av identitetshantering. Mer information finns i Integrera Azure Redis Cache – Systemtilldelad hanterad identitet.
Ändra webb-API-projektet så att det refererar till Azure Redis Cache-tjänsten
Innan du publicerar webb-API-projektet som ska köras i Azure uppdaterar du det så att det refererar till Azure Redis Cache och använder en hanterad identitet för att komma åt det på ett säkert sätt. För att hantera detta kan du ändra cachekonfigurationskoden i Program.cs.
För Azure Redis Cache anger du en miljövariabel AZURE_REDIS_HOST med anslutningsinformationen och läser den sedan i startkoden för att ansluta till Azure Redis Cache och konfigurera cacheminnet.
Du använder Azure.Identity för att hämta den DefaultAzureCredential som hanterar säker autentisering med din hanterade identitet.
I Visual Studio, i webb-API-projektet, lägger du till en referens till NuGet-paketen
Azure IdentityochMicrosoft.Azure.StackExchange.Redis.Lägg till 'using'-direktiv för de paket som du precis har lagt till.
using Azure.Identity; using Microsoft.Azure.StackExchange.Redis;Uppdatera konfigurationskoden för Redis Cache. Ta bort den gamla koden och ersätt den med följande kod. Du kan granska kommentarerna senare och avkommentera valfri kod som passar dina egna mer avancerade scenarier.
// Check the environment variable for the Redis cache host name var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST"); if (string.IsNullOrEmpty(cacheHostName)) { throw new InvalidOperationException("The environment variable 'AZURE_REDIS_HOST' is not set."); } var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380"); // For system-assigned identity. // In the Azure portal, we need to set up Redis service to grant Contributor access to the system-assigned identity // for the container app that hosts this Web API service. await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential()); var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions); builder.Services.AddStackExchangeRedisCache(options => { options.ConfigurationOptions = configurationOptions; options.InstanceName = "SampleInstance"; }); // Uncomment the following line if you need to use the ConnectionMultiplexer directly // (for example, for advanced Redis operations like Pub/Sub or working with Redis data structures). // builder.Services.AddSingleton<IConnectionMultiplexer>(sp => // ConnectionMultiplexer.Connect(configurationOptions));Den autentiseringsmetod som du angav tidigare när du skapade cacheanslutningen är systemtilldelad hanterad identitet, så koden här överensstämmer med det valet. Om du också vill använda andra autentiseringsmetoder måste du göra ändringar i koden här. Se Integrera Azure Redis Cache – systemtilldelad hanterad identitet.
Skapa webb-API-projektet för att kontrollera att det inte finns några fel.
Om du har en Dockerfile uppdaterar du bassteget för Dockerfile för att definiera miljövariabeln
AZURE_REDIS_HOST. Du får värden från Azure-portalen när du skapar Azure Redis Cache eller från avsnittet Service Connector på sidan för webb-API:ets containerapp i portalen (se föregående avsnitt).ENV AZURE_REDIS_HOST mycache.redis.cache.windows.net(Valfritt) Du kan definiera andra konfigurationsalternativ i miljövariabler, till exempel
AZURE_REDIS_PORT6380. För enkelhetens skull är det här värdet hårdkodat i stället för att använda en miljövariabel. Du kanske också vill ställa inASPNETCORE_ENVIRONMENTpå Utveckling.Om du använder containerbyggtypen .NET SDK (utan Dockerfile) kan du ange miljövariabeln i launchSettings.json under
profiles > http."http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "http://localhost:5107", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "AZURE_REDIS_HOST": "cache11.redis.cache.windows.net" } }Du är redo att publicera och verifiera ändringarna. Välj knappen Publicera på skärmen Publicera . Visual Studio försöker läsa in sidan, men det misslyckas eftersom webb-API-containerappen inte är tillgänglig för begäranden utanför containerappmiljön.
Innan du kan köra programmet med Azure Redis Cache måste du konfigurera den hanterade identiteten med rätt behörighet för att få åtkomst till cacheminnet.
Testa programmet
Gå tillbaka till skärmen Publicera i projektet Webfrontend och klicka på länken på webbadressen till Webfrontend. Du bör se Webfrontend-appen visas med räknaren som uppdateras varje gång du laddar om sidan.
Tips/Råd
Azure Container Apps försöker maximera drifttiden för dina tjänster. Om något går fel med någon av tjänsterna, så att den misslyckas med en hälsoavsökning, ställer Azure Container Apps inte in den som aktiv revision och använder den för att hantera begäranden. Under utveckling och testning kanske du ibland upptäcker att de senaste ändringarna som du har gjort inte återspeglas på livewebbplatsen. I Azure-portalen väljer du Revisioner och repliker för att visa status för den senaste publicerade revisionen. Därifrån kan du öppna loggar för att felsöka problemet.
Grattis! Du har publicerat en multicontainer-app till Azure Container Apps och verifierat kommunikationen mellan containrar och användningen av Azure Redis Cache i appen.
Rensa resurser
Om du vill rensa de resurser som du skapade under den här självstudien går du till Azure-portalen och tar bort resursgruppen som innehåller containerapparna, cachen och containerregistret.
Nästa steg
- Läs mer om Azure Container Apps.
 - Lär dig mer om .NET Aspire, en teknik som hjälper dig att enklare utveckla komplexa containerbaserade appar och tjänster som integreras med olika resurser i Azure. .NET Aspire stöder dirigering av utvecklingstid, standardiserad integrering med en matris med tjänster samt verktygsstöd med Visual Studio-projektmallar.
 - Du kan också använda Azures kommandoradsgränssnitt (CLI) för att arbeta med dina containerappar. Installera Azure CLI och kom igång med Azure Container Apps med hjälp av Azure CLI-kommandona genom att följa Distribuera Azure Container Apps med kommandot az containerapp up.