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. 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

CI/CD-folyamatok architektúradiagramja az Azure Pipelines használatával.

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:

  1. 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.

  2. 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.

  3. A CD-folyamat elindítója – Az artefaktok közzététele aktiválja a CD-folyamatot.

  4. 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.

  5. 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.

  6. 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: