Pro vytvoření aplikace v .NET Core použijeme příkaz:
Tento příkaz vytvoří MVC aplikaci s názvem DynamicConfiguration, kterou definujeme parametrem -n a umístíme ji do aktuálního adresáře určeného parametrem -o. Jakmile máme aplikaci vytvořenou, připravíme ji k integraci s Azure App Configuration. K tomu v adresáři aplikace spustíme následující příkaz pro otevření Visual Studio Code:
Nyní v kořenovém adresáři projektu vytvoříme složku Options a v ní soubor GlobalOptions.cs, který bude obsahovat následující kód:
Třída GlobalOptions obsahuje pouze jednu vlastnost Title, která bude získána prostřednictvím Azure App Configuration. Při spuštění aplikace se načtou nastavení, jak jsme se již dříve naučili, pomocí souborů jako appsettings.json nebo environmentálních proměnných, mezi dalšími poskytovateli, které lze konfigurovat. Pro naše třídy jsou detaily získávání konfigurací zjednodušeny pomocí ASP.NET Core 9, a pokud použijeme Options pattern, bude zajištěno správné oddělení odpovědností, udržovatelnost, flexibilita a rozšiřitelnost.
Nyní upravíme kód třídy HomeController v adresáři Controllers a přidáme nastavení, která jsme dříve vytvořili pomocí Options pattern. Kód třídy HomeController bude vypadat takto:
V tomto kódu byly provedeny následující změny:
-
Pole GlobalOptions: Přidali jsme nové pole pro třídu typu GlobalOptions, které bylo vytvořeno dříve.
-
Změna v konstruktoru: Konfigurace budou injektovány prostřednictvím DIC (Dependency Injection Container) ASP.NET Core 9, a proto jsme přidali parametr typu IOptionsSnapshot. Použití rozhraní IOptionsSnapshot<> nám umožní získávat konfigurace dynamicky, jak jsme se dozvěděli v sekci o Options pattern. Pokud bychom použili jiný interface, jako IOptions<>, parametry by byly načítány staticky, nikoliv dynamicky.
-
Změna akce Index: V akci Index jsme nastavili hodnotu vlastnosti Title do slovníku ViewData pomocí hodnoty konfigurace z objektu _globalOptions. Tento slovník je následně použit ve souboru Views/Home/Index.cshtml k zobrazení titulku stránky.
Ve souboru Views/Home/Index.cshtml pak upravíme kód takto:
V tomto kódu pouze vykreslujeme hodnotu, která je obsažena ve slovníku ViewData["Title"]. Aplikace je nyní připravena vykreslovat data získaná prostřednictvím konfigurace.
Nyní je čas propojit aplikaci s Azure App Configuration. Nejprve otevřeme terminál v adresáři aplikace a spustíme následující příkaz pro přidání NuGet balíčku, který obsahuje potřebný SDK:
Poté je nutné získat connection string, který obsahuje odkaz na prostředek v Azure App Configuration. Postupujte následovně:
-
Přihlaste se do portálu Azure na https://portal.azure.com.
-
Do vyhledávacího pole v horní části portálu napište App Configuration a klikněte na tuto možnost.
-
V seznamu konfigurací vyberte již vytvořený prostředek s názvem configuration.
-
V postranním menu najděte možnost Access settings a zkopírujte connection string.
Nyní v terminálu, v adresáři aplikace, spustíme následující příkaz pro přidání connection stringu do secret manageru, aby nebyl uložen přímo v kódu:
Díky definici tajemství, které obsahuje connection string pro App Configuration, upravíme soubor Program.cs a přidáme potřebné služby a middleware. Změněný kód souboru Program.cs vypadá následovně:
V tomto kódu se provádějí následující kroky:
-
builder.Services.AddAzureAppConfiguration(): Tato metoda registruje potřebné služby pro Azure App Configuration v aplikaci.
-
builder.Configuration.GetConnectionString("AppConfig"): Tento řádek získává connection string z tajemství, které jsme dříve přidali.
-
builder.Configuration.AddAzureAppConfiguration: Tato metoda přidává Azure App Configuration jako poskytovatele konfigurace do aplikace.
Správně implementovaná integrace s Azure App Configuration umožňuje efektivně spravovat dynamické konfigurace a zajistit, že aplikace vždy používá aktuální nastavení, aniž by se musela restartovat. Díky tomu je možné flexibilně upravovat konfigurace na úrovni cloudu a mít jistotu, že změny budou okamžitě reflektovány ve všech připojených aplikacích.
Jak zajistit spolehlivost nasazení aplikace pomocí CI/CD procesů
V současném softwarovém vývoji je kladen důraz na automatizaci procesů, které umožňují rychlé nasazení nových verzí aplikací do různých prostředí. I když je pipeline pro kontinuální nasazení (CD) automatizovaný proces, který dokáže automaticky publikovat nové verze aplikace, existuje možnost nastavit schvalovací toky, v rámci kterých mohou odpovědní pracovníci za jednotlivá prostředí rozhodnout, zda nasazení schválí nebo zruší. Tento akt schválení spustí automatizovaný tok nasazení nebo jej zruší, podle potřeby.
Přístup založený na schvalovacích bránách přináší výhody v oblasti shody s předpisy a umožňuje týmům plně kontrolovat tok nasazení v určitých prostředích. Tento proces kontroly nasazení je zvláště důležitý v produkčních prostředích, kde je potřeba zajistit kvalitu a stabilitu aplikace. K tomu, aby bylo možné tento proces efektivně implementovat, využívají nástroje jako GitHub, Azure DevOps nebo GitLab mechanismy pro konfiguraci schvalovacího toku. Pomocí těchto nástrojů je možné nastavit automatickou komunikaci mezi pipeline a recenzenty nasazení.
Kontinuální integrace (CI) a kontinuální nasazení (CD) jsou vynikajícími přístupy k automatizaci procesů, které umožňují neustálé doručování aplikací do různých prostředí s vysokou kvalitou. Tyto metodiky nám dávají možnost nasadit nové verze aplikací několikrát za den, což urychluje poskytování oprav a návratů k předchozím verzím, pokud je to nutné. Příkladem implementace tohoto procesu je využití GitHub Actions k automatizaci generování a publikování Docker obrazu v kontejnerovém registru.
Před samotným nasazením je však nezbytné pochopit základy nástroje GitHub Actions. GitHub Actions je nástroj pro automatizaci, který je integrován přímo v GitHubu a umožňuje vytvářet, spravovat a spouštět pracovní postupy přímo v repozitáři. Tyto pracovní postupy mohou být spuštěny různými událostmi, jako je odeslání kódu, vytvoření pull requestu nebo časové spouštění.
Pro úspěšnou implementaci CI/CD s GitHub Actions je klíčové mít správně nastavený repozitář a pracovní toky, které umožní automatizovaně spustit všechny kroky potřebné k vytvoření a publikování Docker obrazu. Tento proces začíná konfigurací tajemství v repozitáři, což zajistí bezpečné zacházení s citlivými údaji, jako jsou přihlašovací údaje pro Docker Hub. Následně se vytváří a aktivuje GitHub Action pro každý "push" událost v repozitáři.
Po správném nastavení je možné automatizovat celý proces od vytváření obrazu až po jeho publikování v Docker Hubu. Tento obraz pak může být nasazen na místní stroj nebo do jiného prostředí. V GitHub Actions je možné detailně popsat každou fázi, včetně vymezení konkrétního operačního systému, na kterém budou všechny kroky vykonány, například Ubuntu-latest, což je typ agenta poskytovaný GitHubem. Každý krok v rámci pracovního toku může obsahovat akce jako checkout kódu, nastavení prostředí, buildování projektu nebo spouštění testů.
Při implementaci CI/CD pipeline je nezbytné správně zabezpečit přístup k Docker Hubu, což se provádí prostřednictvím tajemství (Secrets), aby přihlašovací údaje byly uloženy v bezpečí a nebyly přímo součástí kódu. Tento přístup minimalizuje riziko úniku citlivých informací, což je zvláště důležité v případě veřejných repozitářů.
Přístup GitHub Actions dává vývojářům možnost automatizovat řadu procesů, nejen těch, které se týkají CI/CD. Množství dostupných možností umožňuje přizpůsobení a rozšíření nástroje pro různé potřeby vývojových a nasazovacích procesů. Vytváření a správa Docker obrazů pomocí GitHub Actions je pouze jedním z mnoha způsobů, jak lze tento nástroj efektivně využít pro správu moderního vývojového a nasazovacího procesu.
Je důležité mít na paměti, že proces automatizace CI/CD není pouze o samotném nasazení aplikace. Je to celkový přístup, který zahrnuje zajištění konzistence, kvality a bezpečnosti na každém kroku procesu. To zahrnuje také testování aplikace v různých prostředích, revize a schválení nasazení v produkčním prostředí, a schopnost rychle reagovat na změny nebo chyby, které se mohou objevit po nasazení. Rychlá a spolehlivá reakce na problémy je klíčová pro udržení vysoké úrovně služeb a pro minimalizaci dopadů na koncové uživatele.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский