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

Ci/CD-folyamat architektúradiagramja az Azure Pipelines használatával.

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:

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

  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. 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. CD-folyamat eseményindítója – Az összetevők közzététele aktiválja a CD-folyamatot.

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

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

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