Spuštění serveru Jenkins v Azure

Azure Active Directory
Blob Storage
Key Vault
Monitor
Virtual Machines

Tento scénář vysvětluje architekturu a důležité informace, které je třeba vzít v úvahu při instalaci a konfiguraci Jenkinse.

Server Jenkins spuštěný v Azure

Stáhněte si soubor aplikace Visio se schématem této architektury.

Tato architektura podporuje zotavení po havárii se službami Azure, ale nepokryje pokročilejší scénáře horizontálního navýšení kapacity, které zahrnují více operací nebo vysokou dostupnost (HA) bez výpadků. Obecný přehled různých součástí Azure, včetně podrobného kurzu věnovaného vytváření kanálu CI/CD v Azure, najdete v tématu Jenkins v Azure.

Tento dokument se zaměřuje na základní provoz Azure nutný k podpoře Jenkinse, včetně použití služby Azure Storage k údržbě artefaktů sestavení, položek zabezpečení potřebných pro jednotné přihlašování, dalších služeb, které je možné integrovat, a škálovatelnosti pro kanál. Architektura je navržená tak, aby fungovala se stávajícím úložištěm správy zdrojového kódu. V běžném scénáři se například úlohy Jenkinse spouštějí na základě potvrzení GitHubu.

Architektura

Tato architektura se skládá z následujících součástí:

  • Skupina prostředků. Skupina prostředků slouží k seskupení prostředků Azure, aby se daly spravovat podle doby životnosti, vlastníka a dalších kritérií. Skupiny prostředků využijte k nasazení a monitorování prostředků Azure jako skupiny a k seskupení fakturačních nákladů podle skupin prostředků. Prostředky můžete také odstranit jako sadu, což je užitečné pro testovací nasazení.

  • Server Jenkins. Virtuální počítač je nasazený tak, aby spouštěl Jenkinse jako automatizační server a slouží jako Primární Jenkins. V části Instalace a konfigurace Jenkinseuvidíte, jak nainstalovat Jenkinse na nový virtuální počítač.

    Poznámka

    Na virtuálním počítači je nainstalovaný Nginx, který pro Jenkinse slouží jako reverzní proxy server. Můžete nakonfigurovat Nginx tak, aby povolil protokol SSL pro server Jenkins.

  • Virtuální síť. Virtuální síť propojuje prostředky Azure mezi sebou a poskytuje logickou izolaci. V této architektuře server Jenkins běží ve virtuální síti.

  • Podsítí. Server Jenkins je izolovaný v podsíti, aby se usnadnila správa a oddělení síťového provozu, aniž by to ovlivnilo výkon.

  • Skupiny zabezpečení sítě. Pomocí skupin zabezpečení sítě omezte síťový provoz z internetu do podsítě virtuální sítě.

  • Spravované disky. Spravovaný disk je trvalý virtuální pevný disk (VHD) využívaný jako úložiště aplikací a také k údržbě stavu serveru Jenkins a zajištění zotavení po havárii. Datové disky se ukládají ve službě Azure Storage. K zajištění vysokého výkonu se doporučuje využívat Premium Storage.

  • Azure Blob Storage. Na Windows Azure Storage Informace o tom, jak do azure Blob Storage ukládat artefakty sestavení, které se vytvářejí a sdílí s ostatními sestaveními Jenkinse.

  • Azure Active Directory (Azure AD). Azure AD podporuje ověřování uživatelů a umožňuje nastavit jednotné přihlašování. Instanční objekty Azure AD definují zásady a oprávnění pro každou autorizaci role v pracovním postupu pomocí řízení přístupu na základě role v Azure (Azure RBAC). Každý instanční objekt je přidružený k úloze Jenkinse.

  • Azure Key Vault. Ke správě tajných kódů a kryptografických klíčů používaných ke zřizování prostředků Azure v případě potřeby používá tato architektura Azure Key Vault.

  • Služby monitorování Azure: Tato služba monitoruje virtuální počítač Azure, který je hostitelem Jenkinse. Toto nasazení monitoruje využití procesoru a stav virtuálního počítače a odesílá upozornění.

Doporučení

Následující doporučení platí pro většinu scénářů. Pokud nemáte konkrétní požadavek, který by těmto doporučením nedopovídal, postupujte podle nich.

Aspekty zabezpečení

Jenkins se může dynamicky škálovat, aby podle potřeby podporoval úlohy. V případě elastických sestavení nespouštěte sestavení na primárním serveru Jenkinse. Místo toho přesměrujte úlohy sestavení na agenty Jenkinse, u kterých je možné horizontálně snížit nebo zvýšit kapacitu podle potřeby. U agentů škálování zvažte tyto dvě možnosti:

Škálování virtuálních počítačů je obecně dražší než škálování kontejnerů. Pokud chcete ke škálování použít kontejnery, musí ale být kontejnery využité při procesu sestavování.

Můžete také využít Azure Storage ke sdílení artefaktů sestavení, které mohou v další fázi kanálu využívat jiní agenti sestavení.

Škálování serveru Jenkins

Při vytváření virtuálního počítače a instalaci Jenkinsemůžete zadat velikost virtuálního počítače. Výběr správné velikosti serveru virtuálního počítače závisí na velikosti očekávané úlohy. Komunita Jenkinse spravuje průvodce výběrem, který pomáhá určit konfiguraci nejlépe splňující vaše požadavky. Azure nabízí celou řadu velikostí pro linuxové virtuální počítače, které umožňují splnit libovolné požadavky. Další informace o škálování primárního Jenkinse najdete v komunitě osvědčených postupů Jenkinse, která obsahuje také podrobnosti o škálování Jenkinse.

Aspekty dostupnosti

Dostupnost v kontextu serveru Jenkins znamená možnost obnovit libovolné informace o stavu přidružené k vašemu pracovnímu postupu, jako jsou třeba výsledky testů, knihovny, které jste vytvořili, nebo jiné artefakty. Pro obnovení pracovních postupů v případě, že server Jenkins přestane fungovat, je nutné zachovávat důležité stavy postupů nebo artefakty. Při vyhodnocování požadavků na dostupnost vezměte v úvahu dvě běžné metriky:

  • Plánovaná doba obnovení (RTO) určuje, jak dlouho vydržíte bez Jenkinse.

  • Cíl bodu obnovení (RPO) určuje, kolik dat si můžete dovolit ztratit, pokud přerušení ve službě ovlivňuje Jenkinse.

RTO a RPO v praxi značují redundanci a zálohování. Dostupnost není otázkou obnovení hardwaru – to je součást Azure – ale spíš zajištění, že udržujete stav serveru Jenkins. Společnost Microsoft nabízí smlouvu o úrovni služeb (SLA) pro jednotlivé instance virtuálních počítačů. Pokud tato smlouva SLA nesplňuje vaše požadavky na dobu provozu, ujistěte se, že máte plán pro zotavení po havárii, nebo zvažte použití nasazení serveru Jenkins s více primárními databázemi (nepokryté v tomto dokumentu).

V kroku 7 nasazení zvažte použití skriptů zotavení po havárii a pro uložení stavu serveru Jenkins vytvořte účet Azure Storage se spravovanými disky. Pokud Jenkins přestane fungovat, dá se obnovit do stavu uloženého v tomto samostatném účtu úložiště.

Důležité informace o zabezpečení

Pro zajištění zabezpečení základního serveru Jenkins využijte následující přístupy (vzhledem k tomu, že v základním stavu není zabezpečený).

  • Nastavte si bezpečný způsob přihlášení k serveru Jenkins. Tato architektura využívá HTTP a má veřejnou adresu IP, ale protokol HTTP není ve výchozím nastavení zabezpečený. Zvažte, že byste pro zabezpečené přihlášení nastavili použití HTTPS na serveru Nginx.

    Poznámka

    Při přidávání SSL na server vytvořte pravidlo skupiny zabezpečení sítě pro podsíť Jenkinse, které otevře port 443. Další informace najdete v tématu věnovaném otevření portů pro virtuální počítač s využitím webu Azure Portal.

  • Ujistěte se, že konfigurace Jenkinse zabraňuje útokům CSRF – padělání žádosti posílané mezi weby (Manage Jenkins (Správa Jenkinse) > Configure Global Security (Konfigurovat globální zabezpečení)). Tato možnost je výchozí pro Microsoft Jenkins Server.

  • Pomocí modulu plug-in Matrix Authorization Strategy nakonfigurujte přístup jen pro čtení k řídicímu panelu Jenkinse.

  • Pomocí Azure RBAC omezte přístup k objektu služby na minimum potřebné ke spuštění úloh. Tato úroveň zabezpečení pomáhá omezit rozsah poškození podvodné úlohy.

Úlohy Jenkinse při přístupu ke službám Azure, které vyžadují autorizace, jako je Azure Container Service, často vyžadují tajné kódy. Pomocí Key Vault můžete tyto tajné kódy bezpečně spravovat. K uložení hesel, tokenů, přihlašovacích údajů instančních objektů a dalších tajných kódů použijte Key Vault.

K získání přehledu o stavu zabezpečení vašich prostředků Azure použijte službu Azure Security Center. Security Center monitoruje potenciální potíže se zabezpečením a poskytuje ucelený přehled o stavu zabezpečení vašeho nasazení. Služba Security Center se konfiguruje na základě předplatného Azure. Povolte shromažďování dat zabezpečení popsané v úvodní příručce ke službě Azure Security Center. Když je povolené shromažďování dat, Security Center automaticky prohledává všechny virtuální počítače vytvořené v rámci příslušného předplatného.

Server Jenkins má svůj vlastní systém správy uživatelů a komunita Jenkinse poskytuje osvědčené postupy pro zabezpečení instance Jenkinse v Azure.

Aspekty správy

K uspořádání nasazovaných prostředků Azure použijte skupiny prostředků. Nasaďte produkční prostředí a vývojová/testovací prostředí v samostatných skupinách prostředků, abyste mohli monitorovat prostředky jednotlivých prostředí a seskupit fakturační náklady podle skupiny prostředků. Prostředky můžete také odstranit jako sadu, což je užitečné pro testovací nasazení.

Azure poskytuje několik funkcí pro monitorování a diagnostiku celkové infrastruktury. K monitorování využití procesoru tato architektura nasazuje Azure Monitor. Azure Monitor můžete využít například k monitorování využití procesoru a odeslání oznámení, pokud využití procesoru překročí 80 procent. (Vysoké využití procesoru značí, že možná budete chtít škálovat virtuální počítač serveru Jenkins.) Určeného uživatele můžete také upozornit v případě, že virtuální počítač selže nebo bude nedostupný.

Komunity

Následující online komunity vám můžou odpovědět na otázky a pomoct vám nakonfigurovat úspěšné nasazení:

Nainstalovat a konfigurovat Jenkinse

Pokud chcete vytvořit virtuální počítač a nainstalovat Jenkinse, postupujte podle pokynů v článku Rychlý start: Konfigurace Jenkinse pomocí Azure CLI.

Další kroky