Mikroszolgáltatások kiszámítható kiépítése és üzembe helyezése az Azure-ban

Ez az oktatóanyag bemutatja, hogyan építhet ki és helyezhet üzembe mikroszolgáltatásokból álló alkalmazásokatAzure App Service egyetlen egységben, kiszámítható módon JSON-erőforráscsoport-sablonok és PowerShell-szkriptek használatával.

A nagy mértékben leválasztott mikroszolgáltatásokból álló nagy léptékű alkalmazások kiépítése és üzembe helyezésekor az megismételhetőség és a kiszámíthatóság kulcsfontosságú a sikerhez. Azure App Service lehetővé teszi olyan mikroszolgáltatások létrehozását, amelyek webalkalmazásokat, mobil háttérrendszereket és API-alkalmazásokat tartalmaznak. Az Azure Resource Manager lehetővé teszi az összes mikroszolgáltatás egységként történő kezelését, valamint az erőforrás-függőségeket, például az adatbázis- és a verziókövetési beállításokat. Most már JSON-sablonokkal és egyszerű PowerShell-szkriptekkel is üzembe helyezhet egy ilyen alkalmazást.

A teendők

Az oktatóanyagban egy olyan alkalmazást fog üzembe helyezni, amely a következőket tartalmazza:

  • Két App Service alkalmazás (azaz két mikroszolgáltatás)
  • Háttérrendszeri SQL Database
  • Alkalmazásbeállítások, kapcsolati sztringek és forrásvezérlő
  • Alkalmazáselemzések, riasztások, automatikus méretezési beállítások

A használni kívánt eszközök

Ebben az oktatóanyagban az alábbi eszközöket fogja használni. Mivel ez nem az eszközök átfogó megvitatása, ragaszkodom a teljes forgatókönyvhöz, és csak egy rövid bevezetést adok mindegyikhez, és ahol további információkat talál róla.

Azure Resource Manager-sablonok (JSON)

Minden alkalommal, amikor létrehoz egy alkalmazást Azure App Service, például az Azure Resource Manager egy JSON-sablonnal hozza létre a teljes erőforráscsoportot az összetevő-erőforrásokkal. A Azure Marketplace összetett sablonjai többek között az adatbázist, a tárfiókokat, a App Service csomagot, magát az alkalmazást, a riasztási szabályokat, az alkalmazásbeállításokat, az automatikus skálázási beállításokat és egyebeket tartalmazhatják, és ezek a sablonok mind elérhetők a PowerShellen keresztül. Az Azure Resource Manager-sablonokkal kapcsolatos további információkért lásd: Azure Resource Manager-sablonok készítése

Azure SDK 2.6 for Visual Studio

A legújabb SDK a JSON-szerkesztő Resource Manager sablontámogatásának fejlesztéseit tartalmazza. Ezzel gyorsan létrehozhat egy erőforráscsoport-sablont az alapoktól, vagy megnyithat egy meglévő JSON-sablont (például egy letöltött katalógussablont) módosításra, feltöltheti a paraméterfájlt, és akár közvetlenül egy Azure-erőforráscsoport-megoldásból is üzembe helyezheti az erőforráscsoportot.

További információ: Azure SDK 2.6 for Visual Studio.

0.8.0-s vagy újabb Azure PowerShell

A 0.8.0-s verziótól kezdve a Azure PowerShell telepítése az Azure-modul mellett az Azure Resource Manager modult is tartalmazza. Ez az új modul lehetővé teszi az erőforráscsoportok üzembe helyezésének szkriptelésére.

További információ: Azure PowerShell használata az Azure Resource Manager

Azure Resource Explorer

Ez az előzetes verziós eszköz lehetővé teszi az előfizetésben lévő összes erőforráscsoport és az egyes erőforrások JSON-definícióinak megismerését. Az eszközben szerkesztheti egy erőforrás JSON-definícióit, törölheti az erőforrások teljes hierarchiáját, és új erőforrásokat hozhat létre. Az eszközben elérhető információk nagyon hasznosak a sablonkészítéshez, mert bemutatják, hogy milyen tulajdonságokat kell beállítani egy adott erőforrástípushoz, a megfelelő értékekhez stb. Akár az Azure Portalon is létrehozhatja az erőforráscsoportot, majd megvizsgálhatja annak JSON-definícióit az Explorer eszközben, hogy segítsen az erőforráscsoport sablonosításában.

Üzembe helyezés az Azure-ban gomb

Ha GitHub használ a forráskezeléshez, elhelyezhet egy Üzembe helyezés az Azure-ban gombot a README-ben. MD, amely lehetővé teszi a kulcsrakész üzembehelyezési felhasználói felületet az Azure-ban. Bár ezt bármilyen egyszerű alkalmazáshoz megteheti, ezt kiterjesztheti egy teljes erőforráscsoport üzembe helyezésére egy azuredeploy.json fájl adattárgyökérbe helyezésével. Ezt az erőforráscsoport-sablont tartalmazó JSON-fájlt az Üzembe helyezés az Azure-ban gomb fogja használni az erőforráscsoport létrehozásához. Példaként tekintse meg a ToDoApp-mintát , amelyet ebben az oktatóanyagban fog használni.

A minta erőforráscsoport sablonjának lekérése

Szóval most lássunk hozzá.

  1. Lépjen a ToDoApp App Service mintára.

  2. A readme.md kattintson az Üzembe helyezés az Azure-ban elemre.

  3. A rendszer az Üzembe helyezés az Azure-ba webhelyre viszi, és megkéri, hogy adja meg az üzembehelyezési paramétereket. Figyelje meg, hogy a legtöbb mező az adattár nevével és néhány véletlenszerű sztringgel van feltöltve. Tetszés szerint módosíthatja az összes mezőt, de csak a SQL Server rendszergazdai bejelentkezést és a jelszót kell megadnia, majd kattintson a Tovább gombra.

    Shows the input deployment parameters on the deploy-to-azure site.

  4. Ezután kattintson az Üzembe helyezés gombra az üzembe helyezési folyamat elindításához. Miután a folyamat befejeződött, kattintson a http://todoappXXXX.azurewebsites.net hivatkozásra az üzembe helyezett alkalmazás tallózásához.

    Shows your application's deployment process.

    A felhasználói felület kissé lassú lenne az első böngészéskor, mert az alkalmazások csak most indulnak el, de meggyőzik magukat arról, hogy ez egy teljesen működőképes alkalmazás.

  5. Az Üzembe helyezés lapon kattintson a Kezelés hivatkozásra az új alkalmazás Azure Portalon való megtekintéséhez.

  6. Az Essentials legördülő listában kattintson az erőforráscsoport hivatkozására. Vegye figyelembe, hogy az alkalmazás már csatlakozik a Külső Project alatti GitHub-adattárhoz.

    Shows the Resource group link in the Essentials dropdown section.

  7. Az erőforráscsoport panelen vegye figyelembe, hogy az erőforráscsoportban már két alkalmazás és egy SQL Database található.

    Shows the resources available in your resource group.

Minden, amit néhány rövid perc alatt látott, egy teljes mértékben üzembe helyezett két mikroszolgáltatás-alkalmazás, amely tartalmazza az összes összetevőt, függőséget, beállítást, adatbázist és folyamatos közzétételt, amelyet egy automatikus vezénylés állít be az Azure Resource Manager-ben. Mindezt két dolog tette:

  • Az Üzembe helyezés az Azure-ban gomb
  • azuredeploy.json az adattár gyökerében

Ezt az alkalmazást több tíz, több száz vagy ezer alkalommal is üzembe helyezheti, és minden alkalommal pontosan ugyanazzal a konfigurációval rendelkezhet. A módszer megismételhetősége és kiszámíthatósága lehetővé teszi nagy léptékű alkalmazások egyszerű és magabiztos üzembe helyezését.

Vizsgálja meg (vagy szerkessze) az AZUREDEPLOY-t. JSON

Most nézzük meg, hogyan lett beállítva a GitHub-adattár. A JSON-szerkesztőt az Azure .NET SDK-ban fogja használni, ezért ha még nem telepítette az Azure .NET SDK 2.6-ot, akkor most végezze el.

  1. Klónozza a ToDoApp-adattárat a kedvenc Git-eszközével. Az alábbi képernyőképen ezt a 2013-Visual Studio Csoportkezelőben teszem.

    Shows how to use a git tool to clone the ToDoApp repository.

  2. Az adattár gyökérkönyvtárában nyissa meg az azuredeploy.json fájlt Visual Studio. Ha nem látja a JSON Outline panelt, telepítenie kell az Azure .NET SDK-t.

    Shows the JSON Outline pane in Visual Studio.

Nem fogom leírni a JSON-formátum minden részletét, de a További források szakasz hivatkozásokat tartalmaz az erőforráscsoport sablonnyelvének megismeréséhez. Itt csak bemutatom azokat az érdekes funkciókat, amelyek segíthetnek a saját egyéni sablon készítésében az alkalmazás üzembe helyezéséhez.

Paraméterek

Tekintse meg a paraméterek szakaszt, és nézze meg, hogy a legtöbb ilyen paraméter az, amit az Üzembe helyezés az Azure-ban gomb kér a bevitelhez. Az Üzembe helyezés az Azure-ban gomb mögötti hely feltölti a bemeneti felhasználói felületet az azuredeploy.json fájlban meghatározott paraméterekkel. Ezeket a paramétereket az erőforrás-definíciókban, például az erőforrásnevekben, a tulajdonságértékekben stb. használják.

Források

Az erőforráscsomóponton láthatja, hogy 4 legfelső szintű erőforrás van definiálva, köztük egy SQL Server példány, egy App Service csomag és két alkalmazás.

App Service-csomag

Kezdjük egy egyszerű gyökérszintű erőforrással a JSON-ban. A JSON-vázlatban kattintson a [hostingPlanName] nevű App Service csomagra a megfelelő JSON-kód kiemeléséhez.

Shows the [hostingPlanName] section of the JSON code.

Vegye figyelembe, hogy az type elem egy App Service-terv sztringét adja meg (régen kiszolgálófarmnak nevezték), és a JSON-fájlban definiált paraméterekkel más elemek és tulajdonságok is ki vannak töltve, és ennek az erőforrásnak nincsenek beágyazott erőforrásai.

Megjegyzés

Vegye figyelembe azt is, hogy az érték apiVersion azt jelzi az Azure-nak, hogy a REST API melyik verziójával használja a JSON-erőforrásdefiníciót, és ez hatással lehet arra, hogy az erőforrás hogyan legyen formázva a {}.

SQL Server

Ezután kattintson az SQLServer nevű SQL Server erőforrásra a JSON-vázlatban.

Shows the SQL Server resource named SQLServer in the JSON Outline.

A kiemelt JSON-kóddal kapcsolatban vegye figyelembe a következőket:

  • A paraméterek használata biztosítja, hogy a létrehozott erőforrások neve és konfigurálása olyan módon legyen elnevezve és konfigurálva, hogy azok konzisztensek legyenek egymással.

  • Az SQLServer-erőforrás két beágyazott erőforrással rendelkezik, amelyek mindegyike más értékkel rendelkezik.type

  • A beágyazott erőforrások , “resources”: […]ahol az adatbázis és a tűzfalszabályok definiálva vannak, rendelkeznek egy dependsOn elemmel, amely meghatározza a gyökérszintű SQLServer-erőforrás erőforrás-azonosítóját. Ez azt jelzi az Azure Resource Manager, hogy "az erőforrás létrehozása előtt más erőforrásnak már léteznie kell; és ha a másik erőforrás definiálva van a sablonban, először hozza létre azt."

    Megjegyzés

    A függvény használatáról további információt az resourceId()Azure Resource Manager Template Functionsben talál.

  • Az elem hatása az, hogy az dependsOn Azure Resource Manager tudja, mely erőforrások hozhatók létre párhuzamosan, és mely erőforrásokat kell egymás után létrehozni.

App Service-alkalmazás

Most térjünk át magukra a tényleges alkalmazásokra, amelyek bonyolultabbak. Kattintson a [variables('apiSiteName')] alkalmazásra a JSON-vázlatban a JSON-kód kiemeléséhez. Észre fogja venni, hogy a dolgok egyre érdekesebbek. Ebből a célból egyenként beszélek a funkciókról:

Gyökérerőforrás

Az alkalmazás két különböző erőforrástól függ. Ez azt jelenti, hogy az Azure Resource Manager csak a App Service csomag és a SQL Server példány létrehozása után hozza létre az alkalmazást.

Shows the app dependencies on the App Service plan and the SQL Server instance.

Alkalmazásbeállítások

Az alkalmazásbeállítások beágyazott erőforrásként is definiálva vannak.

Shows the app settings defined as a nested resource in the JSON code.

properties Az elemben config/appsettingskét alkalmazásbeállítás van a formátumban"<name>" : "<value>".

  • PROJECTA egy KUDU-beállítás, amely közli az Azure-beli üzemelő példánysal, hogy melyik projektet használja egy többprojektes Visual Studio megoldásban. Később bemutatom, hogyan van konfigurálva a verziókövetés, de mivel a ToDoApp-kód egy többprojektes Visual Studio megoldásban van, szükségünk van erre a beállításra.
  • clientUrl A egyszerűen egy alkalmazásbeállítás, amelyet az alkalmazáskód használ.
Kapcsolati sztringek

A kapcsolati sztringek beágyazott erőforrásként is definiálva vannak.

Shows how the connection strings are defined as a nested resource in the JSON code.

In the properties element for config/connectionstrings, each connection string is also defined as a name:value pair, with the specific format of "<name>" : {"value": "…", "type": "…"}. Az elem esetében a type lehetséges értékek a következők: MySql, SQLServer, SQLAzureés Custom.

Tipp

A kapcsolati sztring típusok végleges listájához futtassa a következő parancsot a Azure PowerShell: [Enum]::GetNames("Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.DatabaseType")

Verziókövetés

A verziókövetési beállítások beágyazott erőforrásként is definiálva vannak. Az Azure Resource Manager ezzel az erőforrással konfigurálja a folyamatos közzétételt (lásd későbbIsManualIntegration), és elindítja az alkalmazáskód automatikus üzembe helyezését a JSON-fájl feldolgozása során.

Shows how the source control settings are defined as a nested resource in the JSON code.

RepoUrl és branch elég intuitívnak kell lennie, és a Git-adattárra és annak az ágnak a nevére kell mutatnia, amelyből közzé szeretné tenni a közzétételt. Ezeket szintén bemeneti paraméterek határozzák meg.

Az elemben dependsOn vegye figyelembe, hogy az alkalmazás-erőforráson kívül az sourcecontrols/web is függ config/appsettings és config/connectionstrings. Ennek az az oka, hogy a konfigurálás után sourcecontrols/web az Azure üzembehelyezési folyamata automatikusan megkísérli az alkalmazáskód üzembe helyezését, összeállítását és elindítását. Ezért a függőség beszúrásával meggyőződhet arról, hogy az alkalmazás hozzáfér a szükséges alkalmazásbeállításokhoz és kapcsolati sztringekhez az alkalmazáskód futtatása előtt.

Megjegyzés

Azt is vegye figyelembe, hogy IsManualIntegration a beállítás értéke true. Erre a tulajdonságra azért van szükség ebben az oktatóanyagban, mert nem rendelkezik a GitHub-adattárral, így nem adhat ténylegesen engedélyt az Azure-nak a ToDoAppból történő folyamatos közzététel konfigurálásához (azaz automatikus adattárfrissítések leküldéséhez az Azure-ba). A megadott adattár alapértelmezett értékét false csak akkor használhatja, ha korábban már konfigurálta a tulajdonos GitHub hitelesítő adatait a Azure Portal. Más szóval, ha korábban beállította a verziókövetést GitHub vagy BitBucket használatára bármely alkalmazáshoz az Azure Portalon a felhasználói hitelesítő adatok használatával, akkor az Azure emlékezni fog a hitelesítő adatokra, és ezeket fogja használni, amikor a jövőben bármilyen alkalmazást telepít GitHub vagy BitBucketből. Ha azonban még nem tette meg, a JSON-sablon üzembe helyezése sikertelen lesz, amikor az Azure Resource Manager megpróbálja konfigurálni az alkalmazás verziókövetési beállításait, mert nem tud bejelentkezni GitHub vagy BitBucketbe az adattár tulajdonosának hitelesítő adataival.

A JSON-sablon összehasonlítása az üzembe helyezett erőforráscsoporttal

Itt végighaladhat az alkalmazás összes paneljén az Azure Portalon, de van egy másik eszköz is, amely ugyanolyan hasznos, ha nem több. Lépjen az Azure Resource Explorer előzetes verziójú eszközére, amely JSON-reprezentációt biztosít az előfizetésekben lévő összes erőforráscsoportról, mivel azok ténylegesen léteznek az Azure-háttérrendszerben. Azt is láthatja, hogy az erőforráscsoport JSON-hierarchiája az Azure-ban hogyan felel meg a létrehozáshoz használt sablonfájl hierarchiájának.

Amikor például az Azure Resource Explorer eszközre lépek, és kibontom a csomópontokat az Explorerben, látom az erőforráscsoportot és a megfelelő erőforrástípusok alapján gyűjtött gyökérszintű erőforrásokat.

View the resource group and root-level resources in the expanded Azure Resources Explorer tool.

Ha lefúr egy alkalmazást, az alábbi képernyőképhez hasonló alkalmazáskonfigurációs adatokat kell látnia:

Drill down to view the configuration details in the app.

A beágyazott erőforrásoknak szintén nagyon hasonló hierarchiával kell rendelkezniük a JSON-sablonfájlban lévőkhöz, és az alkalmazásbeállításoknak, kapcsolati sztringeknek stb. megfelelően meg kell jelenniük a JSON-panelen. A beállítások hiánya a JSON-fájllal kapcsolatos problémát jelezhet, és segíthet a JSON-sablonfájl hibaelhárításában.

Az erőforráscsoport-sablon saját üzembe helyezése

Az Üzembe helyezés az Azure-ban gomb nagyszerű, de csak akkor teszi lehetővé az erőforráscsoport-sablon üzembe helyezését az azuredeploy.json fájlban, ha már leküldte az azuredeploy.json fájlt GitHub. Az Azure .NET SDK emellett eszközöket is biztosít bármely JSON-sablonfájl üzembe helyezéséhez közvetlenül a helyi gépről. Ehhez kövesse az alábbi lépéseket:

  1. A Visual Studio kattintson a FileNew>>Project gombra.

  2. Kattintson a Visual C#>CloudAzure>erőforráscsoportra, majd az OK gombra.

    Create a new project as an Azure Resource Group in the Azure .NET SDK.

  3. Az Azure-sablon kiválasztása területen válassza az Üres sablon lehetőséget , majd kattintson az OK gombra.

  4. Húzza az azuredeploy.json fájlt az új projekt Sablon mappájába.

    Shows the result of dragging the azuredeploy.json file into the Template folder of your project.

  5. A Megoldáskezelő nyissa meg a másolt azuredeploy.json fájlt.

  6. A bemutató kedvéért adjunk hozzá néhány szabványos Application Insights-erőforrást a JSON-fájlhoz az Erőforrás hozzáadása gombra kattintva. Ha csak a JSON-fájl üzembe helyezése érdekli, ugorjon az üzembe helyezési lépésekre.

    Shows the Add Resource button you can use to add standard Application Insight resources to your JSON file.

  7. Válassza az Alkalmazás Elemzések lehetőséget Web Apps, majd győződjön meg arról, hogy egy meglévő App Service csomag és alkalmazás van kiválasztva, majd kattintson a Hozzáadás gombra.

    Shows the selection of Application Insights for Web Apps, Name, App Service Plan, and Web App.

    Most már számos új erőforrást láthat, amelyek az erőforrástól és annak függvényétől függően függnek az App Service csomagtól vagy az alkalmazástól. Ezeket az erőforrásokat a meglévő definíciójuk nem engedélyezi, és ezt módosítani fogja.

    View the new resources that have dependencies on the App Service plan or app.

  8. A JSON-vázlatban kattintson az appInsights Automatikus skálázás elemre a JSON-kód kiemeléséhez. Ez a App Service csomag méretezési beállítása.

  9. A kiemelt JSON-kódban keresse meg és enabled állítsa be a location tulajdonságokat az alább látható módon.

    Shows the location and enabled properties in the appInsights AutoScale JSON code and the values you should set them to.

  10. A JSON-vázlatban kattintson a CPUHigh appInsights elemre a JSON-kód kiemeléséhez. Ez egy riasztás.

  11. Keresse meg és isEnabled állítsa be a location tulajdonságokat az alább látható módon. Tegye ugyanezt a másik három riasztás (lila izzók) esetében is.

    Shows the location and isEnabled properties in the CPUHigh appInsights JSON code and the values you should set them to.

  12. Most már készen áll az üzembe helyezésre. Kattintson a jobb gombbal a projektre, és válassza a DeployNew Deployment (Üzembe helyezéstelepítése>) parancsot.

    Shows how to deploy your new project.

  13. Ha még nem tette meg, jelentkezzen be az Azure-fiókjába.

  14. Válasszon ki egy meglévő erőforráscsoportot az előfizetésében, vagy hozzon létre egy újat, válassza ki az azuredeploy.json fájlt, majd kattintson a Paraméterek szerkesztése elemre.

    Shows how to edit the parameters in the azuredeploy.json file.

    Most már szerkesztheti a sablonfájlban definiált összes paramétert egy szép táblában. Az alapértelmezett értékeket definiáló paraméterek már rendelkeznek az alapértelmezett értékekkel, és az engedélyezett értékek listáját meghatározó paraméterek legördülő listaként jelennek meg.

    Shows parameters that define a list of allowed values as dropdown lists.

  15. Töltse ki az összes üres paramétert, és használja a ToDoApp GitHub adattárcímét a repoUrl fájlban. Ezután kattintson a Mentés gombra.

    Shows the newly filled parameters for the azuredeploy.json file.

    Megjegyzés

    Az automatikus skálázás standard vagy magasabb szinten elérhető szolgáltatás, a csomagszintű riasztások pedig alapszintű vagy magasabb szinten elérhető szolgáltatások. A termékváltozat paraméterét Standard vagy Prémium értékre kell állítania, hogy az összes új alkalmazás-Elemzések-erőforrás kivilágulhasson.

  16. Kattintson az Üzembe helyezés gombra. Ha a Jelszavak mentése lehetőséget választotta, a jelszó egyszerű szövegként lesz mentve a paraméterfájlba. Ellenkező esetben a rendszer kérni fogja, hogy adja meg az adatbázis jelszavát az üzembehelyezési folyamat során.

Készen is van. Most már csak az Azure Portalon és az Azure Resource Explorer eszközben kell megtekintenie az üzembe helyezett JSON-alkalmazáshoz hozzáadott új riasztásokat és automatikus skálázási beállításokat.

Az ebben a szakaszban ismertetett lépések főként a következőket ták meg:

  1. Előkészítette a sablonfájlt
  2. Létrehozott egy paraméterfájlt a sablonfájl használatához
  3. Üzembe helyezte a sablonfájlt a paraméterfájllal

Az utolsó lépés egyszerűen elvégezhető egy PowerShell-parancsmaggal. Ha meg szeretné tekinteni, hogy mi Visual Studio az alkalmazás üzembe helyezésekor, nyissa meg a Scripts\Deploy-AzureResourceGroup.ps1. Sok kód van ott, de most csak kiemelem az összes vonatkozó kódot, amellyel üzembe kell helyeznie a sablonfájlt a paraméterfájllal.

Shows the pertinent code in the script that you need use to deploy the template file with the parameter file.

Az utolsó parancsmag az, New-AzureResourceGroupamely ténylegesen végrehajtja a műveletet. Mindezeknek meg kell mutatniuk, hogy az eszközök segítségével viszonylag egyszerű a felhőalapú alkalmazás kiszámítható üzembe helyezése. Minden alkalommal, amikor ugyanazon a sablonon futtatja a parancsmagot ugyanazzal a paraméterfájllal, ugyanazt az eredményt kapja.

Összefoglalás

A DevOpsban az ismételhetőség és a kiszámíthatóság a mikroszolgáltatásokból álló, nagy léptékű alkalmazások sikeres üzembe helyezésének kulcsa. Ebben az oktatóanyagban üzembe helyezett egy két mikroszolgáltatású alkalmazást az Azure-ban egyetlen erőforráscsoportként az Azure Resource Manager sablon használatával. Remélhetőleg megadta a szükséges ismereteket ahhoz, hogy az azure-beli alkalmazást sablonná alakíthassa, és kiszámítható módon kiépíthesse és üzembe helyezhesse.

További erőforrások

Következő lépések

A cikkben üzembe helyezett erőforrástípusok JSON-szintaxisával és tulajdonságaival kapcsolatban lásd: