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.
Ez a cikk egy magas szintű DevOps-munkafolyamatot ismertet, amely alkalmazásmódosításokat helyez üzembe az előkészítési és éles környezetekben az Azure-ban. A megoldás folyamatos integrációs/folyamatos üzembe helyezési (CI/CD) eljárásokat használ az Azure Pipelines használatával.
Fontos
Ez a cikk az Azure Pipelines használatával végzett általános CI/CD-architektúrát ismerteti. Nem célja a különböző környezetekben, például az Azure App Servicesben, a virtuális gépeken és az Azure Power Platformon való üzembe helyezés sajátosságainak lefedése. Az üzembehelyezési platform jellemzőiről külön cikkekben olvashat.
Építészet
Az architektúra Visio-fájl letöltése.
Jegyzet
Bár ez a cikk a CI/CD-t ismerteti az alkalmazásváltozások esetében, az Azure Pipelines használható az infrastruktúra mint kód (IaC) változásokhoz való CI/CD-folyamatok kiépítéséhez is.
Adatfolyam
Az adatok az alábbiak szerint haladnak végig a forgatókönyvön:
PR-folyamat – Az Azure Repos Gitbe irányuló lekéréses kérelem (PR) elindít egy PR-folyamatot. Ez a folyamat gyors minőségellenőrzéseket végez. Az ellenőrzéseknek a következőkre kell kiterjednie:
- A kód létrehozása, amelyhez függőségek lekérése szükséges egy függőségkezelő rendszerből.
- Eszközök használata a kód elemzéséhez, például a statikus kódelemzéshez, a lintinghez és a biztonsági vizsgálathoz
- Egységtesztek
Ha valamelyik ellenőrzés sikertelen, a folyamat futtatása véget ér, és a fejlesztőnek végre kell tennie a szükséges módosításokat. Ha minden ellenőrzés megfelel, a folyamatnak pr-felülvizsgálatot kell igényelnie. Ha a pr-felülvizsgálat sikertelen, a folyamat véget ér, és a fejlesztőnek végre kell tennie a szükséges módosításokat. Ha az összes ellenőrzés és lekérési kérelem felülvizsgálata sikeres, a lekérési kérelem sikeresen beolvad.
CI-folyamat – Az Azure Repos Gitbe történő egyesítés ci-folyamatot indít el. Ez a folyamat ugyanazokat az ellenőrzéseket futtatja, mint a PR-folyamat néhány fontos kiegészítéssel. A CI-folyamat integrációs teszteket futtat. Az integrációs tesztek erőforrásigényesek lehetnek, ezért a CI-folyamatban való futtatás kiegyensúlyozza a fejlesztési sebességet és a hibaészlelést. Azt is fontos megjegyezni, hogy a PR-ben elvégzett tesztek nem mindig biztosítják, hogy az egyesítés után sikeresek lesznek, mivel a főág változásai új problémákat okozhatnak, kiemelve az egyesítés utáni tesztelés szükségességét. Ezek a tényezők jobb helyet biztosítanak a CI-folyamatnak az integrációs tesztekhez, mint a PR-folyamat. Ezek az integrációs tesztek nem igényelik a megoldás üzembe helyezését, mivel a buildösszetevők még nem lettek létrehozva. Ha az integrációs tesztek titkos kulcsokat igényelnek, a folyamat lekéri ezeket a titkos kulcsokat az Azure Key Vaultból. Ha bármelyik ellenőrzés sikertelen, a folyamat véget ér, és a fejlesztőnek végre kell tennie a szükséges módosításokat. A folyamat sikeres futtatásának eredménye a buildösszetevők létrehozása és közzététele.
A CD-folyamat elindítója – Az artefaktok közzététele aktiválja a CD-folyamatot.
CD-kiadás tesztelési – A CD-folyamat letölti a CI-folyamatban létrehozott buildösszetevőket, és üzembe helyezi az alkalmazást egy tesztelési környezetben. A folyamat ezután elfogadási teszteket futtat az előkészítési környezeten az üzembe helyezés ellenőrzéséhez. Ha egy elfogadási teszt meghiúsul, a folyamat véget ér, és a fejlesztőnek végre kell tennie a szükséges módosításokat. Ha a tesztek sikeresek, egy manuális ellenőrzési feladat implementálható, amely megköveteli, hogy egy személy vagy csoport ellenőrizze az üzembe helyezést, és folytassa a folyamatot.
CD-kiadás gyártásba – Ha a manuális beavatkozás folytatódik, vagy nincs manuális beavatkozás végrehajtva, a folyamat (pipeline) kibocsátja a megoldást a gyártásba. A vezetéknek éles környezetben kell füstteszteket futtatnia, hogy a kiadás a várt módon működjön. Ha egy manuális beavatkozási lépés megszakítást eredményez, a kiadás meghiúsul, vagy a füsttesztek meghiúsulnak, a kiadás visszakerül, a folyamat véget ér, és a fejlesztőnek végre kell tennie a szükséges módosításokat.
Monitorozási – Az Azure Monitor megfigyelhető adatokat gyűjt, például naplókat és metrikákat, hogy az operátor elemezhesse az állapot- és teljesítményadatokat és a használati adatokat. Az Application Insights összegyűjti az összes alkalmazásspecifikus monitorozási adatot, például nyomkövetést. Az Azure Log Analytics az összes adat tárolására szolgál.
Összetevők
Az Azure Repos Git-adattár kódtárként szolgál, amely verziókövetést és platformot biztosít az együttműködésen alapuló projektekhez.
Azure Pipelines lehetővé teszi az alkalmazás és az infrastruktúra kódjának létrehozását, tesztelését, csomagolását és kiadását. Ez a példa három különböző folyamattal rendelkezik, amelyek a következő felelősségi körökkel bírnak:
- A kód ellenőrzését a PR-pipeline-ok végzik, mielőtt a lekéréses kérelem egyesítése megtörténhetne, a kódellenőrzés, a fordítás és az egységtesztelés során.
- A CI-folyamatok a kód egyesítése után futnak. Ugyanazt az ellenőrzést hajtják végre, mint a PR-folyamatok, de integrációs tesztelést végeznek, és ha minden sikeres, közzétehetik a buildösszetevőket.
- A CD-folyamatok buildösszetevőket helyeznek üzembe, elfogadási teszteket futtatnak, és éles környezetben bocsátják ki.
Azure Artifact Feeds lehetővé teszi olyan szoftvercsomagok kezelését és megosztását, mint a Maven, az npm és a NuGet. Az összetevők hírcsatornái lehetővé teszik a csomagok életciklusának kezelését, beleértve a verziószámozást, az előléptetést és a csomagok kivonását. Ez segít biztosítani, hogy csapata a csomagok legújabb és legbiztonságosabb verzióit használja.
Key Vault lehetővé teszi a megoldás biztonságos adatainak kezelését, beleértve a titkos kulcsokat, a titkosítási kulcsokat és a tanúsítványokat. Ebben az architektúrában az alkalmazás titkos kulcsainak tárolására szolgál. Ezek a titkok a csövön keresztül érhetők el. Az Azure Pipelines hozzáférhet a titkokhoz egy Key Vault-feladattal vagy a Key Vault titkok csatolásával.
Monitor egy megfigyelhetőségi erőforrás, amely metrikákat és naplókat, alkalmazástelemetria- és platformmetrikát gyűjt és tárol az Azure-szolgáltatásokhoz. Ezekkel az adatokkal figyelheti az alkalmazást, riasztásokat, irányítópultokat állíthat be, és elvégezheti a hibák kiváltó okainak elemzését.
Application Insights egy monitorozási szolgáltatás, amely valós idejű betekintést nyújt a webalkalmazások teljesítményébe és használatába.
Log Analytics-munkaterület egy központi helyet biztosít, ahol több forrásból, például Azure-erőforrásokból, alkalmazásokból és szolgáltatásokból is tárolhat, kérdezhet le és elemezhet adatokat.
Alternatívák
Bár ez a cikk az Azure Pipelinesról szól, az alábbi alternatívákat érdemes megfontolnia:
Azure DevOps Server használható helyszíni helyettesítőként.
Jenkins egy nyílt forráskódú eszköz, amellyel automatizálhatja a buildeket és az üzembe helyezéseket.
GitHub Actions lehetővé teszi a CI/CD-munkafolyamatok automatizálását közvetlenül a GitHubról.
GitHub-adattárak kódtárként helyettesíthetők. Az Azure Pipelines zökkenőmentesen integrálható a GitHub-adattárakkal.
Ez a cikk az Azure Pipelines általános CI/CD-eljárásait ismerteti. Az alábbiakban néhány számítási környezetet tekinthet meg, amelyek üzembe helyezését megfontolhatja:
App Service egy HTTP-alapú szolgáltatás webalkalmazások, REST API-k és mobil háttérrendszerek üzemeltetésére. A kedvenc nyelven fejleszthet, és az alkalmazások windowsos és Linux-alapú környezetekben is könnyedén futnak és méretezhetők. A Web Apps támogatja az olyan telepítési helyeket, mint a tesztelés és az éles környezet. Az alkalmazásokat üzembe helyezheti egy előkészítési ponton, és felszabadíthatja azt az éles ponton.
Azure-beli virtuális gépek olyan számítási feladatokat kezelnek, amelyek magas szintű vezérlést igényelnek, vagy az operációs rendszer azon összetevőitől és szolgáltatásaitól függenek, amelyek a Web Apps használatával nem lehetségesek.
Azure Power Platform olyan felhőszolgáltatások gyűjteménye, amelyek lehetővé teszik a felhasználók számára az alkalmazások létrehozását, üzembe helyezését és kezelését infrastruktúra vagy műszaki szakértelem nélkül.
Azure Functions egy kiszolgáló nélküli számítási platform, amellyel alkalmazásokat hozhat létre. A Functions használatával triggerekkel és kötésekkel integrálhatja a szolgáltatásokat. A függvények támogatják a telepítési helyeket is, mint a tesztkörnyezet és az éles környezet. Az alkalmazásokat üzembe helyezheti egy előkészítési ponton, és felszabadíthatja azt az éles ponton.
Azure Kubernetes Service (AKS) egy menedzselt Kubernetes-fürt az Azure-ban. A Kubernetes egy nyílt forráskódú tárolóvezénylési platform.
Azure Container Apps lehetővé teszi a tárolóalapú alkalmazások kiszolgáló nélküli platformon való futtatását.
Forgatókönyv részletei
Az alkalmazás- vagy infrastruktúraváltozások üzembe helyezéséhez bevált CI- és CD-eljárások használata számos előnnyel jár, például:
- Rövidebb kiadási ciklusok – Az automatizált CI/CD-folyamatok lehetővé teszik a manuális eljárásoknál gyorsabb üzembe helyezést. Számos szervezet naponta többször telepít.
- Jobb kódminőség – A CI-folyamatok minőségi kapui, például a linting és az egységtesztelés jobb minőségű kódot eredményeznek.
- Csökkent a kiadásának kockázata – A megfelelő CI/CD-eljárások jelentősen csökkentik az új funkciók kiadásának kockázatát. Az üzembe helyezés a kiadás előtt tesztelhető.
- Nagyobb termelékenység – Az automatizált CI/CD lehetővé teszi a fejlesztők számára, hogy ne kelljen a manuális integrációkkal és üzembe helyezésekkel foglalkozniuk, így teljes mértékben az új funkciókra összpontosíthatnak.
- Visszaállítások engedélyezése – Bár a megfelelő CI/CD-eljárások csökkentik a kiadott hibák és regressziók számát, mégis előfordulnak. A CI/CD lehetővé teszi az automatikus visszaállítást a korábbi kiadásokra.
Lehetséges használati esetek
Fontolja meg az Azure Pipelines és a CI/CD-folyamatokat a következő esetekben:
- Az alkalmazásfejlesztés és az üzembe helyezés életciklusának felgyorsítása.
- Minőség és konzisztencia kiépítése automatizált buildelési és kiadási folyamattá.
- Az alkalmazás stabilitásának és üzemideének növelése.
Megfontolások
Ezek a szempontok implementálják az Azure Well-Architected-keretrendszer alappilléreit, amelyek a számítási feladatok minőségének javítására használható vezérelvek. További információ: Microsoft Azure Well-Architected Framework.
Működési kiválóság
Fontolja meg az Infrastruktúra mint kód (IaC) implementálását, hogy meghatározza az infrastruktúrát, és üzembe helyezze a csővezetékekben.
Fontolja meg a VSTS piactéren elérhető tokenizálási feladatok egyikének használatát, a környezetben gyakran hivatkoznak olyan folyamatra, amelyben a bizalmas információk (például API-kulcsok, jelszavak vagy egyéb titkos kódok) helyett tokenek vagy helyőrzők találhatók az üzembe helyezés vagy a konfiguráció során.
Használja a kiadási változókat a kiadási definíciókban, hogy irányítsa a környezetek konfigurációs változásait. A kiadási változók hatóköre egy teljes kiadásra vagy egy adott környezetre terjedhet ki. Ha változókat használ titkos információkhoz, győződjön meg arról, hogy a lakat ikont választja.
Fontolja meg az önállóan üzemeltetett ügynökök használatát, ha biztonságos virtuális hálózaton futó erőforrásokra telepít. Akkor is megfontolhatja a saját üzemeltetésű ügynököket, ha nagy mennyiségű buildet futtat. Magas volumenű építési feladatok esetén a saját üzemeltetésű ügynökökkel költséghatékony módon gyorsíthatja fel a feladatokat.
Érdemes lehet a lehető leghamarabb használni Application Insights és más monitorozási eszközöket a kiadási folyamatban. Számos szervezet csak a termelési környezetben kezdi meg a monitorozást. Más környezetek figyelésével korábban azonosíthatja a hibákat a fejlesztési folyamatban, és elkerülheti az éles környezetben jelentkező problémákat.
Fontolja meg külön monitorozási erőforrások használatát a gyártási környezethez.
Fontolja meg YAML-folyamatok használatát a klasszikus felület helyett. A YAML-folyamatok más kódként is kezelhetők. A YAML-folyamatok például beadhatók a forrásvezérlőbe, és verziószámozottak is lehetnek.
Fontolja meg YAML-sablonok használatát az újrafelhasználás és a folyamatok egyszerűsítése érdekében. A PR- és CI-folyamatok például hasonlóak. Mindkét folyamathoz egyetlen paraméteres sablon használható.
Fontolja meg környezetek létrehozását az előkészítésen és az éles környezeten kívül, olyan tevékenységek támogatásához, mint a manuális felhasználói elfogadási tesztelés, a teljesítmény- és terheléstesztelés, valamint a váltások.
Költségoptimalizálás
A költségoptimalizálás a szükségtelen kiadások csökkentésének és a működési hatékonyság javításának módjairól szól. További információ: A költségoptimalizálási pilléráttekintése.
Az Azure DevOps költségei a hozzáférést igénylő felhasználók számától függenek, valamint egyéb tényezőktől, például az egyidejű buildek/kiadások számától és a tesztfelhasználók számától. További információért lásd: Azure DevOps árazás.
Ez a díjkalkulátor becslést nyújt az Azure DevOps 20 felhasználóval való futtatására.
Az Azure DevOps számlázása felhasználónként havi alapon történik. Az egyidejűleg szükséges folyamatok számától függően további költségek is felmerülhetnek, a tesztfelhasználókon vagy felhasználói alapszintű licenceken felül.
Biztonság
A Microsoft által üzemeltetett ügynökök biztonsági előnyeinek figyelembe vétele a Microsoft által üzemeltetett vagy saját üzemeltetésű ügynökök használatának kiválasztásakor.
Győződjön meg arról, hogy minden környezetmódosítás csővezetékeken keresztül történik. A szerepköralapú hozzáférés-vezérlők (RBAC) megvalósítása a minimális jogosultság elve alapján, megakadályozva, hogy a felhasználók hozzáférjenek a környezetekhez.
Fontolja meg az Azure Pipelines lépéseinek integrálását a függőségek nyomon követéséhez, a licencelés kezeléséhez, a biztonsági rések kereséséhez és a függőségek naprakészen tartásához.
Következő lépések
A CI/CD-vel és az Azure DevOpsszal kapcsolatos további információkért tekintse át az alábbi forrásokat:
- Mi az a DevOps?
- DevOps a Microsoftnál – Hogyan dolgozunk az Azure DevOps-szal?
- CI/CD-folyamat létrehozása .NET-hez az Azure DevOps Projektek segítségével
- Mi az Azure Repos?
- Mi az Azure Pipelines?
- Azure DevOps
- App Service áttekintése
- Bevezetés az Azure Functions-be
- az Azure Key Vault alapfogalmai
- Azure Monitor áttekintése