Základní architektura Azure Pipelines pro CI/CD

Tento článek představuje základní architekturu pro vytváření kanálu kontinuální integrace a průběžného nasazování (CI/CD) s Azure Pipelines. Tuto architekturu použijte jako výchozí bod, pokud potřebujete automatizovat sestavování, testování a nasazování aplikací do přípravných a produkčních prostředí v Azure. Architektura definuje tři kanály, žádosti o přijetí změn (PR), kontinuální integraci (CI) a průběžné nasazování (CD) a ukazuje, jak spolupracují s Azure Repos, Azure Key Vault a Azure Monitor k ověření, sestavování a nasazování aplikací bezpečně.

Architektura

diagram architektury kanálu CI/CD pomocí Azure Pipelines.

stáhnout soubor Visia této architektury.

Poznámka

I když se tento článek zabývá CI/CD pro změny aplikací, Azure Pipelines lze také využít ke sestavení kanálů CI/CD pro změny infrastruktury jako kódu (IaC).

Dataflow

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 Azure Repos Git aktivuje kanál PR. Tento pipeline 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í
    • Jednotkové testy

    Pokud některá z kontrol selže, běh kanálu bude ukončen 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, proces se ukončí a vývojář bude muset provést požadované úpravy. 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. CI kanál – Sloučení do Azure Repos Git spustí CI proces. Tato pipeline spouští stejné kontroly jako PR pipeline a navíc integrační testy. CI pipeline spouští integrační testy místo PR pipeline ze dvou důvodů:

    • Integrační testy můžou být náročné na prostředky, takže jejich spuštění po sloučení vyrovnává rychlost vývoje s detekcí chyb.
    • To, že testy v PR projdou, nezaručuje, že budou úspěšné i po sloučení, protože změny v hlavní větvi mohou zavést nové problémy, které odhalí až testování po sloučení.

    Tyto integrační testy by neměly vyžadovat nasazení řešení, protože artefakty sestavení se ještě nevytvořily. Pokud test vyžaduje tajné kódy, kanál je načte z Azure Key Vault. Pokud některá kontrola selže, pipeline se ukončí a vývojář musí provést požadované změny. Úspěšné spuštění této pipeline vytvoří a publikuje artefakty sestavení.

  3. Spouštěč kanálu CD – uvolnění artefaktů spouští kanál CD.

  4. Vydání CD do přípravného – CD pipeline stáhne artefakty sestavení vytvořené v CI pipeline a nasadí řešení do přípravného prostředí. Potrubí pak spustí akceptační testy v rámci přípravného prostředí, aby ověřilo nasazení. Pokud některý akceptační test selže, proces se zastaví a vývojář bude muset provést požadované změny. Pokud jsou testy úspěšné, je možné implementovat úlohu ručního ověření ,, která vyžaduje, aby osoba nebo skupina ověřila nasazení a pokračovala v kanálu.

  5. Nasazení do produkčního prostředí – Pokud je ruční zásah obnoven nebo pokud není implementován žádný ruční zásah, pipeline uvolní řešení do produkčního prostředí. Pipeline by měl spustit smoke 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í, nasazení selže nebo kouřové testy selžou, nasazení je vráceno zpět, cesta skončí a vývojář bude muset provést požadované změny.

  6. monitorování – Azure Monitor shromažďuje observační data, jako jsou protokoly a metriky; to umožňuje operátorovi analyzovat data o stavu, výkonu a využití. Application Insights shromažďuje všechna data monitorování specifická pro aplikace, jako jsou trasování. Azure Log Analytics slouží k ukládání všech dat.

Součásti

  • Úložiště Azure Repos Git 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, zabalit 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:

    • PR pipelines ověřují kód před povolením sloučení pull requestu prostřednictvím lintování, kompilace a jednotkového testování.
    • Kanály CI se spouštějí po sloučení kódu. Provádějí stejné ověření jako PR kanály, ale přidají integrační testování a publikují artefakty sestavení, pokud vše proběhne úspěšně.
    • Kanály CD nasazují artefakty sestavení, spouští akceptační testy a vydávají je do produkčního prostředí.
  • Azure Artifacts informační kanály umožňují spravovat a sdílet softwarové balíčky, jako jsou Maven, npm a NuGet. Kanály umožňují spravovat životní cyklus vašich balíčků, včetně správy verzí, povyšování a vyřazování balíčků, což pomáhá zajistit, aby váš tým používal nejnovější a nejbezpečnější verze vašich závislostí.

  • Key Vault poskytuje způsob správy zabezpečených dat 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 tajemstvím se přistupuje prostřednictvím potrubí. Tajemství mohou být přístupná pomocí úlohy Key Vault nebo propojením tajemství z Key Vaultslužbou Azure Pipelines.

  • Monitor je prostředek pozorovatelnosti, 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 Insights je monitorovací služba, která poskytuje přehledy 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 je možné použít jako místní náhradu.

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

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

  • úložiště GitHub 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 service 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. App Service podporuje sloty nasazení, jako je příprava a produkční prostředí, takže můžete nasadit aplikaci 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é se službou App Service nejsou možné.

  • 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í – automatizované procesy CI/CD umožňují nasazení rychleji než ruční postupy. Mnoho organizací denně nasazuje několikrát.
  • Lepší kvalita kódu – brány pro zvýšení kvality v kanálech CI, jako je lintování 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í, protože nasazení je možné otestovat před vydáním.
  • Zvýšená produktivita – Automatizovaná CI/CD uvolňuje vývojáře od práce na ručních integracích a nasazeních, aby se mohli soustředit na nové funkce.
  • Povolit vrácení zpět – zatímco správné postupy CI/CD snižují počet vydaných chyb nebo regresí, 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í
  • Vytváření kvality a jednotnosti v automatizovaném procesu sestavování a vydávání.
  • Zvýšení stability a doby provozu aplikace

Úvahy

Tyto aspekty implementují pilíře Dobře navržené architektury Azure, což je sada hlavních principů, které můžete použít ke zlepšení kvality pracovní zátěže. Další informace najdete v tématu rozhraní Microsoft Azure Well-Architected Framework.

Efektivita provozu

  • Zvažte implementaci Infrastruktury jako kód (IaC) k definování vaší infrastruktury a nasazení v rámci vašich pipelines.

  • Pomocí proměnných vydání v definicích vydání můžete řídit změny konfigurace vašich 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.

  • Zvažte použití agentů hostovaných místně, pokud nasazujete do prostředků běžících v zabezpečené virtuální síti nebo pokud spouštíte velké množství sestavení. Místně hostovaní agenti vám můžou pomoct urychlit sestavení nákladově efektivně i ve velkém měřítku.

  • Zvažte použití Application Insights a dalších monitorovacích nástrojů co nejdříve ve vašem nasazovacím kanálu. 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 lze uložit do správy zdrojového kódu a verzovat, například.

  • Zvažte použití šablon YAML k propagaci 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 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. Kromě dalších testovacích uživatelů nebo základních licencí uživatelů můžou být účtovány další poplatky v závislosti na případných souběžných kanálech.

Zabezpečení

  • Zvažte výhody zabezpečení při používání agentů hostovaných Microsoftem při výběru, jestli se mají používat agenti hostovaní Microsoftem nebo agenti v místním prostředí.

  • 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ů v Azure Pipelines ke sledování závislostí, správě licencování, kontrole ohrožení zabezpečení a udržování závislostí v aktualizovaném stavu.

Další kroky