Základní architektura CI/CD se službou Azure Pipelines

Tento článek popisuje pracovní postup DevOps vysoké úrovně pro nasazení změn aplikací do přípravných a produkčních prostředí v Azure. Řešení používá postupy kontinuální integrace a průběžného nasazování (CI/CD) se službou Azure Pipelines.

Důležité

Tento článek se věnuje obecné architektuře CI/CD s využitím Azure Pipelines. Účelem není pokrýt specifika nasazení do různých prostředí, jako jsou Aplikace Azure Services, Virtual Machines a Azure Power Platform. Specifika platformy nasazení jsou popsána v samostatných článcích.

Architektura

Diagram architektury kanálu CI/CD s využitím Azure Pipelines

Stáhněte si soubor aplikace Visio s touto architekturou.

Poznámka:

I když se tento článek zabývá CI/CD pro změny aplikací, azure Pipelines je možné použít také k sestavení kanálů CI/CD pro infrastrukturu jako změny kódu (IaC).

Tok dat

Data procházejí tímto scénářem:

  1. Kanál žádosti o přijetí změn – Žádost o přijetí změn (PR) do Gitu Azure Repos aktivuje kanál žádosti o přijetí změn. Tento kanál spouští rychlé kontroly kvality. Tyto kontroly by měly zahrnovat:

    • Sestavení kódu, který vyžaduje vyžádání závislostí ze systému správy závislostí.
    • Použití nástrojů k analýze kódu, jako je analýza statického kódu, lintování a kontrola zabezpečení
    • Testy jednotky

    Pokud některá z kontrol selže, spuštění kanálu skončí a vývojář bude muset provést požadované změny. Pokud všechny kontroly projdou, kanál by měl vyžadovat kontrolu žádosti o přijetí změn. Pokud kontrola žádosti o přijetí změn selže, kanál skončí a vývojář bude muset provést požadované změny. Pokud všechny kontroly a kontroly žádostí o přijetí změn proběhnou úspěšně, žádost o přijetí změn se úspěšně sloučí.

  2. Kanál CI – Sloučení s Gitem do Azure Repos aktivuje kanál CI. Tento kanál spouští stejné kontroly jako kanál žádosti o přijetí změn s některými důležitými dodatky. Kanál CI spouští integrační testy. Tyto integrační testy by neměly vyžadovat nasazení řešení, protože artefakty sestavení ještě nebyly vytvořeny. Pokud integrační testy vyžadují tajné kódy, kanál tyto tajné kódy získá ze služby Azure Key Vault. Pokud některá z kontrol selže, kanál skončí a vývojář bude muset provést požadované změny. Výsledkem úspěšného spuštění tohoto kanálu je vytvoření a publikování artefaktů sestavení.

  3. Trigger kanálu CD – Publikování artefaktů aktivuje kanál CD.

  4. Verze CD pro přípravu – Kanál CD stáhne artefakty sestavení vytvořené v kanálu CI a nasadí řešení do přípravného prostředí. Kanál pak spustí akceptační testy pro přípravné prostředí a ověří nasazení. Pokud některý test přijetí selže, kanál skončí a vývojář bude muset provést požadované změny. Pokud jsou testy úspěšné, může být implementována úloha ručního ověření, která vyžaduje osobu nebo skupinu k ověření nasazení a obnovení kanálu.

  5. Verze CD do produkčního prostředí – Pokud je ruční zásah obnoven nebo není implementován žádný ruční zásah, kanál uvolní řešení do produkčního prostředí. Kanál by měl spustit orientační testy v produkčním prostředí, aby se zajistilo, že vydání funguje podle očekávání. Pokud krok ručního zásahu způsobí zrušení, vydání selže nebo orientační testy selžou, vydání se vrátí zpět, kanál skončí a vývojář bude muset provést požadované změny.

  6. Monitorování – Azure Monitor shromažďuje data pozorovatelnosti, jako jsou protokoly a metriky, aby operátor mohl analyzovat data o stavu, výkonu a využití. Aplikační Přehledy shromažďuje všechna data monitorování specifická pro aplikaci, jako jsou trasování. Azure Log Analytics slouží k ukládání všech dat.

Komponenty

  • Úložiště Git Azure Repos slouží jako úložiště kódu, které poskytuje správu verzí a platformu pro projekty pro spolupráci.

  • Azure Pipelines poskytuje způsob, jak sestavovat, testovat, balit a vydávat kód aplikace a infrastruktury. Tento příklad má tři odlišné kanály s následujícími zodpovědnostmi:

    • Kanály PR ověřují kód před povolením sloučení žádosti o přijetí změn prostřednictvím lintování, sestavování a testování jednotek.
    • Kanály CI se spouštějí po sloučení kódu. Provádějí stejné ověření jako kanály žádosti o přijetí změn, ale pokud vše proběhne úspěšně, přidávají integrační testování a publikují artefakty sestavení.
    • Kanály CD nasazují artefakty sestavení, spouští akceptační testy a vydávají je do produkčního prostředí.
  • Informační kanály Azure Artifact umožňují spravovat a sdílet softwarové balíčky , jako je Maven, npm a NuGet. Informační kanály artefaktů umožňují spravovat životní cyklus balíčků, včetně správy verzí, povýšení a vyřazení balíčků. Pomůže vám to zajistit, aby váš tým používal nejnovější a nejbezpečnější verze balíčků.

  • Key Vault poskytuje způsob, jak spravovat zabezpečená data pro vaše řešení, včetně tajných kódů, šifrovacích klíčů a certifikátů. V této architektuře se používá k ukládání tajných kódů aplikací. K těmto tajným kódům se přistupuje prostřednictvím kanálu. Tajné kódy mohou být přístupné službou Azure Pipelines pomocí úlohy služby Key Vault nebo propojením tajných kódů ze služby Key Vault.

  • Monitorování je pozorovatelný prostředek, který shromažďuje a ukládá metriky a protokoly, telemetrii aplikací a metriky platformy pro služby Azure. Tato data slouží k monitorování aplikace, nastavení upozornění, řídicích panelů a provádění analýzy původní příčiny selhání.

  • Application Přehledy je monitorovací služba, která poskytuje přehled o výkonu a využití webových aplikací v reálném čase.

  • Pracovní prostor služby Log Analytics poskytuje centrální umístění, kde můžete ukládat, dotazovat a analyzovat data z více zdrojů, včetně prostředků Azure, aplikací a služeb.

Alternativy

I když se tento článek zaměřuje na Azure Pipelines, můžete zvážit tyto alternativy:

  • Azure DevOps Server (dříve označovaný jako Team Foundation Server) se dá použít jako místní náhrada.

  • Jenkins je opensourcový nástroj, který slouží k automatizaci sestavení a nasazení.

  • GitHub Actions umožňuje automatizovat pracovní postupy CI/CD přímo z GitHubu.

  • Úložiště GitHubu je možné nahradit úložištěm kódu. Azure Pipelines se bezproblémově integruje s úložišti GitHubu.

Tento článek se zaměřuje na obecné postupy CI/CD se službou Azure Pipelines. Tady jsou některá výpočetní prostředí, do kterých byste mohli zvážit nasazení:

  • App Services je služba založená na protokolu HTTP pro hostování webových aplikací, rozhraní REST API a mobilních back-endů. Můžete vyvíjet ve svém oblíbeném jazyce a aplikace běží a škálují se snadno v prostředích s Windows i Linuxem. Web Apps podporuje sloty nasazení, jako je příprava a produkční prostředí. Aplikaci můžete nasadit do přípravného slotu a uvolnit ji do produkčního slotu.

  • Azure Virtual Machines zpracovává úlohy, které vyžadují vysoký stupeň kontroly, nebo závisí na komponentách a službách operačního systému, které nejsou s Web Apps možné (například GAC pro Windows nebo COM).

  • Azure Power Platform je kolekce cloudových služeb, která uživatelům umožňuje vytvářet, nasazovat a spravovat aplikace bez nutnosti infrastruktury nebo technických odborných znalostí.

  • Azure Functions je bezserverová výpočetní platforma, kterou můžete použít k vytváření aplikací. Pomocí služby Functions můžete pomocí triggerů a vazeb integrovat služby. Funkce také podporují sloty nasazení, jako je příprava a produkční prostředí. Aplikaci můžete nasadit do přípravného slotu a uvolnit ji do produkčního slotu.

  • Azure Kubernetes Service (AKS) je spravovaný cluster Kubernetes v Azure. Kubernetes je opensourcová platforma pro orchestraci kontejnerů.

  • Azure Container Apps umožňuje spouštět kontejnerizované aplikace na bezserverové platformě.

Podrobnosti scénáře

Použití osvědčených postupů CI a CD k nasazení změn aplikací nebo infrastruktury přináší různé výhody, mezi které patří:

  • Kratší cykly vydávání verzí – Automatizované procesy CI/CD umožňují nasazení rychleji než ruční postupy. Mnoho organizací nasazuje vícekrát denně.
  • Lepší kvalita kódu – brány kvality v kanálech CI, jako je linting a testování jednotek, mají za následek kód vyšší kvality.
  • Snížení rizika uvolnění – správné postupy CI/CD výrazně snižují riziko uvolnění nových funkcí. Nasazení je možné otestovat před vydáním.
  • Vyšší produktivita – Automatizované CI/CD vývojářům umožňuje pracovat na ručních integracích a nasazeních, aby se mohli soustředit na nové funkce.
  • Povolte vrácení zpět – zatímco správné postupy CI/CD snižují počet chyb nebo regresí vydaných, stále k nim dochází. CI/CD může povolit automatizované vrácení zpět do dřívějších verzí.

Potenciální případy použití

Zvažte azure Pipelines a procesy CI/CD pro:

  • Rychlejší vývoj aplikací a životní cyklus nasazení
  • Sestavování kvality a konzistence do automatizovaného procesu sestavení a vydávání.
  • Zvýšení stability a doby provozu aplikace

Důležité informace

Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.

Provozní dokonalost

  • Zvažte implementaci infrastruktury jako kódu (IaC), abyste definovali infrastrukturu a nasadíte ji v kanálech.

  • Zvažte použití jedné z úloh tokenizace dostupných na marketplace VSTS v kontextu často označuje proces, kdy se citlivé informace (například klíče rozhraní API, hesla nebo jiné tajné kódy) během nasazení nebo konfigurace nahradí tokeny nebo zástupnými symboly.

  • Pomocí proměnných vydaných verzí v definicích vydané verze můžete řídit změny konfigurace prostředí. Proměnné vydané verze můžou být vymezeny na celou verzi nebo na dané prostředí. Při použití proměnných pro tajné informace se ujistěte, že jste vybrali ikonu visacího zámku.

  • Pokud nasazujete do prostředků spuštěných v zabezpečené virtuální síti, zvažte použití agentů v místním prostředí. Pokud používáte velký objem buildů, můžete také zvážit agenty v místním prostředí. V případě velkých svazků sestavení je možné agenty v místním prostředí použít k urychlení sestavení nákladově efektivním způsobem.

  • Zvažte použití Přehledy aplikací a dalších monitorovacích nástrojů co nejdříve v kanálu verze. Mnoho organizací začne monitorovat jenom v produkčním prostředí. Monitorováním ostatních prostředí můžete identifikovat chyby dříve ve vývojovém procesu a vyhnout se problémům v produkčním prostředí.

  • Zvažte použití samostatných monitorovacích prostředků pro produkční prostředí.

  • Zvažte použití kanálů YAML místo klasického rozhraní. Kanály YAML je možné považovat za jiné kódy. Kanály YAML je možné vrátit se změnami ke správě zdrojového kódu a ke správě verzí, například.

  • Zvažte použití šablon YAML k povýšení opětovného použití a zjednodušení kanálů. Například kanály PR a CI jsou podobné. Pro oba kanály je možné použít jednu parametrizovanou šablonu.

  • Zvažte vytvoření prostředí nad rámec přípravy a produkce, která podporují aktivity, jako je ruční testování přijetí uživatelů, výkon a zátěžové testování a vrácení zpět.

Optimalizace nákladů

Optimalizace nákladů se zabývá způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.

Náklady na Azure DevOps závisí na počtu uživatelů ve vaší organizaci, kteří vyžadují přístup, spolu s dalšími faktory, jako je počet požadovaných souběžných buildů a vydaných verzí a počet testovacích uživatelů. Další informace najdete v tématu o cenách Azure DevOps.

Tato cenová kalkulačka poskytuje odhad pro spouštění Azure DevOps s 20 uživateli.

Azure DevOps se účtuje podle jednotlivých uživatelů za měsíc. V závislosti na souběžných kanálech můžou být další poplatky, kromě dalších testovacích uživatelů nebo základních licencí uživatelů.

Zabezpečení

  • Při rozhodování, jestli se mají používat agenti hostovaní Microsoftem nebo agenti v místním prostředí, zvažte výhody zabezpečení.

  • Zajistěte, aby se všechny změny prostředí prováděly prostřednictvím kanálů. Implementujte řízení přístupu na základě role (RBAC) na principu nejnižších oprávnění, což brání uživatelům v přístupu k prostředím.

  • Zvažte integraci kroků ve službě Azure Pipelines ke sledování závislostí, správě licencování, kontrole ohrožení zabezpečení a udržování závislostí k aktuálnímu stavu.

Další kroky

Další informace o CI/CD a Azure DevOps najdete v následujících zdrojích informací: