Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikaci s více kontejnery můžete nasadit do Azure Container Apps pomocí sady Visual Studio. Obvykle nasadíte každý kontejner do samostatné instance aplikace kontejneru, ale zahrnete všechny kontejnery vaší aplikace do stejného prostředí aplikace kontejneru, abyste jim umožnili snadno a bezpečně komunikovat mezi sebou. Každou aplikaci kontejneru můžete nakonfigurovat tak, aby přijímala požadavky z prostředí kontejneru nebo aby umožňovala vnější provoz. Služba Azure Container Apps je vysoce flexibilní a konfigurovatelná, což umožňuje mnoho možných scénářů mikroslužeb a úplnou sadu pokročilých monitorovacích nástrojů. Pokud ke správě místních kontejnerových aplikací používáte Docker Compose, můžete zvážit jeho port do prostředí kontejnerové aplikace v Azure.
Tento proces zahrnuje několik kroků pomocí sady Visual Studio a webu Azure Portal. K provedení těchto akcí můžete použít také Azure CLI, ale to je nad rámec tohoto kurzu. Nejprve použijeme aplikaci, kterou jste vytvořili pomocí aplikace Vytvořit vícekontejnerovou aplikaci, a nasadíme ji pomocí procesu publikování . Visual Studio vás provede postupem vytvoření první aplikace kontejneru, prostředí aplikace kontejneru a také vytvoření registru kontejneru pro ukládání imagí kontejneru. Pak znovu spustíte proces publikování s druhou aplikací kontejneru. Konkrétně musíte zvolit stejné prostředí aplikace kontejneru v procesu publikování. Nakonec je potřeba nakonfigurovat mezipaměť Redis tak, aby fungovala se službou Azure Redis Cache. Upravíte konfigurační kód mezipaměti a znovu publikujete webové rozhraní API. Potom nakonfigurujete oprávnění k udělení přístupu spravované identity přiřazené systémem aplikace k mezipaměti.
Požadavky
- Předplatné služby Azure. Zaregistrujte si bezplatnou zkušební verzi.
- Visual Studio s nainstalovanými úlohami vývoje pro Azure a ASP.NET a webovým vývojem
- Ve složce
https://github.com/MicrosoftDocs/vs-tutorial-samplesse nachází projekt MulticontainerSample. Ukázkové řešení obsahuje dva projekty, backend webového rozhraní API a frontend ASP.NET Razor, jak jste vytvořili v jiném kurzu. Tyto dva projekty můžete také vytvořit úplně od začátku, protože se jedná o velmi jednoduché úpravy výchozích šablon podle tohoto kurzu. Kroky pro Docker Compose můžete přeskočit.
Požadavky
- Předplatné služby Azure. Zaregistrujte si bezplatnou zkušební verzi.
- Visual Studio nebo novější s nainstalovanými úlohami vývoje pro Azure a ASP.NET a webovým vývojem
- Ve složce
https://github.com/MicrosoftDocs/vs-tutorial-samplesse nachází projekt MulticontainerSample. Ukázkové řešení obsahuje dva projekty, backend webového rozhraní API a frontend ASP.NET Razor, jak jste vytvořili v jiném kurzu. Tyto dva projekty můžete také vytvořit úplně od začátku, protože se jedná o velmi jednoduché úpravy výchozích šablon podle tohoto kurzu. Kroky pro Docker Compose můžete přeskočit.
Nasazení back-endu webového rozhraní API
V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel projektu webového rozhraní API a vyberte Publikovat.
Zvolte cílovou Azure a pak vyberte Azure Container Apps.
Pokud ještě nejste přihlášení pomocí účtu přidruženého k předplatnému Azure, můžete se teď přihlásit nebo změnit tenanta, pokud potřebujete.
Na obrazovce, na které zadáte aplikaci kontejneru, vyberte Vytvořit novou a vytvořte novou aplikaci kontejneru.
Na stránce Vytvořit aplikaci kontejneru Azure zadejte podrobnosti, jako je skupina prostředků. V tomto kroku vytvoříte novou skupinu prostředků, nové prostředí kontejneru a nový registr kontejneru.
Vytvoření prostředků může chvíli trvat. Po dokončení přejděte kliknutím na tlačítko Další a přejděte k dalšímu kroku.
V dalším kroku vytvoříte registr kontejneru. Pokud vytvoříte nový registr kontejneru, zobrazí se výzva k zadání několika podrobností. Můžete zvolit stejnou oblast a skupinu prostředků jako aplikaci kontejneru.
V dalším kroku se zobrazí dotaz, jestli chcete zvolit typ sestavení kontejneru. Zvolte sadu .NET SDK, pokud nemáte Dockerfile, nebo Docker Desktop, pokud jej máte.
Pro typ nasazení zvolte Publikovat (vygenerovat soubor pubxml) a vytvořte profil publikování.
Vyberte Dokončit pro dokončení procesu publikování a vytvoření publikačního profilu. Pokud se zobrazí výzva k extra konfiguraci pro přístup k publikovanému kontejneru, zvolte Ano.
Zobrazí se stránka, která zobrazuje aktivitu v Azure a když ji zavřete, obrazovka Publikovat teď obsahuje informace o vaší aplikaci kontejneru, například adresu URL pro příchozí přenos dat do webového rozhraní API.
Kliknutím na tlačítko Publikovat publikujte do aplikace kontejneru Azure. Visual Studio požádá o vytvoření prostředků Azure a spustí proces publikování pro aplikaci kontejneru WebAPI.
Visual Studio se může pokusit načíst stránku nové aplikace kontejneru, ale v této fázi by to nemělo fungovat.
Teď, když jste publikovali jednou, jste vytvořili profil publikování (.pubxml soubor), takže nemusíte tyto kroky opakovat při příštím publikování. Stačí kliknout na tlačítko Publikovat na této obrazovce, pokud nechcete začít znovu nebo změnit některý ze zadaných prostředků Azure.
Později pomocí portálu Azure provedete několik dalších změn konfigurace Ingressu a budete konfigurovat Azure Redis Cache, ale nejprve v další části publikujete webový front-end.
Nasazení uživatelského rozhraní
Upravte soubor front-endového kódu v Index.cshtml.cs tak, aby odkazoval na novou adresu URL aplikace kontejneru webové API. Toto je název uvedený v části Název prostředku na obrazovce Publikování webového rozhraní API. Pro komunikaci typu kontejner-kontejner můžete přímo použít protokol HTTP s názvem aplikace kontejneru, aniž byste zadali plně kvalifikovaný název domény (FQDN) a číslo portu. V metodě
OnGetnahraďte stávající řádek, který nastavujeRequestUritak, aby odkazoval na název aplikace kontejneru pro webové API, jak je uvedeno v následujícím kódu.request.RequestUri = new Uri("http://<mywebapi-container-app-name>/Counter");V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel projektu pro projekt webfrontend a vyberte Publikovat. Na další obrazovce vyberte Vytvořit novou a vytvořte novou aplikaci kontejneru.
Na obrazovce Vytvořit novou aplikaci kontejneru Azure zvolte stejnou skupinu prostředků a stejné prostředí kontejneru, které jste vytvořili při publikování projektu webového rozhraní API.
Důležité! Vyberte stejný registr kontejneru, který jste vytvořili dříve.
Pro další kroky zvolte stejné možnosti jako u webového rozhraní API. Typ sestavení kontejneru je Docker Desktop a typ nasazení je Publish (generuje soubor pubxml).
Vyberte Dokončit pro dokončení procesu publikování a vytvoření publikačního profilu. Zobrazí se stránka, která ukazuje činnost v Azure, a když ji zavřete, obrazovka publikování nyní obsahuje informace o vaší aplikaci kontejneru, například adresu URL pro přístup k webové aplikaci na frontendu.
Zobrazení a konfigurace aplikací typu kontejner na webu Azure Portal
- Přihlaste se k portálu Azure.
- Vyhledejte kontejnerové aplikace a vyhledejte ty, které jste právě vytvořili.
- Zvolte Ingress a nakonfigurujte následující možnosti:
Na obrazovce Příchozí přenos dat nastavte příchozí provoz na Omezené na prostředí Container Apps. To znamená, že požadavky může posílat pouze webfrontend. I visual Studio nebude mít přístup k této službě, například po dokončení procesu publikování a Visual Studio se pokusí načíst stránku, místo přístupu ke službě se v prohlížeči zobrazí chyba. Očekává se to.
Zkontrolujte port příchozího přenosu dat (měl by to být 8080). Používáte HTTP pro volání webového rozhraní API a můžete přímo odkazovat na aplikaci kontejneru podle názvu v identifikátoru URI požadavku. Plně kvalifikovaný název domény (FQDN) vygenerovaný aplikacemi Azure Container Apps používá URL ve formátu HTTPS (jak je znázorněno v sadě Visual Studio na obrazovce Publikovat), ale interní provoz jej může obejít.
U příchozího přenosu dat webového front-endu můžete přijmout výchozí hodnoty. Cílový port je 8080, protože Ingress zpracovává všechny požadavky bezpečně pomocí plně kvalifikovaného názvu domény a HTTPS (nebo přesměrování HTTP na HTTPS) a přesměrovává je na Webfrontend pomocí protokolu HTTP na portu kontejneru 8080.
Vytvoření azure Redis Cache
Pomocí těchto kroků vytvořte Azure Redis Cache ve stejné skupině prostředků jako kontejnerové aplikace.
Na webu Azure Portal otevřete dříve vytvořenou aplikaci kontejneru webového rozhraní API. Otevřete obrazovku Konektor služby a vyberte Vytvořit. Zobrazí se oddíl Vytvořit připojení .
Na obrazovce Vytvořit připojení zadejte typ služby jako Mezipaměť pro Redis a zvolte Vytvořit nový a vytvořte novou mezipaměť Redis.
Zvolte mezipaměť nebo postupujte podle odkazu Vytvořit nový a vytvořte mezipaměť. Pokud vytvoříte novou mezipaměť, možná se budete muset vrátit do kontejnerové aplikace a konektoru Service Connector a zopakovat předchozí kroky a vytvořit připojení.
Pro databázi zvolte 0 a vytvořte první čísloovanou databázi pro tuto mezipaměť.
Přechod na kartu Ověřování Zvolte spravovanou identitu přiřazenou systémem. Přijměte všechny ostatní výchozí hodnoty a vyberte Vytvořit. Tím se vytvoří připojení k mezipaměti.
Zpátky v části Konektor služby aplikace kontejneru webového rozhraní API obnovte stránku, abyste viděli nově připojenou mezipaměť (pokud ji již nevidíte) a zaškrtněte políčko vedle mezipaměti. Výběrem možnosti Ověřit zkontrolujte stav připojení. Uzel mezipaměti můžete rozbalit a zobrazit hodnoty proměnných prostředí pro danou mezipaměť Azure. Pro účely tohoto kurzu potřebujete jenom AZURE_REDIS_HOST, ale ostatní můžete použít v reálném kódu nebo pro kompletní konfiguraci. Hodnoty zde použijte k nastavení proměnných prostředí v souboru Dockerfile, jak je popsáno v další části, aby se webové rozhraní API mohl připojit k mezipaměti.
Další informace najdete v tématu Rychlý start: Vytvoření připojení služby pro Azure Container Apps z webu Azure Portal.
Konfigurace rolí pro spravovanou identitu
Na webu Azure Portal použijete řízení přístupu (IAM) ve službě Azure Redis Cache k udělení přístupu přispěvatele ke spravované identitě přiřazené systémem aplikace kontejneru.
- Na webu Azure Portal otevřete stránku azure Redis Cache a vyberte Řízení přístupu (IAM).
- Vyberte Přidat>Přidat přiřazení role. Otevře se stránka Přidat přiřazení role.
- Vyberte kartu Členové a zvolte spravovanou identitu.
- Zvolte Zvolit členy. Otevře se stránka Vybrat členy a vybere spravovanou identitu přiřazenou systémem.
- Vyberte Container App a zvolte aplikaci kontejneru webového rozhraní API.
- Na kartě Role zvolte Přispěvatel mezipaměti Redis.
- Vyberte Zkontrolovat a přiřadit. Systém požadavek zpracuje.
- Otevřením přiřazení rolí zobrazíte spravovanou identitu přiřazenou systémem v rámci role Přispěvatel mezipaměti Redis.
Dalším krokem je úprava konfigurace mezipaměti v klientovi webového rozhraní API tak, aby používala DefaultAzureCredential, což je doporučený způsob ověřování při použití spravované identity přiřazené systémem. Každý, kdo přistupuje k aplikaci externě, nemusí mít pro přístup k prostředkům konkrétní přiřazení rolí na úrovni uživatele prostřednictvím této formy správy identit. Další informace najdete v tématu Integrace azure Redis Cache – spravovaná identita přiřazená systémem.
Upravit projekt webového rozhraní API tak, aby odkazoval na službu Azure Redis Cache.
Než publikujete projekt webového rozhraní API pro spuštění v Azure, aktualizujte ho tak, aby odkazovali na Azure Redis Cache a mohli k němu bezpečně přistupovat pomocí spravované identity. Chcete-li to přizpůsobit, můžete upravit konfigurační kód mezipaměti v Program.cs.
Pro Azure Redis Cache nastavíte proměnnou AZURE_REDIS_HOST prostředí s informacemi o připojení a pak ji přečtete v spouštěcím kódu pro připojení k Azure Redis Cache a nakonfigurujete mezipaměť.
Používáte Azure.Identity k získání DefaultAzureCredential, který zpracovává zabezpečené ověřování pomocí spravované identity.
V projektu webového rozhraní API v sadě Visual Studio přidejte odkaz na balíčky NuGet
Azure IdentityaMicrosoft.Azure.StackExchange.Redis.Přidejte direktivy using pro balíčky, které jste právě přidali.
using Azure.Identity; using Microsoft.Azure.StackExchange.Redis;Aktualizujte konfigurační kód pro Redis Cache. Odstraňte starý kód a nahraďte ho následujícím kódem. Komentáře si můžete prohlédnout později a odkomentovat libovolný volitelný kód tak, aby vyhovoval vašim pokročilejším scénářům.
// 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));Metoda ověřování, kterou jste nastavili dříve při vytváření připojení k mezipaměti, je spravovaná identita přiřazená systémem, takže tento kód je konzistentní s danou volbou. Pokud chcete použít i jiné metody ověřování, musíte v kódu udělat změny. Viz Integrace Azure Redis Cache – systémem přiřazená spravovaná identita.
Sestavte projekt webového rozhraní API, abyste ověřili, že nedošlo k žádným chybám.
Pokud máte Dockerfile, aktualizujte jeho základní fázi a definujte proměnnou prostředí
AZURE_REDIS_HOST. Hostitele získáte z portálu Azure, když vytvoříte Azure Redis Cache, nebo v části Konektor služby na portálu na stránce aplikace kontejneru Web API (viz předchozí část).ENV AZURE_REDIS_HOST mycache.redis.cache.windows.net(Volitelné) V proměnných prostředí můžete definovat další možnosti konfigurace, a například
AZURE_REDIS_PORT, což je obvykle 6380. Pro zjednodušení je tato hodnota pevně zakódovaná místo použití proměnné prostředí. Můžete také chtít nastavitASPNETCORE_ENVIRONMENTna vývoj.Pokud používáte typ sestavení kontejneru sady .NET SDK (bez souboru Dockerfile), můžete proměnnou prostředí nastavit v launchSettings.json v části
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" } }Jste připraveni tyto změny publikovat a ověřit. Na obrazovce Publikovat vyberte tlačítko Publikovat . Visual Studio se pokusí načíst stránku, ale selže, protože aplikace kontejneru webového rozhraní API není přístupná pro požadavky mimo prostředí kontejnerové aplikace.
Než budete moct aplikaci s Azure Redis Cache spustit, musíte nastavit spravovanou identitu se správnými oprávněními pro přístup k mezipaměti.
Otestování aplikace
Vraťte se na obrazovku Publikovat v projektu Webfrontend a klikněte na odkaz na URL Webfrontend. Při aktualizaci stránky by se měla zobrazit aplikace Webfrontend s čítačem, který se aktualizuje.
Návod
Azure Container Apps se snaží maximalizovat dobu provozu vašich služeb. Pokud se něco nepodaří s některou ze služeb tak, že selže její kontrola stavu, Azure Container Apps ji nenastaví jako aktivní revizi a nebude ji používat k obsluze požadavků. V důsledku toho můžete během procesu vývoje a testování občas zjistit, že se nejnovější změny, které jste provedli, neprojeví na živém webu. Na webu Azure Portal vyberte Revize a repliky a zobrazte stav nejnovější publikované revize. Odtud můžete otevřít protokoly, které vám pomůžou tento problém vyřešit.
Gratulujeme! Úspěšně jste publikovali vícekontejnerovou aplikaci do Azure Container Apps a ověřili jste komunikaci mezi kontejnery a použitím služby Azure Redis Cache v rámci aplikace.
Vyčistěte zdroje
Pokud chcete vyčistit prostředky, které jste vytvořili v tomto kurzu, přejděte na web Azure Portal a odstraňte skupinu prostředků, která obsahuje aplikace kontejnerů, mezipaměť a registr kontejnerů.
Další kroky
- Přečtěte si další informace o Azure Container Apps.
- Seznamte se s technologií .NET Aspire, která vám pomůže snadněji vyvíjet složité kontejnerizované aplikace a služby, které se integrují s různorodými prostředky v Azure. .NET Aspire podporuje orchestraci času vývoje, standardizovanou integraci s řadu služeb a podporu nástrojů pomocí šablon projektů sady Visual Studio.
- Můžete také použít rozhraní příkazového řádku Azure (CLI) pro práci s vašimi aplikacemi kontejnerů. Nainstalujte Azure CLI a začněte pracovat s Azure Container Apps pomocí příkazů az containerapp up.