Kanál CI/CD pro úlohy založené na kontejnerech

Container Registry
Cosmos DB
Kubernetes Service
Monitor
Pipelines

Tento ukázkový scénář se vztahuje na firmy, které chtějí modernizovat vývoj aplikací pomocí kontejnerů a pracovních postupů DevOps. V tomto scénáři je Node.js webové aplikace sestavená a nasazená Jenkinse do Azure Container Registry a služby Azure Kubernetes. Pro globálně distribuovanou databázovou vrstvu se používá Azure Cosmos DB. Pro sledování a řešení potíží s výkonem aplikace Azure Monitor integrována s instancí a řídicím panelem Grafana.

Příklady scénářů aplikace zahrnují poskytování automatizovaného vývojového prostředí, ověřování nového potvrzení kódu a vkládání nových nasazení do pracovních nebo produkčních prostředí. Firmy musely tradičně vytvářet a kompilovat aplikace a aktualizace a udržovat velký monolitické základ kódu. Díky modernímu přístupu ke vývojům aplikací, které využívají průběžnou integraci (CI) a průběžné nasazování (CD), můžete rychleji sestavovat, testovat a nasazovat služby. Tento moderní přístup umožňuje rychleji vydávat aplikace a aktualizace vašim zákazníkům a reagovat na měnící se obchodní požadavky.

Pomocí služeb Azure, jako je Azure Kubernetes Service, Container Registry a Cosmos DB, mohou společnosti využít nejnovější postupy vývoje aplikací a nástroje ke zjednodušení procesu implementace vysoké dostupnosti.

Relevantní případy použití

Mezi další relevantní případy použití patří:

  • Modernizaci postupy pro vývoj aplikací pro mikroslužby, přístup založený na kontejneru.
  • Urychlení životního cyklu vývoje aplikací a nasazení.
  • Automatizace nasazení do prostředí testování nebo přijetí pro ověřování.

Architektura

Přehled architektury komponent Azure, které se podílejí na scénáři DevOps pomocí Jenkinse, Azure Container Registry a služby Azure Kubernetes

Tento scénář pokrývá DevOps kanál pro Node.js webové aplikace a back-endu databáze. Data se budou natékat v rámci scénáře následujícím způsobem:

  1. Vývojář provede změny ve zdrojovém kódu Node.js webové aplikace.
  2. Změna kódu se potvrdí do úložiště správy zdrojového kódu, jako je GitHub.
  3. K zahájení procesu kontinuální integrace (CI) Webhook GitHubu aktivuje sestavení projektu Jenkinse.
  4. Úloha sestavení Jenkinse používá k provedení procesu sestavení kontejneru dynamického agenta sestavení ve službě Azure Kubernetes.
  5. Obrázek kontejneru je vytvořen z kódu ve správě zdrojového kódu a pak je vložen do Azure Container Registry.
  6. Prostřednictvím průběžného nasazování (CD) Jenkinse nasadí tuto aktualizovanou image kontejneru do clusteru Kubernetes.
  7. Webová aplikace Node.js jako svůj back-end používá Cosmos DB. Cosmos DB i služba Azure Kubernetes Service hlásí metriky Azure Monitor.
  8. Instance Grafana poskytuje vizuální řídicí panely výkonu aplikace na základě dat z Azure Monitor.

Komponenty

  • Jenkinse je open source automatizační server, který se dá integrovat se službami Azure, a umožnit tak průběžnou integraci (CI) a průběžné nasazování (CD). V tomto scénáři Jenkinse orchestruje vytváření nových imagí kontejneru na základě potvrzení do správy zdrojových kódů, doručí tyto image do Azure Container Registry a pak aktualizuje instance aplikace ve službě Azure Kubernetes.
  • Azure Linux Virtual Machines je IaaS platforma, která se používá ke spouštění instancí Jenkinse a Grafana.
  • Azure Container Registry ukládá a spravuje image kontejnerů, které používá cluster služby Azure Kubernetes. Image se bezpečně ukládají a můžou je replikovat do jiných oblastí na platformě Azure a urychlit tak dobu nasazení.
  • Služba Azure Kubernetes je spravovaná platforma pro Kubernetes, která umožňuje nasazovat a spravovat aplikace s využitím kontejnerů bez odbornosti pro orchestraci kontejnerů. Jako hostovaná služba Kubernetes se za vás Azure stará o důležité úlohy, jako je monitorování stavu a údržba.
  • Azure Cosmos DB je globálně distribuovaná databáze s více modely, která vám umožní vybírat z různých modelů databáze a konzistence podle vašich potřeb. V případě Cosmos DB se data dají globálně replikovat a pro nasazení a konfiguraci neexistují žádné součásti pro správu clusteru ani replikaci.
  • Azure monitor pomáhá sledovat výkon, zachovat zabezpečení a identifikovat trendy. Metriky získané monitorováním můžou používat jiné prostředky a nástroje, jako je Grafana.
  • Grafana je open source řešení pro dotazování, vizualizaci, upozorňování a pochopení metrik. Modul plug-in zdroje dat pro Azure Monitor umožňuje Grafana vytváření vizuálních řídicích panelů pro monitorování výkonu aplikací běžících ve službě Azure Kubernetes a používání Cosmos DB.

Alternativy

  • Azure Pipelines vám pomůžou s implementací kanálu průběžné integrace (CI), testování a nasazení (CD) pro libovolnou aplikaci.
  • Kubernetes je možné spustit přímo na virtuálních počítačích Azure namísto prostřednictvím spravované služby, pokud chcete mít větší kontrolu nad clusterem.
  • Service Fabric je další alternativní kontejner Orchestrator, který může nahradit AKS.

Požadavky

Dostupnost

Tento scénář kombinuje Azure Monitor s Grafana pro vizuální řídicí panely, aby mohl monitorovat výkon aplikace a nahlásit problémy. Tyto nástroje umožňují monitorovat a řešit problémy s výkonem, které mohou vyžadovat aktualizace kódu, což lze nasadit pomocí kanálu CI/CD.

Nástroj pro vyrovnávání zatížení jako součást clusteru služby Azure Kubernetes distribuuje provoz aplikace do jednoho nebo více kontejnerů (lusků), které spouštějí vaši aplikaci. Tento přístup ke spouštění kontejnerových aplikací v Kubernetes poskytuje vysoce dostupnou infrastrukturu pro vaše zákazníky.

Škálovatelnost

Služba Azure Kubernetes umožňuje škálovat počet uzlů clusteru, aby splňovaly požadavky vašich aplikací. Jak vaše aplikace roste, můžete škálovat počet uzlů Kubernetes, na kterých běží vaše služba.

Data aplikací se ukládají v Azure Cosmos DB globálně distribuovaná databáze s více modely, která se dá globálně škálovat. Cosmos DB abstrakce nutnost škálování vaší infrastruktury jako s tradičními součástmi databáze a můžete se rozhodnout pro replikaci Cosmos DB globálně, aby splnila požadavky vašich zákazníků.

Další témata o škálovatelnosti najdete v tématu Kontrolní seznam efektivity výkonu dostupný v cetrum architektury Azure.

Zabezpečení

Pro minimalizaci nároků na útok nezveřejňuje tento scénář instanci virtuálního počítače Jenkinse prostřednictvím protokolu HTTP. Pro všechny úlohy správy, které vyžadují interakci s Jenkinse, vytvoříte zabezpečené vzdálené připojení pomocí tunelu SSH z místního počítače. Pro instance virtuálních počítačů Jenkinse a Grafana je povoleno pouze ověřování veřejného klíče SSH. Přihlášení na základě hesla jsou zakázaná. Další informace najdete v tématu spuštění serveru Jenkinse v Azure.

Pro oddělení přihlašovacích údajů a oprávnění tento scénář používá vyhrazený instanční objekt Azure Active Directory (AD). Přihlašovací údaje pro tento instanční objekt se ukládají jako zabezpečený objekt přihlašovacích údajů v Jenkinse, takže nejsou přímo vystavené a viditelné ve skriptech nebo kanálu sestavení.

Obecné pokyny k navrhování zabezpečených řešení najdete v dokumentaci k zabezpečení Azure.

Odolnost

Tento scénář používá pro vaši aplikaci službu Azure Kubernetes. Integrovaná do Kubernetes jsou odolné komponenty, které sledují a restartují kontejnery (lusky) v případě, že dojde k nějakému problému. V kombinaci s běžícím více uzly Kubernetes může vaše aplikace tolerovat uzel pod nebo nedostupný.

Obecné pokyny k navrhování odolných řešení najdete v tématu navrhování spolehlivých aplikací Azure.

Nasazení scénáře

Požadavky

  • Musíte mít existující účet Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

  • Potřebujete dvojici veřejného klíče SSH. Postup vytvoření páru veřejných klíčů najdete v tématu Vytvoření a použití páru klíčů ssh pro virtuální počítače se systémem Linux.

  • Pro ověřování služby a prostředků potřebujete instanční objekt Azure Active Directory (AD). V případě potřeby můžete instanční objekt vytvořit pomocí AZ AD SP Create-for-RBAC .

    az ad sp create-for-rbac --name myDevOpsScenario
    

    Poznamenejte si appId a heslo ve výstupu tohoto příkazu. Tyto hodnoty zadáte do šablony při nasazení scénáře.

  • Podporované verze Kubernetes pro vaši oblast nasazení najdete spuštěním AZ AKS get-versions. Následující příkaz Získá výchozí verzi rozhraní příkazového řádku :

    az aks get-versions -l <region> --query "orchestrators[?default!=null].orchestratorVersion" -o tsv
    

Návod

Pokud chcete tento scénář nasadit pomocí šablony Azure Resource Manager, proveďte následující kroky.

  1. Kliknutím na níže uvedený odkaz nasazení řešení nasadíte.

    Nasazení do Azure

  2. Počkejte, až se nasazení šablony otevře v Azure Portal, a pak proveďte následující kroky:

    • Zvolte možnost vytvořit novou skupinu prostředků a potom do textového pole zadejte název, například myAKSDevOpsScenario .
    • V rozevíracím seznamu umístění vyberte oblast.
    • Z příkazu zadejte ID a heslo aplikace instančního objektu az ad sp create-for-rbac .
    • Zadejte uživatelské jméno a zabezpečené heslo pro instanci Jenkinse a konzolu Grafana.
    • Zadejte klíč SSH pro zabezpečení přihlášení k virtuálním počítačům se systémem Linux.
    • Z příkazu zadejte verzi Kubernetes az aks get-versions .
    • Přečtěte si podmínky a ujednání a zkontrolujte, že souhlasím s výše uvedenými podmínkami a ujednáními.
    • Vyberte tlačítko koupit .

Dokončení nasazení může trvat 15-20 minut.

Ceny

Pokud chcete prozkoumat náklady na spuštění tohoto scénáře, všechny služby jsou předem nakonfigurované v cenové kalkulačkě. Pokud chcete zjistit, jak by se ceny změnily pro váš konkrétní případ použití, změňte příslušné proměnné tak, aby odpovídaly očekávanému provozu.

Poskytujeme tři ukázkové profily nákladů na základě počtu imagí kontejnerů pro ukládání a Kubernetes uzlů pro spouštění aplikací.

  • Malá: Tento příklad ceníku koreluje s 1000 sestaveními kontejnerů za měsíc.
  • Střední: Tento příklad ceníku koreluje s 100 000 sestaveními kontejnerů za měsíc.
  • Velká: Tento příklad ceníku koreluje s 1 000 000 sestaveními kontejnerů za měsíc.

Tento scénář používá Azure Container Registry a službu Azure Kubernetes k ukládání a spouštění aplikací založených na kontejnerech. Azure Container Instances lze také použít ke spouštění kontejnerových aplikací, aniž byste museli zřizovat komponenty orchestrace. Další informace najdete v tématu přehled Azure Container Instances.