CI/CD alaparchitektúra az Azure Pipelines használatával
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. Ez nem a különböző környezetekben, például a Azure-alkalmazás-szolgáltatásokban, a virtuális gépeken és az Azure Power Platformon való üzembe helyezés jellemzőire vonatkozik. Az üzembehelyezési platform jellemzőiről külön cikkekben olvashat.
Architektúra
Töltse le az architektúra Visio-fájlját.
Feljegyzés
Bár ez a cikk a CI/CD-t ismerteti az alkalmazások változásaihoz, az Azure Pipelines használható CI/CD-folyamatok kódmódosításokként történő létrehozásához 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égi ellenőrzéseket futtat. 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 pr-felülvizsgálat sikeres, a lekéréses kérelem sikeresen egyesül.
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. 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
CD-folyamat eseményindítója – Az összetevők közzététele aktiválja a CD-folyamatot.
CD-kiadás előkészítéshez – A CD-folyamat letölti a CI-folyamatban létrehozott buildösszetevőket, és üzembe helyezi a megoldást egy átmeneti 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, 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 éles környezetben – Ha a manuális beavatkozás folytatódik, vagy nincs manuális beavatkozás implementálva, a folyamat éles környezetben bocsátja ki a megoldást. A folyamatnak é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ás – Az Azure Monitor megfigyelhetőségi adatokat, például naplókat és metrikákat gyűjt, hogy egy operátor elemezhesse az állapot- és teljesítményadatokat és a használati adatokat. Az alkalmazás Elemzések összegyűjti az alkalmazásspecifikus monitorozási adatokat, például a nyomkövetéseket. 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.
Az 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 PR-folyamatok ellenőrzik a kódot, mielőtt lehetővé tennék a lekéréses kérelem egyesítését a linting, az épület és az egység tesztelése 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.
Az 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.
A 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 titkos kódok a folyamaton keresztül érhetők el. A titkos kulcsokat az Azure Pipelines egy Key Vault-feladattal vagy a Key Vault titkos kulcsainak csatolásával érheti el.
A Monitor egy megfigyelhetőségi erőforrás, amely metrikákat és naplókat, alkalmazástelemetria- és platformmetrikákat 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.
Az alkalmazás Elemzések 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.
A 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 származó adatokat tárolhat, kérdezhet le és elemezhet.
Alternatívák
Bár ez a cikk az Azure Pipelinesról szól, az alábbi alternatívákat érdemes megfontolnia:
Az Azure DevOps Server (korábbi nevén Team Foundation Server) helyszíni helyettesítőként használható.
A Jenkins egy nyílt forráskód eszköz, amellyel automatizálhatja a buildeket és az üzembe helyezéseket.
A GitHub Actions lehetővé teszi a CI/CD-munkafolyamatok automatizálását közvetlenül a GitHubról.
A 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:
Az App Services 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 üzembehelyezési helyeket, mint az előkészíté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.
Az Azure-beli virtuális gépek olyan számítási feladatokat kezelnek, amelyek nagy fokú felügyeletet igényelnek, vagy olyan operációsrendszer-összetevőktől és szolgáltatásoktól függenek, amelyek nem lehetségesek a Web Appsben (például a Windows GAC-ban vagy a COM-ban).
Az 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 anélkül, hogy infrastruktúrára vagy műszaki szakértelemre van szükségük.
Az 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 az olyan üzembehelyezési helyeket is, mint az előkészíté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.
Az Azure Kubernetes Service (AKS) egy felügyelt Kubernetes-fürt az Azure-ban. A Kubernetes egy nyílt forráskód tárolóvezénylési platform.
Az Azure Container Apps lehetővé teszi tárolóalapú alkalmazások futtatását kiszolgáló nélküli platformon.
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 is üzembe helyez.
- 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ökkentett kiadási kockázat – 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 hatékonyság – Az automatizált CI/CD lehetővé teszik a fejlesztők számára a manuális integrációk és üzembe helyezések használatát, hogy az új funkciókra összpontosítsanak.
- Visszaállítás engedélyezése – Bár a megfelelő CI/CD-eljárások csökkentik a kiadott hibák vagy 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 Framework alappilléreit, amely a számítási feladatok minőségének javítására használható vezérelvek halmaza. További információ: Microsoft Azure Well-Architected Framework.
Működés eredményessége
Fontolja meg az infrastruktúra kódként (IaC) való implementálását az infrastruktúra meghatározásához és a folyamatokban való üzembe helyezéséhez.
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.
A kiadási változók használata a kiadási definíciókban a környezetek konfigurációs változásainak ösztönzésére. 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 a saját üzemeltetésű ügynökök használatát, ha biztonságos virtuális hálózaton futó erőforrásokra telepíti azokat. Akkor is megfontolhatja a saját üzemeltetésű ügynököket, ha nagy mennyiségű buildet futtat. Nagy mennyiségű build esetén a saját üzemeltetésű ügynökökkel költséghatékonyan gyorsíthatja fel a buildeket.
A kiadási folyamat során érdemes lehet a lehető leghamarabb használni az Alkalmazás Elemzések és más monitorozási eszközöket. Számos szervezet csak éles környezetben kezdi meg a monitorozást. A többi környezet figyelésével azonosíthatja a fejlesztési folyamat korábbi hibáit, és elkerülheti az éles környezetben előforduló problémákat.
Fontolja meg külön monitorozási erőforrások használatát az éles környezethez.
Fontolja meg a 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 a YAML-sablonok használatát az újrafelhasználás előmozdítása é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 az előkészítésen és az éles környezeten kívüli környezetek létrehozását olyan tevékenységek támogatásához, mint a manuális felhasználói elfogadás tesztelése, a teljesítmény- és terheléstesztelés és a visszaállítás.
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ókért tekintse meg az Azure DevOps díjszabását.
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. A további tesztfelhasználók és a felhasználói alapszintű licencek mellett az egyidejű folyamatoktól függően további díjak is felmerülhetnek.
Biztonság
Vegye figyelembe a Microsoft által üzemeltetett ügynökök használatának biztonsági előnyeit, amikor kiválasztja, hogy a Microsoft által üzemeltetett vagy saját üzemeltetésű ügynököket használja-e.
Győződjön meg arról, hogy a környezetek módosításai folyamatokon keresztül történnek. 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 – Az Azure DevOps használata
- CI/CD-folyamat létrehozása a .NET-hez az Azure DevOps Projects használatával
- Mi az Az Azure-adattár?
- Mi az Az Azure Pipelines?
- Azure DevOps
- Az App Service áttekintése
- Az Azure Functions bemutatása
- Az Azure Key Vault alapfogalmai
- Azure Monitor – áttekintés