Kiadási folyamat tervezése az Azure Pipelines használatával
Ebben a szakaszban Andyvel és Mara-val együtt fog követni, mivel egy alapszintű CD-folyamatot terveznek, amely az Azure Pipelineson fut.
Ha elkészült, a csapat többi tagját is lefokozza. A folyamat POC-ként fog szolgálni, amelyet tovább fejlesztenek és bővítenek, amint többet megtudnak, és visszajelzést kapnak Timtől és Amitától.
Mik az alapszintű CD-folyamatok részei?
Egy alapszintű CD-folyamat egy eseményindítót tartalmaz, amely elindítja a folyamatot, és legalább egy fázist vagy üzembe helyezési fázist. A szakasz feladatokból áll. A feladatok olyan lépések sorozatai, amelyek meghatározzák az alkalmazás létrehozásának, tesztelésének vagy üzembe helyezésének módját.
Andy: Már megvan a buildösszetevő. Ez a .zip fájl, amelyet a meglévő buildelési folyamat hoz létre. De hogyan telepíthetjük élő környezetben?
Mi az a folyamatszakasz?
A fázis a folyamat része, amely önállóan futtatható, és különböző mechanizmusokkal aktiválható. A mechanizmus lehet az előző szakasz sikeressége, ütemezés vagy akár manuális eseményindító is. Ezekről a mechanizmusokról a következő modulban olvashat bővebben.
Mara: Lehet egy szakasz, amely létrehozza az alkalmazást, és egy másik szakasz, amely teszteket futtat.
Mara: Már definiáltuk a folyamat buildelési szakaszának feladatait. Az üzembe helyezési szakasz hasonló lehet, beleértve a buildet környezetbe üzembe helyező feladatokat is.
A kérdés az, hogy hol helyezzük üzembe az összetevőt?
Mi az a környezet?
Valószínűleg a környezet kifejezés használatával hivatkozott arra, hogy hol fut az alkalmazás vagy a szolgáltatás. Előfordulhat például, hogy az éles környezetben a végfelhasználók hozzáférnek az alkalmazáshoz.
Az alábbi példát követve az éles környezet a következő lehet:
- Fizikai gép vagy virtuális gép (VM).
- Tárolóalapú környezet, például Kubernetes.
- Felügyelt szolgáltatás, például Azure-alkalmazás szolgáltatás.
- Kiszolgáló nélküli környezet, például az Azure Functions.
A rendszer üzembe helyez egy összetevőt egy környezetben. Az Azure Pipelines megkönnyíti a telepítést szinte bármilyen környezetben, akár a helyszínen, akár a felhőben.
Az Azure Pipelinesban a környezet kifejezésnek van egy második jelentése. Itt a környezet az üzembehelyezési környezet absztrakt ábrázolása, például Kubernetes-fürt, App Service-példány vagy virtuális gép.
Az Azure Pipelines-környezet rögzíti az üzembe helyezési előzményeket, hogy könnyebben azonosíthassa a módosítások forrását. Az Azure Pipelines-környezetek használatával biztonsági ellenőrzéseket és módszereket is meghatározhat annak szabályozására, hogy egy összetevő hogyan legyen előléptetve a folyamat egyik szakaszából a másikba. A környezet tartalma attól függ, hogy mit szeretne tenni az összetevővel. A környezet, ahol tesztelni szeretné az összetevőt, valószínűleg másként lesz definiálva, mint az, ahol az összetevőt üzembe szeretné helyezni a végfelhasználók számára.
Az Azure Pipelines-környezetek meghatározásának egyik módja egy YAML-fájl. A YAML-fájl tartalmaz egy szakaszt environment
, amely meghatározza az Azure Pipelines-környezetet, ahol üzembe helyezi az összetevőt.
A kiadási folyamat megtervezése során el kell döntenie, hogy az alkalmazás vagy a szolgáltatás hol fog futni. Hallgassuk meg, mit dönt Andy és Mara.
Andy: Magas szinten milyen típusú környezetet szeretnénk? A helyszínen vagy a felhőben szeretnénk üzembe helyezni?
Megkérhetnénk Timet, hogy hozzon létre egy virtuális gépet a laborban, de mindig elfogy a hardvere. Ha a felhőt használjuk, gyorsan és egyszerűen állíthatunk be POC-t.
Andy: Egyetértek, de annyi felhőbeli lehetőséget kell figyelembe venni, és az Azure Pipelines használatával üzembe helyezhetjük őket bármelyikben. Melyiket próbáljuk meg?
Mara: A játékainkat fejlesztő csapatok az Azure-t használják néhány háttérrendszer üzemeltetésére. Gyorsan beállítják, és úgy tűnik, tetszik. Azt hiszem, az Azure-hoz kellene ragaszkodnunk a felhőnkhöz.
Andy: OK, ennek van értelme! Az Azure azonban rengeteg számítási lehetőséget kínál. Melyiket válasszuk?
Andy az alábbi lehetőségeket sorolja fel a rajztáblán:
- Virtual machines (Virtuális gépek)
- Tárolók
- Azure App Service
- Kiszolgáló nélküli számítástechnika
Megjegyzés:
A modul végén további információt talál ezekről a számítási lehetőségekről.
Mara: Tudom, tárolók és kiszolgáló nélküli számítástechnika népszerű most. A virtuális gépekhez képest mindkettő egyszerű az erőforrások szempontjából. Könnyen lecserélhetőek és felskálázhatók. Mindkettő érdekes, de ideges vagyok, hogy egyszerre két új technológiát tanulok. Inkább a folyamat felépítésére koncentrálnék.
Andy: Veled vagyok. Ez a virtuális gépeket vagy az App Service-t hagyja. Azt hiszem, a virtuális gépek jobb választás lenne, ha egy üzletági alkalmazást helyeznénk át , amely teljes hozzáférést igényel bizonyos környezetekhez – a felhőbe. Nem csinálunk semmi olyan jelentőset.
Mara: Ez elhagyja az App Service-t, ami az én választásom lenne. Úgy tervezték, hogy az Azure DevOpsszal működjön együtt, és előnyökkel jár. Ez egy szolgáltatásként nyújtott platform (PaaS) környezet a webalkalmazásokhoz, ezért sok terhet vesz le tőlünk. Nem kell aggódnunk az infrastruktúra miatt. Emellett biztonsági funkciókkal is rendelkezik, és lehetővé teszi a terheléselosztást és az automatikus skálázást.
Andy: Az App Service úgy hangzik, mint amire szükségünk van. Használjuk az App Service-t. Amúgy is csak egy megvalósíthatósági igazolást hozunk létre. A számítási beállítást bármikor módosíthatjuk, ha később valami mást szeretnénk kipróbálni.
Hogyan hajtja végre az Azure Pipelines az üzembe helyezés lépéseit?
Az alkalmazás üzembe helyezéséhez az Azure Pipelinesnak először hitelesítenie kell magát a célkörnyezettel. Az Azure Pipelines különböző hitelesítési mechanizmusokat biztosít. A használt környezet attól függ, hogy melyik célkörnyezetet helyezi üzembe. Ezekről a mechanizmusokról a modul végén talál további információt.
Andy: Rendelkezünk a buildelési összetevőnkkel, és tudjuk, hogy a folyamat szakaszaiban fogunk építeni és üzembe helyezni. Meghatároztuk az üzembe helyezés célkörnyezetét is. Ez az App Service. A kérdésem most az, hogyan hitelesíti az Azure Pipelines az App Service-t? Tudom, hogy ez Tim egyik aggodalma lesz. Biztosítanunk kell, hogy a folyamat biztonságos legyen.
Egy kis kutatás után Andy és Mara olyan általános lépéseket dolgoznak ki, amelyekkel az Azure Pipelines üzembe helyezhető az App Service-ben:
- Adja meg a cél üzembehelyezési környezetet a folyamatkonfigurációban.
- Biztosítson módot az Azure Pipelines számára az adott környezethez való hozzáférés hitelesítésére.
- Az Azure Pipelines-feladatokkal üzembe helyezheti a buildösszetevőt az adott környezetben.
Mara: A kutatásunk szerint létre kell hoznunk egy szolgáltatáskapcsolatot a célkörnyezet meghatározásához és a hozzáférés hitelesítéséhez. A szolgáltatáskapcsolat definiálása után az összes használni kívánt tevékenységhez elérhető lesz. Ezután a DownloadPipelineArtifact beépített feladataival le kell töltenünk a buildösszetevőt a folyamatügynökbe és az AzureWebAppba az alkalmazás Azure-alkalmazás szolgáltatásban való üzembe helyezéséhez.
Mik azok a feladatok és stratégiák?
A meglévő buildelési folyamat meghatározza a buildügynököt, a folyamatváltozókat és a szoftver létrehozásához szükséges feladatokat.
A folyamat üzembehelyezési része ugyanazokat az elemeket tartalmazza. Az üzembe helyezési konfiguráció általában egy vagy több feladatot, folyamatkörnyezetet és stratégiát is meghatároz. Korábban megismerkedett a folyamatkörnyezetekkel.
Íme egy példakonfiguráció, amelyet a modul későbbi részében fog futtatni. Ez a konfiguráció üzembe helyezi a Space Game webhelyét Azure-alkalmazás szolgáltatásban.
- stage: 'DeployDev'
displayName: 'Deploy to dev environment'
dependsOn: Build
jobs:
- deployment: Deploy
pool:
vmImage: 'ubuntu-20.04'
environment: dev
variables:
- group: 'Release Pipeline'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: drop
- task: AzureWebApp@1
displayName: 'Azure App Service Deploy: website'
inputs:
azureSubscription: 'Resource Manager - Tailspin - Space Game'
appName: '$(WebAppName)'
package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
Jobs
A feladatok olyan lépések vagy tevékenységek sorozata, amelyek egymás után futnak egységként. Minden folyamatszakasz alapértelmezés szerint egy feladattal rendelkezik, még akkor is, ha az adott szakasz nem használja a kulcsszót job
.
A feladatok futtathatók ügynökkészletben, tárolóban vagy közvetlenül az Azure DevOps-kiszolgálón. Az itt látható példafeladat egy Microsoft által üzemeltetett Ubuntu-ügynökön fut.
Megadhatja az egyes feladatok futtatásának feltételeit. Az itt látható példafeladat nem határoz meg feltételeket. Alapértelmezés szerint egy feladat akkor fut, ha nem függ más feladatoktól, vagy ha az összes feladat, amelytől függ, sikeresen befejeződött.
A feladatokat párhuzamosan vagy egymás után is futtathatja. A meglévő buildelési folyamat példáját használva párhuzamos feladatokkal egyszerre hozhatja létre a szoftverét Windows, Linux és macOS-ügynökökre.
Az üzembehelyezési feladat egy speciális feladattípus, amely fontos szerepet játszik az üzembe helyezési fázisokban. Az üzembehelyezési feladatok rögzítik az üzembe helyezések állapotát az Azure Pipelinesban, és auditnaplót biztosítanak. Az üzembe helyezési feladatok segítenek meghatározni az üzembe helyezési stratégiát is, amelyet hamarosan elvégezünk.
Stratégiák
A stratégia meghatározza az alkalmazás bevezetésének módját. Egy jövőbeli modulban többet is megtudhat az olyan stratégiákról, mint a kék-zöld és a kanári. Egyelőre a runOnce stratégiával töltheti le a Space Game-csomagot a folyamatból, és üzembe helyezheti Azure-alkalmazás szolgáltatásban.
Hogyan csatlakozik az Azure Pipelines az Azure-hoz?
Az alkalmazás Azure-erőforráson, például virtuális gépen vagy App Service-ben való üzembe helyezéséhez szolgáltatáskapcsolatra van szükség. A szolgáltatáskapcsolatok a két módszer egyikével biztosítják az Azure-előfizetés biztonságos elérését:
- Egyszerű szolgáltatás hitelesítése
- Azure-erőforrások felügyelt identitásai
Ezekről a biztonsági modellekről a modul végén tudhat meg többet, de röviden:
- A szolgáltatásnév egy korlátozott szerepkörrel rendelkező identitás, amely hozzáfér az Azure-erőforrásokhoz. A szolgáltatásnév olyan szolgáltatásfiók, amely automatikus feladatokat hajthat végre az Ön nevében.
- Az Azure-erőforrások felügyelt identitásai a Microsoft Entra-azonosító egyik funkciója, amely leegyszerűsíti a szolgáltatásnevek használatának folyamatát. Mivel a felügyelt identitások a Microsoft Entra-bérlőn találhatók, az Azure-infrastruktúra automatikusan hitelesítheti a szolgáltatást, és kezelheti a fiókot.
A felügyelt identitások leegyszerűsítik a szolgáltatásnevek használatát; ebben a modulban azonban szolgáltatásnév-hitelesítést fogunk használni, mert egy szolgáltatáskapcsolat automatikusan felderíti az Azure-erőforrásokat, és hozzárendeli a megfelelő szolgáltatásnév-szerepköröket.
A terv
Andy és Mara készen állnak a kezdésre. A következőt fogják tenni:
- A meglévő Azure Pipelines-buildkonfigurációra építhet.
- Definiáljon egy összeállítási szakaszt, amely létrehozza az összetevőt.
- Adjon meg egy üzembe helyezési szakaszt, amely üzembe helyezi az összetevőt az App Service-ben.
Andy: Helyes ez a rajz? Az Azure Pipelines használatával helyezzük üzembe Azure-alkalmazás Szolgáltatásban. Ehhez a buildösszetevőt vesszük fel az üzembe helyezési fázis bemeneteként. Az üzembe helyezési szakaszban lévő feladatok letöltik az összetevőt , és egy szolgáltatáskapcsolat használatával telepítik az összetevőt az App Service-ben .
Mara: Ez az összegzi fel. Lássunk hozzá.