Sdílet prostřednictvím


Kurz: Vytvoření vysoce dostupné aplikace pro více oblastí ve službě Aplikace Azure Service

Vysoká dostupnost a odolnost proti chybám jsou klíčovými komponentami dobře navrženého řešení. Nejlepší je připravit se na neočekávanou situaci tím, že máte plán tísňového volání, který může zkrátit výpadek a udržovat vaše systémy v provozu automaticky, když něco selže.

Když nasadíte aplikaci do cloudu, zvolíte v tomto cloudu oblast, ve které je založená vaše aplikační infrastruktura. Pokud je vaše aplikace nasazená do jedné oblasti a oblast přestane být dostupná, bude aplikace také nedostupná. Tato nedostatečná dostupnost může být nepřijatelná podle podmínek smlouvy SLA vaší aplikace. Pokud ano, nasazení aplikace a jejích služeb napříč několika oblastmi je dobrým řešením.

V tomto kurzu se dozvíte, jak nasadit vysoce dostupnou webovou aplikaci pro více oblastí. Tento scénář je jednoduchý tím, že omezí komponenty aplikace jenom na webovou aplikaci a Azure Front Door, ale koncepty je možné rozšířit a použít na jiné vzory infrastruktury. Pokud se například vaše aplikace připojuje k nabídce databáze Azure nebo účtu úložiště, podívejte se na aktivní geografickou replikaci pro databáze SQL a možnosti redundance pro účty úložiště. Referenční architekturu pro podrobnější scénář najdete v tématu Vysoce dostupná webová aplikace s více oblastmi.

Následující diagram architektury znázorňuje infrastrukturu, kterou vytvoříte v tomto kurzu. Skládá se ze dvou identických služeb App Services v samostatných oblastech, jedné z aktivní nebo primární oblasti a druhá je pohotovostní nebo sekundární oblast. Azure Front Door se používá ke směrování provozu do app Services a omezení přístupu jsou nakonfigurovaná tak, aby byl přímý přístup k aplikacím z internetu blokovaný. Tečkovaná čára označuje, že provoz se odesílá do pohotovostní oblasti jenom v případě, že aktivní oblast klesne.

Azure nabízí různé možnosti pro vyrovnávání zatížení a směrování provozu. Pro tento případ použití byla vybrána služba Azure Front Door, protože zahrnuje internetové webové aplikace hostované ve službě Aplikace Azure Service nasazené ve více oblastech. Pokud se liší od tohoto kurzu, pomůže vám to rozhodnout, co použít pro váš případ použití, podívejte se na rozhodovací strom pro vyrovnávání zatížení v Azure.

Diagram architektury služby App Service s více oblastmi

S touto architekturou:

  • Identické aplikace App Service se nasazují ve dvou samostatných oblastech.
  • Veřejný provoz přímo do aplikací app Service je blokovaný.
  • Azure Front Door se používá ke směrování provozu do primární nebo aktivní oblasti. Sekundární oblast má službu App Service, která je v případě potřeby spuštěná a připravená k poskytování provozu.

Naučíte se:

  • Vytvořte identické služby App Services v samostatných oblastech.
  • Vytvořte Službu Azure Front Door s omezeními přístupu, která blokují veřejný přístup ke službě App Services.

Požadavky

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Pro absolvování tohoto kurzu potřebujete:

Vytvoření dvou instancí webové aplikace

Pro účely tohoto kurzu potřebujete dvě instance webové aplikace, které běží v různých oblastech Azure. Pár oblastí USA – východ nebo USA – západ použijete jako dvě oblasti a vytvoříte dvě prázdné webové aplikace. V případě potřeby si můžete vybrat vlastní oblasti.

Pro zjednodušení správy a čištění použijete jednu skupinu prostředků pro všechny prostředky v tomto kurzu. Zvažte použití samostatných skupin prostředků pro každou oblast nebo prostředek k další izolaci prostředků v situaci zotavení po havárii.

Spuštěním následujícího příkazu vytvořte skupinu prostředků.

az group create --name myresourcegroup --location eastus

Vytvoření plánů služby App Service

Spuštěním následujících příkazů vytvořte plány služby App Service. Zástupné symboly nahraďte <app-service-plan-east-us> <app-service-plan-west-us> dvěma jedinečnými názvy, kde můžete snadno identifikovat oblast, ve které jsou.

az appservice plan create --name <app-service-plan-east-us> --resource-group myresourcegroup --is-linux --location eastus

az appservice plan create --name <app-service-plan-west-us> --resource-group myresourcegroup --is-linux --location westus

Vytváření webových aplikací

Po vytvoření plánů služby App Service spusťte následující příkazy pro vytvoření webových aplikací. Zástupné symboly nahraďte <web-app-east-us> <web-app-west-us> dvěma globálně jedinečnými názvy (platné znaky jsou a-z, 0-9a -) a nezapomeňte věnovat pozornost parametru --plan , abyste do každého plánu (a proto v každé oblasti umístili jednu aplikaci). <runtime> Nahraďte parametr jazykovou verzí vaší aplikace. Spusťte az webapp list-runtimes seznam dostupných modulů runtime. Pokud plánujete používat ukázkovou Node.js aplikaci v tomto kurzu v následujících částech, použijte NODE:18-lts ji jako modul runtime.

az webapp create --name <web-app-east-us> --resource-group myresourcegroup --plan <app-service-plan-east-us> --runtime <runtime>

az webapp create --name <web-app-west-us> --resource-group myresourcegroup --plan <app-service-plan-west-us> --runtime <runtime>

Poznamenejte si výchozí název hostitele každé webové aplikace, abyste mohli definovat back-endové adresy při nasazení služby Front Door v dalším kroku. Měla by mít formát <web-app-name>.azurewebsites.net. Tyto názvy hostitelů najdete spuštěním následujícího příkazu nebo přechodem na stránku Přehled aplikace na webu Azure Portal.

az webapp show --name <web-app-name> --resource-group myresourcegroup --query "hostNames"

Vytvoření služby Azure Front Door

Nasazení ve více oblastech může používat konfiguraci aktivní-aktivní nebo aktivní-pasivní. Konfigurace aktivní-aktivní distribuuje požadavky napříč několika aktivními oblastmi. Konfigurace aktivní-pasivní udržuje spuštěné instance v sekundární oblasti, ale neodesílá provoz tam, pokud primární oblast selže. Azure Front Door má integrovanou funkci, která umožňuje povolit tyto konfigurace. Další informace o navrhování aplikací pro zajištění vysoké dostupnosti a odolnosti proti chybám najdete v tématu Návrh aplikací Azure pro zajištění odolnosti a dostupnosti.

Vytvoření profilu služby Azure Front Door

Teď vytvoříte Azure Front Door Premium pro směrování provozu do vašich aplikací.

Spuštěním az afd profile create vytvořte profil služby Azure Front Door.

Poznámka:

Pokud chcete nasadit Azure Front Door Standard místo úrovně Premium, nahraďte hodnotu parametru --sku Standard_AzureFrontDoor. Pokud zvolíte úroveň Standard, nemůžete nasadit spravovaná pravidla se zásadami WAF. Podrobné porovnání cenových úrovní najdete v porovnání úrovní služby Azure Front Door.

az afd profile create --profile-name myfrontdoorprofile --resource-group myresourcegroup --sku Premium_AzureFrontDoor
Parametr Hodnota Popis
profile-name myfrontdoorprofile Název profilu služby Azure Front Door, který je jedinečný v rámci skupiny prostředků.
resource-group myresourcegroup Skupina prostředků, která obsahuje prostředky z tohoto kurzu.
sku Premium_AzureFrontDoor Cenová úroveň profilu služby Azure Front Door.

Přidání koncového bodu

Spuštěním vytvořte az afd endpoint create koncový bod ve vašem profilu. Po dokončení vytváření prostředí pro vytváření můžete ve svém profilu vytvořit více koncových bodů.

az afd endpoint create --resource-group myresourcegroup --endpoint-name myendpoint --profile-name myfrontdoorprofile --enabled-state Enabled
Parametr Hodnota Popis
endpoint-name myendpoint Název koncového bodu pod profilem, který je jedinečný globálně.
enabled-state Enabled Jestli chcete povolit tento koncový bod.

Vytvoření skupiny původu

Spuštěním vytvořte az afd origin-group create skupinu původu, která obsahuje vaše dvě webové aplikace.

az afd origin-group create --resource-group myresourcegroup --origin-group-name myorigingroup --profile-name myfrontdoorprofile --probe-request-type GET --probe-protocol Http --probe-interval-in-seconds 60 --probe-path / --sample-size 4 --successful-samples-required 3 --additional-latency-in-milliseconds 50
Parametr Hodnota Popis
origin-group-name myorigingroup Název skupiny původu.
probe-request-type GET Typ požadavku sondy stavu, který je proveden.
probe-protocol Http Protokol, který se má použít pro sondu stavu.
probe-interval-in-seconds 60 Počet sekund mezi sondami stavu.
probe-path / Cesta vzhledem k počátku, která se používá k určení stavu původu.
sample-size 4 Počet vzorků, které je potřeba zvážit při rozhodování o vyrovnávání zatížení.
successful-samples-required 3 Počet vzorků v období vzorku, které musí proběhnout úspěšně.
additional-latency-in-milliseconds 50 Další latence v milisekundách pro sondy, které spadají do kontejneru s nejnižší latencí.

Přidání zdroje do skupiny

Spuštěním přidáte az afd origin create zdroj do skupiny původu. U parametru --host-name nahraďte zástupný symbol <web-app-east-us> názvem vaší aplikace v dané oblasti. Všimněte si, že --priority je parametr nastavený na 1, který označuje, že se veškerý provoz odesílá do primární aplikace.

az afd origin create --resource-group myresourcegroup --host-name <web-app-east-us>.azurewebsites.net --profile-name myfrontdoorprofile --origin-group-name myorigingroup --origin-name primaryapp --origin-host-header <web-app-east-us>.azurewebsites.net --priority 1 --weight 1000 --enabled-state Enabled --http-port 80 --https-port 443
Parametr Hodnota Popis
host-name <web-app-east-us>.azurewebsites.net Název hostitele primární webové aplikace.
origin-name primaryapp Název původu.
origin-host-header <web-app-east-us>.azurewebsites.net Hlavička hostitele, která se má odesílat pro požadavky do tohoto původu. Pokud toto pole necháte prázdné, název hostitele požadavku určuje tuto hodnotu. Původy Azure CDN, jako jsou Web Apps, Blob Storage a Cloud Services, vyžadují, aby tato hodnota hlavičky hostitele odpovídala výchozímu názvu hostitele ve výchozím nastavení.
priority 1 Nastavením tohoto parametru na 1 směrujte veškerý provoz do primární webové aplikace.
weight 1000 Váha původu v dané skupině původu pro vyrovnávání zatížení. Musí být v rozmezí 1 až 1000.
enabled-state Enabled Zda chcete povolit tento původ.
http-port 80 Port použitý pro požadavky HTTP na původ.
https-port 443 Port používaný pro požadavky HTTPS na původ.

Tento krok opakujte a přidejte druhý zdroj. Věnujte pozornost parametru --priority . Pro tento původ je nastavena na 2. Toto nastavení priority říká službě Azure Front Door, aby směrovat veškerý provoz do primárního zdroje, pokud primární server nefunguje. Pokud nastavíte prioritu tohoto původu na 1, Služba Azure Front Door zachází s zdroji jako s aktivním i přímým provozem do obou oblastí. Nezapomeňte nahradit obě instance zástupného symbolu <web-app-west-us> názvem této webové aplikace.

az afd origin create --resource-group myresourcegroup --host-name <web-app-west-us>.azurewebsites.net --profile-name myfrontdoorprofile --origin-group-name myorigingroup --origin-name secondaryapp --origin-host-header <web-app-west-us>.azurewebsites.net --priority 2 --weight 1000 --enabled-state Enabled --http-port 80 --https-port 443

Přidat trasu

Spuštěním az afd route create namapujte koncový bod na skupinu původu. Tato trasa předává požadavky z koncového bodu do vaší původní skupiny.

az afd route create --resource-group myresourcegroup --profile-name myfrontdoorprofile --endpoint-name myendpoint --forwarding-protocol MatchRequest --route-name route --https-redirect Enabled --origin-group myorigingroup --supported-protocols Http Https --link-to-default-domain Enabled 
Parametr Hodnota Popis
endpoint-name myendpoint Název koncového bodu
předávací protokol MatchRequest Toto pravidlo se používá při předávání provozu do back-endů.
route-name route Název trasy.
https-redirect Enabled Určuje, jestli se má automaticky přesměrovat provoz HTTP na provoz HTTPS.
supported-protocols Http Https Seznam podporovaných protokolů pro tuto trasu
link-to-default-domain Enabled Určuje, jestli je tato trasa propojená s výchozí doménou koncového bodu.

Počkejte přibližně 15 minut, než se tento krok dokončí, protože trvá nějakou dobu, než se tato změna globálně rozšíří. Po uplynutí této doby je vaše služba Azure Front Door plně funkční.

Omezení přístupu k webovým aplikacím na instanci služby Azure Front Door

V tuto chvíli můžete k aplikacím přistupovat přímo pomocí jejich adres URL. Pokud chcete zajistit, aby se provoz dostal jenom k vašim aplikacím přes Azure Front Door, nastavte omezení přístupu pro každou z vašich aplikací. Funkce služby Front Door fungují nejlépe, když provoz prochází jenom přes Službu Front Door. Měli byste nakonfigurovat původy tak, aby blokovaly provoz, který se ještě neposílají prostřednictvím služby Front Door. Jinak provoz může obejít firewall webových aplikací služby Front Door, ochranu před útoky DDoS a další funkce zabezpečení. Provoz z Azure Front Dooru do vašich aplikací pochází z dobře známé sady rozsahů IP adres definovaných ve AzureFrontDoor.Backend značce služby. Pomocí pravidla omezení značek služeb můžete omezit provoz pouze na základě služby Azure Front Door.

Před nastavením omezení přístupu ke službě App Service si poznamenejte ID služby Front Door spuštěním následujícího příkazu. Toto ID je potřeba k zajištění, že provoz pochází jenom z konkrétní instance služby Front Door. Omezení přístupu dále filtruje příchozí požadavky na základě jedinečné hlavičky HTTP, kterou vaše služba Azure Front Door odesílá.

az afd profile show --resource-group myresourcegroup --profile-name myfrontdoorprofile --query "frontDoorId"

Spuštěním následujících příkazů nastavte omezení přístupu pro webové aplikace. Nahraďte zástupný symbol <front-door-id> výsledkem předchozího příkazu. Nahraďte zástupné symboly pro názvy aplikací.

az webapp config access-restriction add --resource-group myresourcegroup -n <web-app-east-us> --priority 100 --service-tag AzureFrontDoor.Backend --http-header x-azure-fdid=<front-door-id>

az webapp config access-restriction add --resource-group myresourcegroup -n <web-app-west-us> --priority 100 --service-tag AzureFrontDoor.Backend --http-header x-azure-fdid=<front-door-id>

Testování služby Front Door

Při vytváření profilu Azure Front Door Standard/Premium trvá několik minut, než se konfigurace nasadí globálně. Po dokončení můžete přistupovat k hostiteli front-endu, který jste vytvořili.

Spuštěním získejte az afd endpoint show název hostitele koncového bodu služby Front Door.

az afd endpoint show --resource-group myresourcegroup --profile-name myfrontdoorprofile --endpoint-name myendpoint --query "hostName"

V prohlížeči přejděte na název hostitele koncového bodu, který vrátil předchozí příkaz: <myendpoint>-<hash>.z01.azurefd.net. Vaše žádost by se měla automaticky směrovat na primární aplikaci v oblasti USA – východ.

Testování okamžitého globálního převzetí služeb při selhání:

  1. Otevřete prohlížeč a přejděte na název hostitele koncového bodu: <myendpoint>-<hash>.z01.azurefd.net.

  2. Zastavte primární aplikaci spuštěním příkazu az webapp stop.

    az webapp stop --name <web-app-east-us> --resource-group myresourcegroup
    
  3. Aktualizujte si stránku v prohlížeči. Měla by se zobrazit stejná informační stránka, protože provoz se teď směruje na spuštěnou aplikaci v oblasti USA – západ.

    Tip

    Možná budete muset stránku několikrát aktualizovat, aby se převzetí služeb při selhání dokončilo.

  4. Teď zastavte sekundární aplikaci.

    az webapp stop --name <web-app-west-us> --resource-group myresourcegroup
    
  5. Aktualizujte si stránku v prohlížeči. Tentokrát by se měla zobrazit chybová zpráva.

    Snímek obrazovky se zprávou: Obě instance webové aplikace se zastavily.

  6. Restartujte jednu z webových aplikací spuštěním příkazu az webapp start. Aktualizujte prohlížeč a měli byste aplikaci znovu vidět.

    az webapp start --name <web-app-east-us> --resource-group myresourcegroup
    

Ověřili jste si, že máte přístup k aplikacím prostřednictvím služby Azure Front Door a že převzetí služeb při selhání funguje podle očekávání. Pokud jste dokončili testování převzetí služeb při selhání, restartujte jinou aplikaci.

Pokud chcete otestovat omezení přístupu a zajistit, aby vaše aplikace byly dostupné jenom přes Azure Front Door, otevřete prohlížeč a přejděte na všechny adresy URL vaší aplikace. Pokud chcete najít adresy URL, spusťte následující příkazy:

az webapp show --name <web-app-east-us> --resource-group myresourcegroup --query "hostNames"

az webapp show --name <web-app-west-us> --resource-group myresourcegroup --query "hostNames"

Měla by se zobrazit chybová stránka označující, že aplikace nejsou přístupné.

Vyčištění prostředků

V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete potřebovat, odstraňte skupinu prostředků spuštěním následujícího příkazu ve službě Cloud Shell:

az group delete --name myresourcegroup

Spuštění tohoto příkazu může trvat několik minut.

Nasazení z ARM/Bicep

Prostředky, které jste vytvořili v tomto kurzu, můžete nasadit pomocí šablony ARM/Bicep. Šablona Bicep pro vysoce dostupnou webovou aplikaci pro více oblastí umožňuje vytvořit zabezpečené, vysoce dostupné komplexní řešení s více oblastmi se dvěma webovými aplikacemi v různých oblastech za Azure Front Doorem.

Informace o nasazení šablon ARM/Bicep najdete v tématu Nasazení prostředků pomocí Bicep a Azure CLI.

Nejčastější dotazy

V tomto kurzu jste zatím nasadili základní infrastrukturu, která umožňuje webovou aplikaci ve více oblastech. App Service poskytuje funkce, které vám pomůžou zajistit, abyste aplikace spouštěli podle osvědčených postupů zabezpečení a doporučení.

Tato část obsahuje nejčastější dotazy, které vám můžou pomoct dále zabezpečit aplikace a nasazovat a spravovat prostředky pomocí osvědčených postupů.

V tomto kurzu jste k nasazení prostředků infrastruktury použili Azure CLI. Zvažte konfiguraci mechanismu průběžného nasazování pro správu infrastruktury aplikací. Vzhledem k tomu, že nasazujete prostředky v různých oblastech, musíte tyto prostředky nezávisle spravovat napříč oblastmi. Aby se zajistilo, že jsou prostředky v jednotlivých oblastech identické, infrastruktura jako kód (IaC), jako jsou šablony Azure Resource Manageru nebo Terraform , by se měly používat s kanály nasazení, jako jsou Azure Pipelines nebo GitHub Actions. Pokud je tato konfigurace správně nakonfigurovaná, všechny změny prostředků by aktivovaly aktualizace ve všech oblastech, do kterých jste nasazeni. Další informace najdete v tématu Průběžné nasazování do služby Aplikace Azure Service.

Jak můžu pomocí přípravných slotů procvičit bezpečné nasazení do produkčního prostředí?

Nasazení kódu aplikace přímo do produkčních aplikací nebo slotů se nedoporučuje. Je to proto, že chcete mít bezpečné místo k otestování aplikací a ověření změn provedených před odesláním do produkčního prostředí. Pomocí kombinace přípravných slotů a prohození slotů můžete přesunout kód z testovacího prostředí do produkčního prostředí.

Pro tento scénář jste už vytvořili základní infrastrukturu. Teď vytvoříte sloty nasazení pro každou instanci aplikace a nakonfigurujete průběžné nasazování do těchto přípravných slotů pomocí GitHub Actions. Stejně jako u správy infrastruktury se doporučuje nakonfigurovat průběžné nasazování zdrojového kódu aplikace, aby se zajistilo, že se změny napříč oblastmi synchronizují. Pokud průběžné nasazování nenakonfigurujete, budete muset ručně aktualizovat každou aplikaci v každé oblasti pokaždé, když dojde ke změně kódu.

U zbývajících kroků v tomto kurzu byste měli mít aplikaci připravenou k nasazení do služby App Services. Pokud potřebujete ukázkovou aplikaci, můžete použít ukázkovou aplikaci Node.js Hello World. Vytvořit fork tohoto úložiště, abyste měli vlastní kopii.

Nezapomeňte nastavit nastavení zásobníku služby App Service pro vaše aplikace. Nastavení zásobníku odkazuje na jazyk nebo modul runtime používaný pro vaši aplikaci. Toto nastavení je možné nakonfigurovat pomocí Azure CLI pomocí az webapp config set příkazu nebo na portálu pomocí následujícího postupu. Pokud použijete ukázku Node.js, nastavte nastavení zásobníku na Node 18 LTS.

  1. Přejdete do aplikace a v obsahu vlevo vyberete Možnost Konfigurace .
  2. Vyberte kartu Obecné nastavení.
  3. V části Nastavení zásobníku zvolte odpovídající hodnotu pro vaši aplikaci.
  4. Výběrem možnosti Uložit a pokračovat potvrďte aktualizaci.
  5. Tento postup opakujte pro ostatní aplikace.

Spuštěním následujících příkazů vytvořte přípravné sloty s názvem "stage" pro každou z vašich aplikací. Zástupné symboly nahraďte <web-app-east-us> názvy aplikací a <web-app-west-us> názvy aplikací.

az webapp deployment slot create --resource-group myresourcegroup --name <web-app-east-us> --slot stage --configuration-source <web-app-east-us>

az webapp deployment slot create --resource-group myresourcegroup --name <web-app-west-us> --slot stage --configuration-source <web-app-west-us>

K nastavení průběžného nasazování byste měli použít Azure Portal. Podrobné pokyny ke konfiguraci průběžného nasazování s poskytovateli, jako je GitHub Actions, najdete v tématu Průběžné nasazování do služby Aplikace Azure Service.

Pokud chcete nakonfigurovat průběžné nasazování pomocí GitHub Actions, proveďte následující kroky pro každý přípravný slot.

  1. Na webu Azure Portal přejděte na stránku pro správu jednoho z vašich slotů aplikací služby App Service.

  2. V levém podokně vyberte Deployment Center. Pak vyberte Nastavení.

  3. V poli Zdroj vyberte GitHub z možností CI/CD:

    Snímek obrazovky, který ukazuje, jak zvolit zdroj nasazení

  4. Pokud nasazujete z GitHubu poprvé, vyberte Autorizovat a postupujte podle pokynů k autorizaci. Pokud chcete nasadit z jiného úložiště uživatele, vyberte Změnit účet.

  5. Po autorizaci účtu Azure pomocí GitHubu vyberte organizaci, úložiště a větev a nakonfigurujte CI/CD pro. Pokud nemůžete najít organizaci nebo úložiště, možná budete muset povolit další oprávnění na GitHubu. Další informace najdete v tématu Správa přístupu k úložištím vaší organizace.

    1. Pokud používáte ukázkovou aplikaci Node.js, použijte následující nastavení.

      Nastavení Hodnota
      Organizace <your-GitHub-organization>
      Repository nodejs-docs-hello-world
      Pobočka main
  6. Zvolte Uložit.

    Nová potvrzení ve vybraném úložišti a větvi se teď průběžně nasazují do slotu aplikace služby App Service. Potvrzení a nasazení můžete sledovat na kartě Protokoly .

Do úložiště GitHub se přidá výchozí soubor pracovního postupu, který používá profil publikování k ověření ve službě App Service. Tento soubor můžete zobrazit tak, že přejdete do <repo-name>/.github/workflows/ adresáře.

Návody zakázat základní ověřování ve službě App Service?

Zvažte zakázání základního ověřování, které omezuje přístup ke koncovým bodům FTP a SCM na uživatele, které jsou podporovány MICROSOFT Entra ID. Pokud k nasazení zdrojového kódu aplikace používáte nástroj pro průběžné nasazování, zakázání základního ověřování vyžaduje další kroky ke konfiguraci průběžného nasazování. Například nemůžete použít profil publikování, protože nepoužívá přihlašovací údaje Microsoft Entra. Místo toho musíte použít instanční objekt nebo OpenID Connect.

Pokud chcete zakázat základní ověřování pro službu App Service, spusťte pro každou aplikaci a slot následující příkazy nahrazením zástupných symbolů a <web-app-east-us> <web-app-west-us> názvy aplikací. První sada příkazů zakáže přístup FTP pro produkční weby a přípravné sloty a druhá sada příkazů zakáže základní přístup k portu WebDeploy a webu SCM pro produkční weby a přípravné sloty.

az resource update --resource-group myresourcegroup --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-east-us> --set properties.allow=false

az resource update --resource-group myresourcegroup --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-east-us>/slots/stage --set properties.allow=false

az resource update --resource-group myresourcegroup --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-west-us> --set properties.allow=false

az resource update --resource-group myresourcegroup --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-west-us>/slots/stage --set properties.allow=false
az resource update --resource-group myresourcegroup --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-east-us> --set properties.allow=false

az resource update --resource-group myresourcegroup --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-east-us>/slots/stage --set properties.allow=false

az resource update --resource-group myresourcegroup --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-west-us> --set properties.allow=false

az resource update --resource-group myresourcegroup --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<web-app-west-us>/slots/stage --set properties.allow=false

Další informace o zakázání základního ověřování, včetně postupu testování a monitorování přihlášení, najdete v tématu Zakázání základního ověřování v nasazeních služby App Service.

Návody nasadit kód pomocí průběžného nasazování, pokud jsem zakázal základní ověřování?

Pokud se rozhodnete povolit základní ověřování v aplikacích App Service, můžete ve službě App Service použít některou z dostupných metod nasazení, včetně použití profilu publikování nakonfigurovaného v části přípravných slotů .

Pokud zakážete základní ověřování pro službu App Services, průběžné nasazování vyžaduje k ověření instanční objekt nebo OpenID Connect. Pokud jako úložiště kódu používáte GitHub Actions, přečtěte si podrobný kurz použití instančního objektu nebo OpenID Connect k nasazení do služby App Service pomocí GitHub Actions nebo provedení kroků v následující části.

Vytvoření instančního objektu a konfigurace přihlašovacích údajů pomocí GitHub Actions

Pokud chcete nakonfigurovat průběžné nasazování pomocí GitHub Actions a instančního objektu, postupujte následovně.

  1. Spuštěním následujícího příkazu vytvořte instanční objekt. Zástupné symboly nahraďte názvy vašich <subscription-id> a aplikací. Výstupem je objekt JSON s přihlašovacími údaji pro přiřazení role, které poskytují přístup k vašim aplikacím App Service. Zkopírujte tento objekt JSON pro další krok. Obsahuje tajný klíč klienta, který je v tuto chvíli viditelný. Vždy je vhodné udělit minimální přístup. Rozsah v tomto příkladu je omezený jenom na aplikace, ne na celou skupinu prostředků.

    az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/<subscription-id>/resourceGroups/myresourcegroup/providers/Microsoft.Web/sites/<web-app-east-us> /subscriptions/<subscription-id>/resourceGroups/myresourcegroup/providers/Microsoft.Web/sites/<web-app-west-us> --sdk-auth
    
  2. V rámci pracovního postupu akce GitHub Action, který používáte, musíte zadat přihlašovací údaje instančního objektu k akci Azure/přihlášení . Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.

    1. Otevřete úložiště GitHub a přejděte na Nastavení>tajných kódů zabezpečení>a akcí proměnných.>

    2. Vyberte Nový tajný klíč úložiště a vytvořte tajný kód pro každou z následujících hodnot. Hodnoty najdete ve výstupu JSON, který jste zkopírovali dříve.

      Jméno Hodnota
      AZURE_APP_ID <application/client-id>
      AZURE_PASSWORD <client-secret>
      AZURE_TENANT_ID <tenant-id>
      AZURE_SUBSCRIPTION_ID <subscription-id>

Vytvoření pracovního postupu GitHub Actions

Teď, když máte instanční objekt, který má přístup k vašim aplikacím App Service, upravte výchozí pracovní postupy vytvořené pro vaše aplikace při konfiguraci průběžného nasazování. Ověřování musí být provedeno pomocí instančního objektu místo profilu publikování. Ukázkové pracovní postupy najdete na kartě Instanční objekt v části Přidání souboru pracovního postupu do úložiště GitHub. Následující ukázkový pracovní postup lze použít pro Node.js ukázkovou aplikaci, kterou jste zadali.

  1. Otevřete úložiště GitHub vaší aplikace a přejděte do <repo-name>/.github/workflows/ adresáře. Měly by se zobrazit automaticky generované pracovní postupy.

  2. U každého souboru pracovního postupu vyberte tlačítko tužka v pravém horním rohu a upravte soubor. Nahraďte obsah následujícím textem, který předpokládá, že jste pro přihlašovací údaje vytvořili tajné kódy GitHubu dříve. Aktualizujte zástupný symbol pro <web-app-name> část "env" a potvrďte ho přímo do hlavní větve. Toto potvrzení aktivuje akci GitHubu, aby se znovu spustil a nasadí váš kód, tentokrát pomocí instančního objektu k ověření.

    
    name: Build and deploy Node.js app to Azure Web App
    
    on:
      push:
        branches:
          - main
      workflow_dispatch:
    
    env:
      AZURE_WEBAPP_NAME: <web-app-name>   # set this to your application's name
      NODE_VERSION: '18.x'                # set this to the node version to use
      AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
      AZURE_WEBAPP_SLOT_NAME: stage       # set this to your application's slot name
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Set up Node.js version
            uses: actions/setup-node@v1
            with:
              node-version: ${{ env.NODE_VERSION }}
    
          - name: npm install, build
            run: |
              npm install
              npm run build --if-present
    
          - name: Upload artifact for deployment job
            uses: actions/upload-artifact@v2
            with:
              name: node-app
              path: .
    
      deploy:
        runs-on: ubuntu-latest
        needs: build
        environment:
          name: 'stage'
          url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    
        steps:
          - name: Download artifact from build job
            uses: actions/download-artifact@v2
            with:
              name: node-app
    
          - uses: azure/login@v1
            with:
              creds: |
                {
                  "clientId": "${{ secrets.AZURE_APP_ID }}",
                  "clientSecret":  "${{ secrets.AZURE_PASSWORD }}",
                  "subscriptionId": "${{ secrets.AZURE_SUBSCRIPTION_ID }}",
                  "tenantId": "${{ secrets.AZURE_TENANT_ID }}"
                }
    
          - name: 'Deploy to Azure Web App'
            id: deploy-to-webapp
            uses: azure/webapps-deploy@v2
            with:
              app-name: ${{ env.AZURE_WEBAPP_NAME }}
              slot-name: ${{ env.AZURE_WEBAPP_SLOT_NAME }}
              package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
    
          - name: logout
            run: |
              az logout
    

Jak mi směrování provozu slotů umožňuje otestovat aktualizace, které v aplikacích vytvořím?

Směrování provozu s sloty umožňuje směrovat předdefinovanou část uživatelského provozu do každého slotu. Zpočátku se 100 % provozu směruje do produkčního webu. Máte ale možnost například posílat 10 % provozu do přípravného slotu. Pokud tímto způsobem nakonfigurujete směrování provozu slotu, při pokusu o přístup k aplikaci se 10 % z nich automaticky směruje do přípravného slotu beze změn vaší instance služby Front Door. Další informace o prohození slotů a přípravných prostředích ve službě App Service najdete v tématu Nastavení přípravných prostředí ve službě Aplikace Azure Service.

Návody přesunout můj kód z přípravného slotu do produkčního slotu?

Jakmile dokončíte testování a ověřování v přípravných slotech, můžete provést prohození slotů z přípravného slotu na produkční lokalitu. Tento prohození je potřeba provést pro všechny instance vaší aplikace v každé oblasti. Během prohození slotů platforma App Service zajistí, že cílový slot neprostoje.

Prohození provedete spuštěním následujícího příkazu pro každou aplikaci. Nahraďte zástupný symbol pro <web-app-name>.

az webapp deployment slot swap --resource-group MyResourceGroup -name <web-app-name> --slot stage --target-slot production

Po několika minutách můžete přejít na koncový bod služby Front Door a ověřit úspěšné prohození slotu.

V tuto chvíli jsou vaše aplikace spuštěné a všechny změny, které provedete ve zdrojovém kódu aplikace, automaticky aktivují aktualizaci obou přípravných slotů. Proces prohození slotů pak můžete opakovat, až budete připraveni tento kód přesunout do produkčního prostředí.

Jak jinak můžu azure Front Door používat v nasazeních ve více oblastech?

Pokud máte obavy o potenciální přerušení nebo problémy s kontinuitou napříč oblastmi, jako u některých zákazníků, kteří vidí jednu verzi vaší aplikace, zatímco jiní vidí jinou verzi nebo pokud provádíte významné změny aplikací, můžete dočasně odebrat web, který prochází prohozením slotů ze skupiny původu vaší služby Front Door. Veškerý provoz se pak směruje na druhý původ. Přejděte do podokna Aktualizovat skupinu původu a odstraňte zdroj, u kterého došlo ke změně. Jakmile provedete všechny změny a budete připraveni znovu obsluhovat provoz, můžete se vrátit do stejného podokna a vybrat + Přidat zdroj , aby se dal přečíst zdroj.

Snímek obrazovky znázorňující odebrání zdroje služby Azure Front Door

Pokud nechcete odstranit a pak číst zdroje, můžete pro instanci služby Front Door vytvořit další skupiny původu. Pak můžete trasu přidružit ke skupině původu odkazující na zamýšlený původ. Můžete například vytvořit dvě nové skupiny původu, jednu pro vaši primární oblast a jednu pro sekundární oblast. Když dojde ke změně primární oblasti, přidružte trasu k sekundární oblasti a naopak, když sekundární oblast prochází změnou. Po dokončení všech změn můžete trasu přidružit k původní skupině původu, která obsahuje obě oblasti. Tato metoda funguje, protože trasu lze přidružit pouze k jedné skupině původu najednou.

Pokud chcete předvést práci s více zdroji, na následujícím snímku obrazovky jsou tři skupiny původu. MyOriginGroup se skládá z obou webových aplikací a ostatních dvou skupin původu, z nichž každá se skládá z webové aplikace v příslušné oblasti. V tomto příkladu se aplikace v primární oblasti mění. Před zahájením této změny byla trasa přidružená k oblasti MySecondaryRegion, takže veškerý provoz se odešle do aplikace v sekundární oblasti během období změny. Trasu můžete aktualizovat výběrem možnosti Nepřidruženo, čímž se zobrazí podokno Přidružit trasy .

Snímek obrazovky znázorňující přidružení tras ke službě Azure Front Door

Návody omezit přístup k webu rozšířených nástrojů?

S Aplikace Azure službou se web SCM/advanced tools používá ke správě aplikací a nasazení zdrojového kódu aplikace. Zvažte uzamčení webu SCM nebo pokročilých nástrojů, protože tento web pravděpodobně nemusí být dostupný prostřednictvím služby Front Door. Můžete například nastavit omezení přístupu, která umožňují provádět testování a povolit průběžné nasazování z libovolného nástroje. Pokud používáte sloty nasazení, konkrétně pro produkční sloty, můžete odepřít téměř veškerý přístup k webu SCM, protože testování a ověření se provádí s přípravnými sloty.

Další kroky