Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Jótanács
Ez a tartalom a „Az Azure-hoz készült natív felhőalapú .NET-alkalmazások tervezése” című eBookból egy részlet, amely elérhető a .NET Docs oldalán, vagy ingyenesen letölthető PDF fájlként, amely offline módban is olvasható.
A natív felhőrendszerek mikroszolgáltatásokat, tárolókat és modern rendszertervezést használnak a sebesség és a rugalmasság elérése érdekében. Automatizált buildelési és kiadási fázisokat biztosítanak a konzisztens és minőségi kód biztosítása érdekében. De ez csak a történet része. Hogyan építheti ki azokat a felhőkörnyezeteket, amelyeken ezek a rendszerek futnak?
A modern felhőalapú natív alkalmazások követik a széles körben elfogadott gyakorlatot, az Infrastruktúra mint Kód, vagy IaC
. Az IaC-vel automatizálhatja a platformkiépítést. A DevOps-eljárásokra lényegében olyan szoftverfejlesztési eljárásokat alkalmazhat, mint a tesztelés és a verziószámozás. Az infrastruktúra és a telepítések automatizáltak, következetesek és megismételhetők. Ahogyan a folyamatos teljesítés automatizálta a manuális telepítések hagyományos modelljét, az infrastruktúra mint kód (IaC) is alakítja át az alkalmazáskörnyezetek kezelését.
Az olyan eszközök, mint az Azure Resource Manager (ARM), a Terraform és az Azure Parancssori felület (CLI) lehetővé teszik a szükséges felhőinfrastruktúra deklaratív szkriptjét.
Azure Resource Manager-sablonok
Az ARM az Azure Resource Managert jelöli. Ez egy API-kiépítési motor, amely az Azure-ba van beépítve, és API-szolgáltatásként van közzétéve. Az ARM lehetővé teszi az Azure-erőforráscsoportban található erőforrások egyetlen, összehangolt műveletben történő üzembe helyezését, frissítését, törlését és kezelését. A motornak egy JSON-alapú sablont kell megadnia, amely meghatározza a szükséges erőforrásokat és azok konfigurációját. Az ARM a függőségeket figyelembe véve automatikusan a megfelelő sorrendben vezényli az üzembe helyezést. A motor biztosítja az idempotenciát. Ha egy kívánt erőforrás már létezik ugyanazzal a konfigurációval, a kiépítés figyelmen kívül lesz hagyva.
Az Azure Resource Manager-sablonok JSON-alapú nyelvként definiálnak különböző erőforrásokat az Azure-ban. Az alapséma a 10–14. ábrához hasonlóan néz ki.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "",
"apiProfile": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
10–14. ábra – Egy Resource Manager-sablon sémája
Ebben a sablonban definiálhat egy tárolót az erőforrások szakaszon belül, így:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2018-07-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
10–15. ábra – Példa egy Resource Manager-sablonban definiált tárfiókra
Az ARM-sablonok dinamikus környezettel és konfigurációs információkkal paraméterezhetők. Ezzel lehetővé teszi a különböző környezetek, például a fejlesztés, a minőségbiztosítási vagy az éles környezetek definiálásának újrafelhasználását. A sablon általában egyetlen Azure-erőforráscsoportban hozza létre az összes erőforrást. Szükség esetén több erőforráscsoportot is meghatározhat egyetlen Resource Manager-sablonban. A környezet összes erőforrását törölheti az erőforráscsoport törlésével. A költségelemzés az erőforráscsoport szintjén is futtatható, így gyorsan elszámolható, hogy az egyes környezetek mennyibe kerülnek.
A GitHubon az Azure Quickstart Templates projektben számos példa érhető el ARM-sablonokra. Segíthetnek felgyorsítani egy új sablon létrehozását vagy egy meglévő módosítását.
A Resource Manager-sablonok számos módon futtathatók. Talán a legegyszerűbb módszer az, ha egyszerűen beilleszti őket az Azure Portalra. A kísérleti üzemelő példányok esetében ez a módszer gyors lehet. Az Azure DevOps buildelési vagy kiadási folyamatának részeként is futtathatók. Vannak olyan feladatok, amelyek a sablonok futtatásához az Azure-beli kapcsolatokat használják. A Resource Manager-sablonok módosításai növekményesen lesznek alkalmazva, ami azt jelenti, hogy új erőforrás hozzáadásához csak hozzá kell adni a sablonhoz. Az eszközkezelés összeegyezteti a jelenlegi erőforrások és a sablonban definiált erőforrások közötti különbségeket. Ezután létrejönnek vagy módosítják az erőforrásokat, hogy azok megfeleljenek a sablonban meghatározottaknak.
Földformálás
A natív felhőalkalmazásokat gyakran úgy állítják össze, hogy azok legyenek cloud agnostic
. Ez azt jelenti, hogy az alkalmazás nincs szorosan összekapcsolva egy adott felhőszolgáltatóval, és bármely nyilvános felhőben üzembe helyezhető.
A Terraform egy kereskedelmi célú templating eszköz, amely natív felhőalkalmazásokat képes kiépíteni az összes fő felhőbeli szereplőre: az Azure-ra, a Google Cloud Platformra, az AWS-re és az AliCloudra. Ahelyett, hogy A JSON-t használná sablondefiníciós nyelvként, a HCL -t (Hashicorp konfigurációs nyelv) használja.
Az előző Resource Manager-sablonnal (10–15. ábra) megegyező Terraform-fájl látható a 10–16. ábrán:
provider "azurerm" {
version = "=1.28.0"
}
resource "azurerm_resource_group" "testrg" {
name = "production"
location = "West US"
}
resource "azurerm_storage_account" "testsa" {
name = "${var.storageAccountName}"
resource_group_name = "${azurerm_resource_group.testrg.name}"
location = "${var.region}"
account_tier = "${var.tier}"
account_replication_type = "${var.replicationType}"
}
10–16. ábra – Példa Erőforráskezelő sablonra
A Terraform intuitív hibaüzeneteket is biztosít a problémasablonokhoz. Van egy hasznos ellenőrzési feladat is, amely a buildelési fázisban használható a sablonhibák korai észleléséhez.
A Resource Manager-sablonokhoz hasonlóan parancssori eszközök is elérhetők a Terraform-sablonok üzembe helyezéséhez. Az Azure Pipelinesban vannak olyan, közösség által létrehozott feladatok is, amelyek a Terraform-sablonokat érvényesíthetik és alkalmazhatják.
Néha a Terraform- és ARM-sablonok értelmes értékeket adnak ki, például egy újonnan létrehozott adatbázis kapcsolati sztringje. Ezek az információk rögzíthetők a buildelési folyamatban, és felhasználhatók a későbbi feladatokban.
Azure CLI-szkriptek és feladatok
Végül használhatja az Azure CLI-t a felhőinfrastruktúra deklaratív szkriptjéhez. Az Azure CLI-szkriptek szinte bármilyen Azure-erőforrás kiépítéséhez és konfigurálásához létrehozhatók, megtalálhatók és megoszthatók. A CLI egyszerűen használható gyengéd tanulási görbével. A szkriptek a PowerShellben vagy a Bashben is végrehajthatók. A hibakeresés is egyszerű, különösen arm-sablonokkal összehasonlítva.
Az Azure CLI-szkriptek akkor működnek jól, ha le kell bontania és újra kell üzembe helyeznie az infrastruktúrát. A meglévő környezet frissítése bonyolult lehet. Számos parancssori felületi parancs nem idempotens. Ez azt jelenti, hogy minden futtatáskor újra létrehozzák az erőforrást, még akkor is, ha az erőforrás már létezik. A létrehozás előtt mindig olyan kódot lehet hozzáadni, amely ellenőrzi az egyes erőforrások meglétét. Ezzel azonban a szkript blokádossá és nehezen kezelhetővé válhat.
Ezek a szkriptek az Azure DevOps-folyamatokba is beágyazhatók.Azure CLI tasks
A folyamat végrehajtása meghívja a szkriptet.
A 10–17. ábrán egy YAML-kódrészlet látható, amely felsorolja az Azure CLI verzióját és az előfizetés részleteit. Figyelje meg, hogy az Azure CLI-parancsok hogyan szerepelnek a beágyazott szkriptekben.
- task: AzureCLI@2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az --version
az account show
10–17. ábra – Azure CLI-szkript
A What is Infrastructure as Code című cikkben Sam Guckenheimer szerző a következőt írja le: "Az IaC-t implementáló csapatok gyorsan és nagy méretekben képesek stabil környezeteket biztosítani. A csapatok elkerülik a környezetek kézi konfigurálását és biztosítják a konzisztenciát azáltal, hogy kód segítségével meghatározzák környezetük kívánt állapotát. Az IaC-vel rendelkező infrastruktúra-telepítések megismételhetők, és megakadályozzák a konfigurációs eltérés vagy a hiányzó függőségek által okozott futásidejű problémákat. A DevOps-csapatok egységes gyakorlatokkal és eszközökkel dolgozhatnak együtt az alkalmazások és azok támogató infrastruktúrájának gyors, megbízható és nagy léptékű biztosításához."