Megosztás:


Oktatóanyag: Többtárolós alkalmazás üzembe helyezése az Azure Container Appsben

Többtárolós alkalmazást a Visual Studióval helyezhet üzembe az Azure Container Appsben . Általában minden tárolót külön tárolóalkalmazás-példányban helyez üzembe, de az alkalmazás összes tárolóját ugyanabban a tárolóalkalmazás-környezetben helyezi el, hogy könnyen és biztonságosan kommunikálhassanak egymással. Az egyes tárolóalkalmazásokat konfigurálhatja úgy, hogy fogadjanak kéréseket a tárolókörnyezeten belülről, vagy engedélyezze a külső forgalmat. Az Azure Container Apps rendkívül rugalmas és konfigurálható, ami számos lehetséges mikroszolgáltatás-forgatókönyvet és fejlett monitorozási eszközök teljes készletét teszi lehetővé. Ha a Docker Compose-t használja a helyszíni tárolóalkalmazások kezeléséhez, érdemes lehet azt egy Azure-beli tárolóalkalmazás-környezetbe portolni.

A folyamat néhány lépésből áll a Visual Studio és az Azure Portal használatával. Az Azure CLI-vel is végrehajthatja ezeket a műveleteket, de ez túlmutat az oktatóanyag hatókörén. Először a többtárolós alkalmazás létrehozásával létrehozott alkalmazást használjuk, majd üzembe helyezzük a közzétételi folyamattal. A Visual Studio végigvezeti az első tárolóalkalmazás, egy tárolóalkalmazás-környezet létrehozásának lépésein, valamint egy tárolóregisztrációs adatbázis létrehozásán a tárolólemezképek tárolásához. Ezután újra végigfut a közzétételi folyamaton a másik tárolóalkalmazással. A közzétételi folyamat során kifejezetten ugyanazt a tárolóalkalmazás-környezetet kell választania. Végül konfigurálnia kell a Redis gyorsítótárat, hogy működjön az Azure Redis Cache szolgáltatással. Módosíthatja a gyorsítótár konfigurációs kódját, és újból közzéteheti a webes API-t. Ezután konfigurálja az engedélyeket, hogy hozzáférést biztosítson az alkalmazás rendszer által hozzárendelt felügyelt identitásának a gyorsítótárhoz.

Előfeltételek

  • Egy Azure-előfizetés. Regisztráljon egy ingyenes próbaverzióra.
  • Visual Studio az Azure fejlesztési és ASP.NET és webfejlesztési telepített munkaterhelésekkel.
  • A MulticontainerSample projekt https://github.com/MicrosoftDocs/vs-tutorial-samples a Docker mappában. A mintamegoldás két projektet tartalmaz: a Web API háttérrendszerét és az ASP.NET Razor felhasználói felületét, ahogyan egy másik oktatóanyagban létrehozta. A két projektet az alapoktól is létrehozhatja, mivel ezek az alapértelmezett sablonok nagyon egyszerű módosításai az oktatóanyag követésével. Kihagyhatja a Docker Compose lépéseit.

Előfeltételek

  • Egy Azure-előfizetés. Regisztráljon egy ingyenes próbaverzióra.
  • Visual Studio vagy újabb verzió az Azure fejlesztés és ASP.NET és webfejlesztés munkaállomásokkal telepítve.
  • A MulticontainerSample projekt https://github.com/MicrosoftDocs/vs-tutorial-samples a Docker mappában. A mintamegoldás két projektet tartalmaz: a Web API háttérrendszerét és az ASP.NET Razor felhasználói felületét, ahogyan egy másik oktatóanyagban létrehozta. A két projektet az alapoktól is létrehozhatja, mivel ezek az alapértelmezett sablonok nagyon egyszerű módosításai az oktatóanyag követésével. Kihagyhatja a Docker Compose lépéseit.

A Webes API háttérrendszerének üzembe helyezése

  1. A Megoldáskezelőben kattintson a jobb gombbal a Webes API projektcsomópontra, és válassza a Közzététel lehetőséget.

  2. Válassza ki a cél Azure-t, majd válassza az Azure Container Apps lehetőséget.

  3. Ha még nem jelentkezett be egy Azure-előfizetéshez társított fiókkal, most bejelentkezhet, vagy szükség esetén módosíthatja a bérlőt.

  4. Azon a képernyőn, amelyen tárolóalkalmazást ad meg, válassza az Új létrehozása lehetőséget egy új tárolóalkalmazás létrehozásához.

    Képernyőkép a közzétételi folyamat képernyőről, amelyen egy meglévő tárolóalkalmazást ad meg, vagy újat hoz létre a Webes API szolgáltatáshoz.

  5. Az Azure Container alkalmazás létrehozása lapon adja meg az olyan részleteket, mint az erőforráscsoport. Ehhez a lépéshez létre kell hoznia egy új erőforráscsoportot, egy új tárolókörnyezetet és egy új tárolóregisztrációs adatbázist.

    Képernyőkép a közzétételi folyamat képernyőről, amelyen új tárolóalkalmazást hoz létre.

    Az erőforrások létrehozása eltarthat egy kis ideig. Ha befejeződött, a Tovább gombra kattintva lépjen a következő lépésre.

  6. A következő lépésben létrehoz egy tárolóregisztrációs adatbázist. Ha új tárolóregisztrációs adatbázist hoz létre, a rendszer néhány részletet kér. Ugyanazt a régiót és erőforráscsoportot választhatja ki, mint a tárolóalkalmazás.

  7. A következő lépés arra kéri, hogy válassza ki a tároló buildtípusát. Válassza a .NET SDK-t , ha nem rendelkezik Dockerfile-nal, vagy ha igen, a Docker Desktopot .

    A tároló buildtípusának kiválasztását bemutató képernyőkép, amelyen a Docker Desktop van kiválasztva.

  8. Az üzembe helyezési típushoz válassza a Közzététel (pubxml-fájl létrehozása) lehetőséget a közzétételi profil létrehozásához.

    Képernyőkép az üzembe helyezés típusának kiválasztásáról, és a közzététel lehetősége egy pubxml-fájlban kiválasztva.

  9. Válassza a Befejezés lehetőséget a közzétételi folyamat befejezéséhez, és hozzon létre egy közzétételi profilt. Ha a közzétett tároló eléréséhez további konfigurációra vonatkozó kérés jelenik meg, válassza az Igen lehetőséget.

    Kérje meg, hogy adjon-e rendszergazdai felhasználói hozzáférést.

    Megjelenik egy lap, amely megjeleníti a tevékenységet az Azure-ban, és amikor bezárja, a Közzététel képernyőn már elérhetők a tárolóalkalmazás adatai, például a webes API-ba való bejövő forgalom URL-címe.

    Képernyőkép a Közzététel képernyőről a közzétételi folyamat befejezése után.

    Kattintson a Közzététel gombra az Azure-tárolóalkalmazásban való közzétételhez. A Visual Studio kéri az Azure-erőforrások létrehozását, és elindítja a WebAPI-tárolóalkalmazás közzétételi folyamatát.

    Előfordulhat, hogy a Visual Studio megpróbálja betölteni az új tárolóalkalmazás lapját, de ez jelenleg nem fog működni.

Most, hogy egyszer közzétette, létrehozott egy Közzétételi profilt (.pubxml fájlt), így a következő közzétételkor nem kell megismételnie ezeket a lépéseket. Csak kattintson a képernyőn a Közzététel gombra, hacsak nem szeretné újrakezdeni, vagy módosítani szeretné a megadott Azure-erőforrásokat.

Később az Azure Portal használatával további konfigurációs módosításokat hajthat végre az Ingresshez és az Azure Redis Cache támogatásához, de először a következő szakaszban közzéteszi a webes elülső végpontot.

A frontend üzembe helyezése

  1. Módosítsa a frontend kódfájlt Index.cshtml.cs, hogy hivatkozzon a Web API konténeralkalmazás új URL-címére. Ez az erőforrásnév alatt látható név a Webes API Közzététel képernyőjén. Tároló-tároló közötti kommunikációhoz a HTTP-t közvetlenül használhatja a tárolóalkalmazás nevével, anélkül, hogy megadnál egy teljes tartománynevet (FQDN) és portszámot. A OnGet metódusban cserélje le azt a meglévő sort, amely a RequestUri-t a web API-tárolóalkalmazás nevére utal, ahogyan a következő kódban látható.

     request.RequestUri = new Uri("http://<mywebapi-container-app-name>/Counter");
    
    
  2. A Megoldáskezelőben kattintson a jobb gombbal a webfrontend projekt projektcsomópontjára, és válassza a Közzététel lehetőséget. A következő képernyőn válassza az Új létrehozása lehetőséget egy új tárolóalkalmazás létrehozásához.

  3. Az Új Azure-tárolóalkalmazás létrehozása képernyőn válassza ki ugyanazt az erőforráscsoportot és ugyanazt a tárolókörnyezetet, amelyet a Web API-projekt közzétételekor hozott létre.

    Képernyőkép a Közzétételi folyamat képernyőről, amelyen meg kell adnia egy meglévő tárolót, vagy újat kell létrehoznia a Webfrontend számára.

  4. Fontos! Válassza ki ugyanazt a tárolóregisztrációs adatbázist, amelyet korábban létrehozott.

    Képernyőkép a közzétételi folyamat azon szakaszáról, ahol létrehozza a Webfrontend tárolóalkalmazást, és győződjön meg róla, hogy ugyanazt a tárolóregisztrációt választja, mint amelyet korábban létrehozott.

  5. A többi lépéshez válassza ki ugyanazokat a beállításokat, mint a webes API-hoz. A tároló buildtípusa a Docker Desktop, az üzembehelyezési típus pedig a Publish (pubxml-fájl létrehozása).

  6. Válassza a Befejezés lehetőséget a közzétételi folyamat befejezéséhez, és hozzon létre egy közzétételi profilt. Megjelenik egy lap, amely megjeleníti a tevékenységet az Azure-ban, és amikor bezárja, a közzétételi képernyő már tartalmazza a tárolóalkalmazás adatait, például a webfrontend alkalmazásba való bejövő forgalom URL-címét.

A tárolóalkalmazások megtekintése és konfigurálása az Azure Portalon

  1. Jelentkezzen be az Azure portálra.
  2. Keressen tárolóalkalmazásokat, és keresse meg az imént létrehozott alkalmazásokat.
  3. Válassza a Bejövő forgalom lehetőséget, és konfigurálja a következő beállításokat:
    1. A Bejövő forgalom képernyőn állítsa be a bejövő forgalmata Container Apps-környezetre korlátozott értékre. Ez azt jelenti, hogy csak a Webfrontend küldhet kéréseket. Még a Visual Studio sem fogja tudni elérni ezt a szolgáltatást, például amikor befejezi a közzétételi folyamatot, és a Visual Studio megpróbálja betölteni az oldalt, a szolgáltatás elérése helyett hibaüzenet jelenik meg a böngészőben. Ez várható.

    2. Ellenőrizze a bejövő portot (8080-nak kell lennie). HTTP-t használ a webes API-híváshoz, és közvetlenül hivatkozhat a tárolóalkalmazásra név szerint a kérelem URI-jában. Az Azure Container Apps által létrehozott teljes tartománynév (FQDN) HTTPS URL-címet használ (a Visual Studióban a Közzététel képernyőn látható módon), de ezt a belső forgalom megkerülheti.

    3. A Webfrontendre érkező forgalom esetében elfogadhatja az alapértelmezéseket. A célport 8080, mert az Ingress az összes kérést biztonságosan kezeli teljesen minősített tartománynévvel (FQDN) és HTTPS-sel (vagy HTTP-ről HTTPS-re történő átirányítással), és továbbítja őket a Webfrontend felé a 8080-as konténerporton keresztül HTTP használatával.

Az Azure Redis Cache létrehozása

Az alábbi lépéseket követve hozzon létre egy Azure Redis Cache-gyorsítótárat ugyanabban az erőforráscsoportban, mint a tárolóalkalmazások.

  1. Az Azure Portalon nyissa meg a korábban létrehozott Web API-tárolóalkalmazást. Nyissa meg a Service Connector képernyőt, és válassza a Létrehozás lehetőséget. Megjelenik a Kapcsolat létrehozása szakasz.

  2. A Kapcsolat létrehozása képernyőn adja meg a Szolgáltatás típusáta Redis gyorsítótáraként, majd az Új létrehozása gombra kattintva hozzon létre egy új Redis-gyorsítótárat.

    Képernyőkép a Service Connector képernyőről a Web API tárolóalkalmazásban.

  3. Válasszon egy gyorsítótárat, vagy kövesse az Új létrehozása hivatkozást a gyorsítótár létrehozásához. Ha új gyorsítótárat hoz létre, előfordulhat, hogy vissza kell térnie a tárolóalkalmazáshoz és a Service Connectorhoz, és meg kell ismételnie az előző lépéseket a kapcsolat létrehozásához.

  4. Az adatbázis esetében válassza a "0" lehetőséget a gyorsítótár első számozott adatbázisának létrehozásához.

  5. Lépjen a Hitelesítés lapra. Válassza a rendszer által hozzárendelt felügyelt identitást. Fogadja el az összes többi alapértelmezett beállítást, és válassza a Létrehozás lehetőséget. Ez létrehozza a kapcsolatot a gyorsítótárral.

  6. Térjen vissza a Web API Service Connector szekciójába, és frissítsen az újonnan csatlakoztatott gyorsítótár megjelenítéséhez, (ha még nem látja), és jelölje be a gyorsítótár melletti jelölőnégyzetet. Válassza az Ellenőrzés lehetőséget a kapcsolat állapotának ellenőrzéséhez. A gyorsítótárcsomópont kibontásával megtekintheti az adott Azure-gyorsítótár környezeti változóinak értékeit. Az oktatóanyag alkalmazásában csak AZURE_REDIS_HOST kell, de a többit valós kódban vagy teljesebb konfigurációhoz használhatja. Az itt található értékekkel beállíthatja a Környezeti változókat a Dockerfile-ban a következő szakaszban leírtak szerint, hogy a Web API csatlakozni tud a gyorsítótárhoz.

További információ : Rövid útmutató: Szolgáltatáskapcsolat létrehozása az Azure Container Appshez az Azure Portalról.

Szerepkörök konfigurálása felügyelt identitáshoz

Az Azure Portalon az Azure Redis Cache Hozzáférés-vezérlés (IAM) használatával biztosít hozzáférést a közreműködőnek a tárolóalkalmazás rendszer által hozzárendelt felügyelt identitásához.

  1. Az Azure Portalon nyissa meg az Azure Redis Cache lapját, és válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
  2. Válassza a Hozzáadás>Szerepkör-hozzárendelés hozzáadása lehetőséget. Megnyílik a Szerepkör-hozzárendelés hozzáadása oldal.
  3. Válassza a Tagok lapot, és válassza a felügyelt identitást.
  4. Válassza a Tagok kijelölése lehetőséget. Megnyílik a Tagok kiválasztása lap, és válassza a rendszer által hozzárendelt felügyelt identitást.
  5. Válassza a Tárolóalkalmazás lehetőséget, és válassza a Web API tárolóalkalmazást.
  6. A Szerepkör lapon válassza a Redis Cache közreműködője lehetőséget.
  7. Válassza a Véleményezés és hozzárendelés funkciót. A rendszer feldolgozza a kérést.
  8. Nyissa meg a szerepkör-hozzárendeléseket a Rendszer által hozzárendelt felügyelt identitás megtekintéséhez a Redis Cache közreműködői szerepköre alatt.

A következő lépés a webes API kliens gyorsítótár-konfigurációjának módosítása, hogy használja a DefaultAzureCredential, amely a hitelesítés javasolt módja, amikor rendszer által hozzárendelt felügyelt identitást használ. Az alkalmazáshoz külsőleg hozzáférőknek nem kell meghatározott felhasználói szintű szerepkör-hozzárendelésekkel rendelkezniük ahhoz, hogy az erőforrásokhoz az identitáskezelés ezen formáján keresztül férhessenek hozzá. További információ: Azure Redis Cache – Rendszer által hozzárendelt felügyelt identitás integrálása.

A Webes API-projekt módosítása az Azure Redis Cache szolgáltatásra való hivatkozáshoz

Mielőtt közzéteszi a Webes API-projektet az Azure-ban való futtatáshoz, frissítse az Azure Redis Cache-re való hivatkozásra, és használjon egy felügyelt identitást a biztonságos hozzáféréshez. Ennek megfelelően módosíthatja a gyorsítótár konfigurációs kódját a Program.cs.

Az Azure Redis Cache esetében beállít egy környezeti változót AZURE_REDIS_HOST a kapcsolati adatokkal, majd olvassa el az indítási kódban az Azure Redis Cache-hez való csatlakozáshoz és a gyorsítótár konfigurálásához.

Ön a Azure.Identity használja, hogy megszerezze a DefaultAzureCredential, amely a biztonságos hitelesítést a felügyelt identitással kezeli.

  1. A Visual Studióban a Webes API-projektben adjon hozzá egy hivatkozást a NuGet-csomagokra Azure Identity és Microsoft.Azure.StackExchange.Redisa .

  2. Adja hozzá az imént hozzáadott csomagokra vonatkozó irányelveket.

    using Azure.Identity;
    using Microsoft.Azure.StackExchange.Redis;
    
  3. Frissítse a Redis Cache konfigurációs kódját. Törölje a régi kódot, és cserélje le a következő kódra. Később áttekintheti a megjegyzéseket, és visszavonhatja a nem kötelező kódot, hogy megfeleljen a saját speciálisabb forgatókönyveinek.

     // 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));
    
    

    A gyorsítótár-kapcsolat létrehozásakor korábban beállított hitelesítési módszer a rendszer által hozzárendelt felügyelt identitás, így az itt megadott kód összhangban van ezzel a lehetőséggel. Ha más hitelesítési módszereket is használni szeretne, itt kell módosítania a kódot. Lásd: Az Azure Redis Cache integrálása – Rendszer által hozzárendelt felügyelt identitás.

    Hozza létre a Webes API-projektet annak ellenőrzéséhez, hogy nincsenek-e hibák.

  4. Ha rendelkezik Dockerfile-rel, frissítse a Dockerfile alapszakaszát a környezeti változó AZURE_REDIS_HOSTdefiniálásához. A gazdagép címét az Azure Portalról szerezheti be, amikor létrehozza az Azure Redis Cache-t, vagy a portál Web API tárolóalkalmazás lapján található Service Connector szakaszból (lásd az előző szakaszt).

    ENV AZURE_REDIS_HOST mycache.redis.cache.windows.net
    

    (Nem kötelező) A környezeti változókban más konfigurációs beállításokat is meghatározhat, AZURE_REDIS_PORT például a 6380-at. Az egyszerűség kedvéért ez az érték a környezeti változók használata helyett szigorúan kódolva van. Érdemes lehet a ASPNETCORE_ENVIRONMENT is beállítani.

    Ha a .NET SDK-tároló buildtípusát használja (Dockerfile nélkül), a környezeti változót a launchSettings.json alatt profiles > httpállíthatja be.

     "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"
       }
     }
    
  5. Készen állsz a módosítások közzétételére és ellenőrzésére. Válassza a Közzététel gombot a Közzététel képernyőn. A Visual Studio megpróbálja betölteni a lapot, de ez meghiúsul, mert a Web API tárolóalkalmazás nem érhető el a tárolóalkalmazás-környezeten kívüli kérésekhez.

Mielőtt futtathatja az alkalmazást az Azure Redis Cache-lel, be kell állítania a felügyelt identitást a gyorsítótár eléréséhez szükséges megfelelő engedélyekkel.

Az alkalmazás tesztelése

Lépjen vissza a Webfrontend projekt Közzététel képernyőjére, és kattintson a Webfrontend URL-címére mutató hivatkozásra. A webfrontend alkalmazásnak a lap frissítésekor frissülő számlálóval kell megjelennie.

Jótanács

Az Azure Container Apps a szolgáltatások üzemidejének maximalizálására törekszik. Ha valami probléma merül fel az egyik szolgáltatással, például egy állapotellenőrzés sikertelensége esetén, az Azure Container Apps nem állítja be aktív változatként, és nem használja a kérelmek kiszolgálására. Ennek következtében a fejlesztési és tesztelési folyamat során időnként előfordulhat, hogy a legutóbbi módosítások nem jelennek meg az élő webhelyen. Az Azure Portalon válassza a Korrektúrák és replikák lehetőséget a legújabb közzétett változat állapotának megtekintéséhez. Innen megnyithatja a naplókat a probléma elhárításához.

Gratulálok! Sikeresen közzétett egy többkontainer-alkalmazást az Azure Container Appsben, és ellenőrizte a tárolók közötti kommunikációt, valamint az Azure Redis Cache használatát az alkalmazásban.

Erőforrások tisztítása

Az oktatóanyag során létrehozott erőforrások törléséhez nyissa meg az Azure Portalt, és törölje a tárolóalkalmazásokat, a gyorsítótárat és a tárolóregisztrációs adatbázist tartalmazó erőforráscsoportot.

Következő lépések

  • További információ az Azure Container Appsről.
  • Ismerje meg a .NET Aspire technológiát, amely segítségével egyszerűbben fejleszthet összetett tárolóalapú alkalmazásokat és szolgáltatásokat, amelyek integrálhatók az Azure különböző erőforrásaival. A .NET Aspire támogatja a fejlesztési idő vezénylését, a szolgáltatások tömbjével való szabványos integrációt, valamint a Visual Studio-projektsablonokkal való eszköztámogatást.
  • Az Azure parancssori felületével (CLI) is dolgozhat a tárolóalkalmazásokkal. Telepítse az Azure CLI-t, és kezdje el az Azure CLI-parancsokkal az Azure Container Apps használatát az az containerapp up parancs követésével.