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 Azure App Services, Virtual Machines a Azure Power Platform. Specifika platformy nasazení jsou popsána v samostatných článcích.
Architektura
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:
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čí.
CI kanál – Sloučení do Azure Repos Git spustí CI proces. 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. Testy integrace můžou být náročné na prostředky, takže jejich spuštění v kanálu CI vyrovnává rychlost vývoje a zjišťování chyb. Je také důležité si uvědomit, že úspěšné provedení testů v žádosti o přijetí změn není vždy zajištěno, protože změny v hlavní větvi můžou zavádět nové problémy a zvýrazňovat potřebu testování po sloučení. Díky těmto faktorům je kanál CI lepším místem pro integrační testy než kanál PR. 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, proces skončí a vývojář bude muset provést potřebné změny. Výsledkem úspěšného spuštění tohoto sestavovacího procesu je vytvoření a publikování artefaktů sestavení.
Spouštěč kanálu CD – uvolnění artefaktů spouští kanál CD.
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.
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.
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 Artifact Feeds umožňují spravovat a sdílet softwarové balíčky, jako je Maven, npm a NuGet. Kanály artefaktů vám umožňují spravovat životní cyklus vašich balíčků, včetně verzování, propagace a vyřazování. 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 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. Web Apps podporují sloty nasazení, jako je například prostředí pro přípravu 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 u Web Apps 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í. 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 architektury Azure Well-Architected Framework, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. 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.
Zvažte použití jedné z Tokenizace úloh dostupné na tržišti VSTS. V tomto kontextu se často odkazuje na proces, kdy se citlivé informace (například klíče rozhraní API, hesla nebo jiné tajné kódy) během nasazování nebo konfigurace nahrazují tokeny nebo zástupnými symboly.
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.
Pokud nasazujete do prostředků spuštěných v zabezpečené virtuální síti, zvažte použití vlastní hostované agenty. Pokud máte vysoký objem buildů, můžete také zvážit vlastní agenty. V případech velkého objemu sestavení lze použít samo-hostované agenty k urychlení sestavení a nákladové efektivitě.
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.
Bezpečnost
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ů 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í:
- Co je DevOps?
- DevOps v Microsoftu – jak pracujeme s azure DevOps
- Vytvoření CI/CD pipeline pro .NET pomocí Azure DevOps Projects
- Co je Azure Repos?
- Co je Azure Pipelines?
- Azure DevOps
- přehled služby App Service
- Úvod do služby Azure Functions
- základních konceptů služby Azure Key Vault
- Přehled Azure Monitoru
Související prostředky
- kontrolní seznam DevOps
- CI/CD pro virtuální počítače Azure
- CI/CD pro kontejnery
- Vytvoření kanálu CI/CD pro mikroslužby v Kubernetes