Kurz: Nasazení aplikace ASP.NET Core a Azure SQL Database do služby Aplikace Azure Service
V tomto kurzu se dozvíte, jak nasadit aplikaci ASP.NET Core řízenou daty do služby Aplikace Azure a připojit se ke službě Azure SQL Database. Nasadíte také Azure Cache for Redis, abyste ve své aplikaci povolili kód ukládání do mezipaměti. Aplikace Azure Service je vysoce škálovatelná služba samoobslužných oprav, která umožňuje snadné nasazování aplikací ve Windows nebo Linuxu. I když tento kurz používá aplikaci ASP.NET Core 8.0, tento proces je stejný pro ostatní verze ASP.NET Core.
V tomto kurzu se naučíte:
- Vytvořte ve výchozím nastavení zabezpečenou architekturu služby App Service, SQL Database a mezipaměti Redis.
- Zabezpečení tajných kódů připojení pomocí spravované identity a odkazů na Key Vault
- Nasaďte ukázkovou aplikaci ASP.NET Core do služby App Service z úložiště GitHub.
- Přístup k připojovací řetězec služby App Service a nastavení aplikace v kódu aplikace
- Proveďte aktualizace a znovu nasaďte kód aplikace.
- Vygenerujte schéma databáze tak, že nahrajete sadu migrací.
- Streamování diagnostických protokolů z Azure
- Správa aplikace na webu Azure Portal
- Zřiďte stejnou architekturu a nasaďte ji pomocí Azure Developer CLI.
- Optimalizujte svůj vývojový pracovní postup pomocí GitHub Codespaces a GitHub Copilotu.
Požadavky
- Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit.
- Nainstalované rozhraní příkazového řádku pro vývojáře Azure Pomocí Azure Cloud Shellu můžete postupovat podle kroků, protože už má nainstalované rozhraní příkazového řádku Azure Developer CLI.
- Znalost vývoje ASP.NET Core
- (Volitelné) Pokud chcete vyzkoušet GitHub Copilot, účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.
Přeskočit na konec
Ukázkovou aplikaci můžete rychle nasadit v tomto kurzu a zobrazit ji spuštěnou v Azure. V Azure Cloud Shellu stačí spustit následující příkazy a postupovat podle pokynů:
dotnet tool install --global dotnet-ef
mkdir msdocs-app-service-sqldb-dotnetcore
cd msdocs-app-service-sqldb-dotnetcore
azd init --template msdocs-app-service-sqldb-dotnetcore
azd up
1. Spuštění ukázky
Nejprve nastavíte ukázkovou aplikaci řízenou daty jako výchozí bod. Ukázkové úložiště zahrnuje konfiguraci vývojového kontejneru. Vývojový kontejner má vše, co potřebujete k vývoji aplikace, včetně databáze, mezipaměti a všech proměnných prostředí potřebných ukázkovou aplikací. Vývojový kontejner se může spouštět v kódu GitHubu, což znamená, že ukázku můžete spustit na libovolném počítači s webovým prohlížečem.
Krok 1: V novém okně prohlížeče:
- Přihlaste se k účtu GitHub.
- Přejděte na https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore/fork.
- Zrušte výběr možnosti Kopírovat pouze hlavní větev. Chcete všechny větve.
- Vyberte Vytvořit fork.
Krok 2: Ve forku GitHubu:
- Pro počáteční větev vyberte hlavní>počáteční-no-infra. Tato větev obsahuje pouze ukázkový projekt a žádné soubory ani konfiguraci související s Azure.
- Vyberte Code>Create codespace on starter-no-infra. Nastavení codespace trvá několik minut.
Krok 3: V terminálu codespace:
- Spusťte migrace databází pomocí
dotnet ef database update
příkazu . - Spusťte aplikaci pomocí
dotnet run
příkazu . - Až se zobrazí oznámení
Your application running on port 5093 is available.
, vyberte Otevřít v prohlížeči. Ukázkovou aplikaci byste měli vidět na nové kartě prohlížeče. Chcete-li aplikaci zastavit, zadejteCtrl
+C
.
Tip
O tomto úložišti můžete požádat GitHub Copilot . Příklad:
- @workspace Co tento projekt dělá?
- @workspace Co dělá složka .devcontainer?
Máte problémy? Projděte si část Řešení potíží.
2. Vytvoření služby App Service, databáze a mezipaměti
V tomto kroku vytvoříte prostředky Azure. Kroky použité v tomto kurzu vytvoří sadu prostředků zabezpečených ve výchozím nastavení, mezi které patří App Service, Azure SQL Database a Azure Cache. Pro proces vytváření zadáte:
- Název webové aplikace. Používá se jako součást názvu DNS pro vaši aplikaci ve formě
https://<app-name>-<hash>.<region>.azurewebsites.net
. - Oblast, ve které se má aplikace spouštět fyzicky na světě. Používá se také jako součást názvu DNS pro vaši aplikaci.
- Zásobník modulu runtime pro aplikaci. Tady vyberete verzi .NET, kterou chcete použít pro vaši aplikaci.
- Plán hostování aplikace. Je to cenová úroveň, která zahrnuje sadu funkcí a kapacitu škálování vaší aplikace.
- Skupina prostředků pro aplikaci. Skupina prostředků umožňuje seskupovat (v logickém kontejneru) všechny prostředky Azure potřebné pro aplikaci.
Přihlaste se k webu Azure Portal a podle těchto kroků vytvořte prostředky služby Aplikace Azure Service.
Krok 1: Na webu Azure Portal:
- Do vyhledávacího panelu v horní části webu Azure Portal zadejte "databáze webové aplikace".
- Vyberte položku s popiskem Web App + Database pod nadpisem Marketplace . Můžete také přejít přímo do průvodce vytvořením.
Krok 2: Na stránce Vytvořit webovou aplikaci a databázi vyplňte formulář následujícím způsobem.
- Skupina prostředků: Vyberte Vytvořit novou a použijte název msdocs-core-sql-tutorial.
- Oblast: Libovolná oblast Azure, která je blízko vás.
- Název: msdocs-core-sql-XYZ , kde XYZ je jakékoli tři náhodné znaky. Tento název musí být v rámci služby Azure jedinečný.
- Zásobník modulu runtime: .NET 8 (LTS)
- Modul: SQLAzure. Azure SQL Database je plně spravovaný databázový stroj paaS (platforma jako služba), který je vždy spuštěný na nejnovější stabilní verzi SQL Serveru.
- Přidat Azure Cache for Redis?: Ano.
- Plán hostování: Basic. Až budete připraveni, můžete vertikálně navýšit kapacitu na cenovou úroveň produkčního prostředí.
- Vyberte Zkontrolovat a vytvořit.
- Po dokončení ověření vyberte Vytvořit.
Krok 3: Dokončení nasazení trvá několik minut. Po dokončení nasazení vyberte tlačítko Přejít k prostředku . Přejdete přímo do aplikace App Service, ale vytvoří se následující prostředky:
- Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
- Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří se plán Linuxu na úrovni Basic .
- App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
- Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
- Privátní koncové body: Přístupové koncové body pro trezor klíčů, databázový server a mezipaměť Redis ve virtuální síti.
- Síťová rozhraní: Představuje privátní IP adresy, jednu pro každý privátní koncový bod.
- Server Azure SQL Database: Přístupné pouze ze svého privátního koncového bodu.
- Azure SQL Database: Databáze a uživatel se pro vás vytvoří na serveru.
- Azure Cache for Redis: Přístupné pouze z zákulisí svého privátního koncového bodu.
- Trezor klíčů: Přístupný pouze ze svého privátního koncového bodu. Slouží ke správě tajných kódů pro aplikaci App Service.
- Privátní DNS zón: Povolte překlad DNS trezoru klíčů, databázového serveru a mezipaměti Redis ve virtuální síti.
3. Zabezpečení tajných kódů připojení
Průvodce vytvořením vygeneroval připojovací řetězec, který jste už jako připojovací řetězec .NET a nastavení aplikace. Osvědčeným postupem zabezpečení je ale úplné zachování tajných kódů mimo službu App Service. Tajné kódy přesunete do trezoru klíčů a změníte nastavení aplikace na odkazy služby Key Vault pomocí konektorů služeb.
Tip
Pokud chcete použít ověřování bez hesla, přečtěte si, Návody změnit připojení služby SQL Database tak, aby místo toho používala spravovanou identitu?
Krok 1: Na stránce služby App Service:
- V nabídce vlevo vyberte Nastavení > proměnných >prostředí Připojovací řetězce.
- Vyberte AZURE_SQL_CONNECTIONSTRING.
- V připojovací řetězec Přidat/Upravit na konci řetězce najděte v poli Hodnota část Password= (Heslo= ).
- Zkopírujte řetězec hesla za heslem = pro pozdější použití. Tato připojovací řetězec umožňuje připojit se k databázi SQL zabezpečenou za privátním koncovým bodem. Heslo se ukládá přímo v aplikaci App Service, což není nejlepší. Stejně tak mezipaměť Redis připojovací řetězec na kartě Nastavení aplikace obsahuje tajný kód. Změníte to.
Krok 2: Vytvoření trezoru klíčů pro zabezpečenou správu tajných kódů
- Na horním panelu hledání zadejte "key vault" a pak vyberte Marketplace>Key Vault.
- Ve skupině prostředků vyberte msdocs-core-sql-tutorial.
- Do názvu trezoru klíčů zadejte název, který se skládá jenom z písmen a číslic.
- V oblasti ji nastavte na ukázkové umístění jako skupinu prostředků.
Krok 3:
- Vyberte kartu Sítě.
- Zrušte výběr možnosti Povolit veřejný přístup.
- Vyberte Vytvořit privátní koncový bod.
- Ve skupině prostředků vyberte msdocs-core-sql-tutorial.
- Do názvu trezoru klíčů zadejte název, který se skládá jenom z písmen a číslic.
- V oblasti ji nastavte na ukázkové umístění jako skupinu prostředků.
- V dialogovém okně v umístění vyberte stejné umístění jako vaše aplikace App Service.
- Ve skupině prostředků vyberte msdocs-core-sql-tutorial.
- Do pole Název zadejte msdocs-core-sql-XYZVvaultEndpoint.
- Ve virtuální síti vyberte msdocs-core-sql-XYZVnet.
- V podsíti msdocs-core-sql-XYZSubnet.
- Vyberte OK.
- Vyberte Zkontrolovat a vytvořit a pak Vytvořit. Počkejte na dokončení nasazení trezoru klíčů. Měla by se zobrazit informace o tom, že vaše nasazení je dokončené.
Krok 4:
- Na horním panelu hledání zadejte msdocs-core-sql a pak prostředek služby App Service s názvem msdocs-core-sql-XYZ.
- Na stránce služby App Service v nabídce vlevo vyberte Konektor služby Nastavení>. Už existují dva konektory, které pro vás průvodce vytvořením aplikace vytvořil.
- Zaškrtněte políčko vedle konektoru služby SQL Database a pak vyberte Upravit.
- Vyberte kartu Ověřování.
- Do pole Heslo vložte dříve zkopírované heslo.
- Vyberte Uložit tajný klíč ve službě Key Vault.
- V části Připojení ke službě Key Vault vyberte Vytvořit nový. V horní části dialogového okna pro úpravy se otevře dialogové okno Vytvořit připojení .
Krok 5: V dialogovém okně Vytvořit připojení pro připojení ke službě Key Vault:
- Ve službě Key Vault vyberte trezor klíčů, který jste vytvořili dříve.
- Vyberte Zkontrolovat a vytvořit. Měli byste vidět, že spravovaná identita přiřazená systémem je nastavená na Vybraná.
- Po dokončení ověření vyberte Vytvořit.
Krok 6: Jste zpátky v dialogovém okně pro úpravy pro defaultConnector.
- Na kartě Ověřování počkejte na vytvoření konektoru trezoru klíčů. Po dokončení ho rozevírací seznam Připojení ke službě Key Vault automaticky vybere.
- Vyberte Další: Sítě.
- Výběrem možnosti Konfigurovat pravidla brány firewall povolte přístup k cílové službě. Průvodce vytvořením aplikace už databázi SQL zabezpečil privátním koncovým bodem.
- Zvolte Uložit. Počkejte, až se zobrazí oznámení o úspěšném dokončení aktualizace.
Krok 7: Na stránce Konektory služeb:
- Zaškrtněte políčko vedle konektoru Cache for Redis a pak vyberte Upravit.
- Vyberte kartu Ověřování.
- Vyberte Uložit tajný klíč ve službě Key Vault.
- V části Připojení ke službě Key Vault vyberte trezor klíčů, který jste vytvořili.
- Vyberte Další: Sítě.
- Výběrem možnosti Konfigurovat pravidla brány firewall povolte přístup k cílové službě. Průvodce vytvořením aplikace už databázi SQL zabezpečil privátním koncovým bodem.
- Zvolte Uložit. Počkejte, až se zobrazí oznámení o úspěšném dokončení aktualizace.
Krok 8: Ověření změn:
- V nabídce vlevo znovu vyberte Připojovací řetězce proměnných > prostředí.
- Vedle AZURE_SQL_CONNECTIONSTRING vyberte Zobrazit hodnotu. Hodnota by měla být
@Microsoft.KeyVault(...)
, což znamená, že se jedná o odkaz na trezor klíčů, protože tajný klíč je teď spravovaný v trezoru klíčů. - Pokud chcete ověřit připojovací řetězec Redis, vyberte kartu Nastavení aplikace. Vedle AZURE_REDIS_CONNECTIONSTRING vyberte Zobrazit hodnotu. Hodnota by měla být
@Microsoft.KeyVault(...)
také.
4. Nasazení ukázkového kódu
V tomto kroku nakonfigurujete nasazení GitHubu pomocí GitHub Actions. Je to jen jeden z mnoha způsobů nasazení do služby App Service, ale také skvělý způsob, jak mít kontinuální integraci v procesu nasazení. Ve výchozím nastavení spustí každá git push
z vašich úložišť GitHub akci sestavení a nasazení.
Krok 1: V nabídce vlevo vyberte Deployment Center(Deployment Center).>
Krok 2: Na stránce Deployment Center:
- Ve zdroji vyberte GitHub. Ve výchozím nastavení je jako zprostředkovatel sestavení vybrán GitHub Actions .
- Přihlaste se ke svému účtu GitHub a postupujte podle pokynů k autorizaci Azure.
- V organizaci vyberte svůj účet.
- V úložišti vyberte msdocs-app-service-sqldb-dotnetcore.
- Ve větvi vyberte starter-no-infra. Jedná se o stejnou větev, ve které jste pracovali s ukázkovou aplikací bez jakýchkoli souborů nebo konfigurace souvisejících s Azure.
- Jako typ ověřování vyberte identitu přiřazenou uživatelem.
- V horní nabídce vyberte Uložit.
App Service potvrdí soubor pracovního postupu do zvoleného úložiště GitHub v
.github/workflows
adresáři. Ve výchozím nastavení centrum nasazení vytvoří identitu přiřazenou uživatelem pro pracovní postup k ověření pomocí ověřování Microsoft Entra (ověřování OIDC). Alternativní možnosti ověřování najdete v tématu Nasazení do služby App Service pomocí GitHub Actions.
Krok 3: Zpět v prostoru kódu GitHubu ukázkového forku spusťte git pull origin starter-no-infra
.
Tím se do vašeho prostoru kódu načte nově potvrzený soubor pracovního postupu.
Krok 4 (možnost 1: s GitHub Copilotem):
- Začněte novou chatovací relaci výběrem zobrazení chatu a pak výběrem +možnosti .
- Zeptejte se na @workspace Jak se aplikace připojuje k databázi a mezipaměti? Copilot vám může poskytnout vysvětlení třídy
MyDatabaseContext
a způsobu konfigurace v Program.cs. - Zeptejte se: "V produkčním režimu chci, aby aplikace používala připojovací řetězec s názvem AZURE_SQL_CONNECTIONSTRING pro databázi a nastavení aplikace s názvem AZURE_REDIS_CONNECTIONSTRING*." Copilot vám může dát návrh kódu podobný návrhu v možnosti 2: bez níže uvedených kroků GitHub Copilotu a dokonce vám řekněte, abyste udělali změnu v souboru Program.cs.
- Otevřete Program.cs v průzkumníku a přidejte návrh kódu. GitHub Copilot vám pokaždé nedává stejnou odpověď a není vždy správná. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.
Krok 4 (možnost 2: bez GitHub Copilotu):
- V průzkumníku otevřete Program.cs .
- Najděte okomentovaný kód (řádky 12–21) a odkomentujte ho.
Tento kód se připojí k databázi pomocí
AZURE_SQL_CONNECTIONSTRING
mezipaměti Redis a připojí se k mezipaměti Redis pomocí nastaveníAZURE_REDIS_CONNECTIONSTRING
aplikace .
Krok 5 (možnost 1: s GitHub Copilotem):
- V průzkumníku otevřete soubor .github/workflows/starter-no-infra_msdocs-core-sql-XYZ . Tento soubor vytvořil průvodce vytvořením služby App Service.
dotnet publish
Zvýrazněte krok a vyberte .- Zeptejte se Copilotu, "Install dotnet ef, then create a migrations bundle in the same output folder".
- Pokud je návrh přijatelný, vyberte Přijmout. GitHub Copilot vám pokaždé nedává stejnou odpověď a není vždy správná. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.
Krok 5 (možnost 2: bez GitHub Copilotu):
- V průzkumníku otevřete soubor .github/workflows/starter-no-infra_msdocs-core-sql-XYZ . Tento soubor vytvořil průvodce vytvořením služby App Service.
- Pod krokem
dotnet publish
přidejte krok pro instalaci nástroje Entity Framework Core pomocí příkazudotnet tool install -g dotnet-ef --version 8.*
. - V novém kroku přidejte další krok pro vygenerování sady migrace databáze v balíčku pro nasazení:
dotnet ef migrations bundle --runtime linux-x64 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle
. Sada migrace je samostatný spustitelný soubor, který můžete spustit v produkčním prostředí bez nutnosti sady .NET SDK. Kontejner Služby App Service pro Linux má pouze modul runtime .NET, nikoli sadu .NET SDK.
Krok 6:
- Vyberte rozšíření správy zdrojového kódu .
- Do textového pole zadejte zprávu potvrzení, například
Configure Azure database and cache connections
. Nebo vyberte a nechte GitHub Copilot vygenerovat potvrzovací zprávu za vás. - Vyberte Potvrdit a potvrďte akci ano.
- Vyberte Možnost Synchronizovat změny 1 a potvrďte akci OK.
Krok 7: Zpět na stránce Deployment Center na webu Azure Portal:
- Vyberte kartu Protokoly a pak výběrem možnosti Aktualizovat zobrazte spuštění nového nasazení.
- V položce protokolu pro spuštění nasazení vyberte položku Sestavit/Nasadit protokoly s nejnovějším časovým razítkem.
Krok 8: Přejdete do úložiště GitHub a zjistíte, že je spuštěná akce GitHubu. Soubor pracovního postupu definuje dvě samostatné fáze, sestavení a nasazení. Počkejte na spuštění GitHubu a zobrazte stav Úspěch. Trvá to asi 5 minut.
5. Generování schématu databáze
S databází SQL chráněnou virtuální sítí je nejjednodušší způsob, jak spouštět migrace databází dotnet, v relaci SSH s kontejnerem služby App Service.
Krok 1: Zpět na stránce služby App Service v nabídce vlevo vyberte SSH pro vývojové nástroje>a pak vyberte Přejít.
Krok 2: V terminálu SSH:
- Spusťte
cd /home/site/wwwroot
. Tady jsou všechny vaše nasazené soubory. - Spusťte sadu migrace, kterou vygeneroval pracovní postup GitHubu, pomocí příkazu
./migrationsbundle -- --environment Production
. Pokud proběhne úspěšně, služba App Service se úspěšně připojuje ke službě SQL Database. Nezapomeňte, že odpovídá změnám kódu, které--environment Production
jste provedli v Program.cs.
V relaci SSH se změny souborů v /home
můžou zachovat i po restartování aplikace. Změny mimo /home
jiné se neuchovávají.
Máte problémy? Projděte si část Řešení potíží.
6. Přejděte do aplikace.
Krok 1: Na stránce služby App Service:
- V nabídce vlevo vyberte Přehled.
- Vyberte adresu URL aplikace.
Krok 2: Přidejte do seznamu několik úkolů. Blahopřejeme, ve službě Aplikace Azure Service spouštíte zabezpečenou aplikaci ASP.NET Core řízenou daty.
Tip
Ukázková aplikace implementuje model doplňování do mezipaměti. Když navštívíte zobrazení dat podruhé nebo znovu načtete stejnou stránku po provedení změn dat, zobrazí se doba zpracování na webové stránce mnohem rychleji, protože načítá data z mezipaměti místo databáze.
7. Streamování diagnostických protokolů
Aplikace Azure Služba zaznamenává všechny zprávy protokolované do konzoly, aby vám pomohla při diagnostice problémů s vaší aplikací. Ukázková aplikace vypíše zprávy protokolu konzoly ve všech jejích koncových bodech, aby tuto funkci ukázala.
Krok 1: Na stránce služby App Service:
- V nabídce vlevo vyberte Monitorování>protokolů služby App Service.
- V části Protokolování aplikace vyberte Systém souborů a pak vyberte Uložit.
Krok 2: V nabídce vlevo vyberte Stream protokolu. Zobrazí se protokoly pro vaši aplikaci, včetně protokolů platformy a protokolů z kontejneru.
8. Vyčištění prostředků
Po dokončení můžete odstranit všechny prostředky z předplatného Azure odstraněním skupiny prostředků.
Krok 1: Na panelu hledání v horní části webu Azure Portal:
- Zadejte název skupiny prostředků.
- Vyberte tuto skupinu prostředků.
Krok 2: Na stránce skupiny prostředků vyberte Odstranit skupinu prostředků.
Krok 3:
- Potvrďte odstranění zadáním názvu skupiny prostředků.
- Vyberte Odstranit.
2. Vytvoření prostředků Azure a nasazení ukázkové aplikace
V tomto kroku vytvoříte prostředky Azure a nasadíte ukázkovou aplikaci do App Service v Linuxu. Kroky použité v tomto kurzu vytvoří sadu prostředků zabezpečených ve výchozím nastavení, mezi které patří App Service, Azure SQL Database a Azure Cache for Redis.
Vývojový kontejner už má Azure Developer CLI (AZD).
V kořenovém adresáři úložiště spusťte
azd init
příkaz .azd init --template dotnet-app-service-sqldb-infra
Po zobrazení výzvy zadejte následující odpovědi:
Otázka Odpověď Aktuální adresář není prázdný. Chcete zde inicializovat projekt v adresáři<>? Y Co chcete s těmito soubory dělat? Zachovat stávající soubory beze změny Zadejte nový název prostředí. Zadejte jedinečný název. Šablona AZD používá tento název jako součást názvu DNS vaší webové aplikace v Azure ( <app-name>-<hash>.azurewebsites.net
). Jsou povoleny alfanumerické znaky a spojovníky.Přihlaste se k Azure spuštěním
azd auth login
příkazu a následujícím příkazem:azd auth login
Vytvořte potřebné prostředky Azure a pomocí příkazu nasaďte kód
azd up
aplikace. Podle pokynů vyberte požadované předplatné a umístění prostředků Azure.azd up
Dokončení
azd up
příkazu trvá přibližně 15 minut (mezipaměť Redis trvá nejvíce času). Kód aplikace se také zkompiluje a nasadí, ale později kód upravíte tak, aby fungoval se službou App Service. Když je spuštěný, příkaz poskytuje zprávy o procesu zřizování a nasazení, včetně odkazu na nasazení v Azure. Po dokončení zobrazí příkaz také odkaz na aplikaci pro nasazení.Tato šablona AZD obsahuje soubory (azure.yaml a adresář infrastruktury ), které ve výchozím nastavení generují zabezpečenou architekturu s následujícími prostředky Azure:
- Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
- Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří se plán Linuxu na úrovni Basic .
- App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
- Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
- Privátní koncové body: Přístupové koncové body pro trezor klíčů, databázový server a mezipaměť Redis ve virtuální síti.
- Síťová rozhraní: Představuje privátní IP adresy, jednu pro každý privátní koncový bod.
- Server Azure SQL Database: Přístupné pouze ze svého privátního koncového bodu.
- Azure SQL Database: Databáze a uživatel se pro vás vytvoří na serveru.
- Azure Cache for Redis: Přístupné pouze z zákulisí svého privátního koncového bodu.
- Trezor klíčů: Přístupný pouze ze svého privátního koncového bodu. Slouží ke správě tajných kódů pro aplikaci App Service.
- Privátní DNS zón: Povolte překlad DNS trezoru klíčů, databázového serveru a mezipaměti Redis ve virtuální síti.
Jakmile příkaz dokončí vytváření prostředků a nasazení kódu aplikace poprvé, nasazená ukázková aplikace ještě nefunguje, protože musíte provést malé změny, abyste se mohli připojit k databázi v Azure.
Máte problémy? Projděte si část Řešení potíží.
3. Ověření připojovací řetězec
Tip
Výchozí databáze SQL připojovací řetězec používá ověřování SQL. Pokud potřebujete bezpečnější ověřování bez hesla, přečtěte si, Návody změnit připojení ke službě SQL Database tak, aby místo toho používala spravovanou identitu?
Šablona AZD, kterou použijete, vygenerovala proměnné připojení, které jste už použili jako nastavení aplikace, a vypíše je do terminálu, aby vám to vyhovuje. Nastavení aplikace je jedním ze způsobů, jak udržovat tajné kódy připojení mimo úložiště kódu.
Ve výstupu AZD vyhledejte nastavení
AZURE_SQL_CONNECTIONSTRING
aAZURE_REDIS_CONNECTIONSTRING
. Zobrazí se jenom názvy nastavení. Ve výstupu AZD vypadají takto:App Service app has the following connection strings: - AZURE_SQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_SQL_CONNECTIONSTRING
obsahuje připojovací řetězec do služby SQL Database v Azure aAZURE_REDIS_CONNECTIONSTRING
obsahuje připojovací řetězec do mezipaměti Azure Redis. Později je budete muset použít ve svém kódu.Šablona AZD vám pro usnadnění práci ukáže přímý odkaz na stránku nastavení aplikace. Najděte odkaz a otevřete ho na nové kartě prohlížeče.
Máte problémy? Projděte si část Řešení potíží.
4. Úprava vzorového kódu a opětovné nasazení
V codespace GitHubu spusťte novou chatovací relaci tak , že vyberete zobrazení Chat a pak vyberete +.
Zeptejte se na @workspace Jak se aplikace připojuje k databázi a mezipaměti? Copilot vám může poskytnout vysvětlení třídy
MyDatabaseContext
a způsobu konfigurace v Program.cs.Zeptejte se: "V produkčním režimu chci, aby aplikace používala připojovací řetězec s názvem AZURE_SQL_CONNECTIONSTRING pro databázi a nastavení aplikace s názvem AZURE_REDIS_CONNECTIONSTRING*." Copilot vám může dát návrh kódu podobný návrhu v možnosti 2: bez níže uvedených kroků GitHub Copilotu a dokonce vám řekněte, abyste udělali změnu v souboru Program.cs.
Otevřete Program.cs v průzkumníku a přidejte návrh kódu.
GitHub Copilot vám pokaždé nedává stejnou odpověď a není vždy správná. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.
Než tyto změny nasadíte, musíte ještě vygenerovat sadu migrace.
Máte problémy? Projděte si část Řešení potíží.
5. Generování schématu databáze
S databází SQL chráněnou virtuální sítí je nejjednodušší způsob, jak spouštět migrace databází, v relaci SSH s kontejnerem služby App Service. Kontejnery App Service Linux ale nemají sadu .NET SDK, takže nejjednodušší způsob, jak spouštět migrace databází, je nahrát samostatnou sadu migrací.
Pomocí následujícího příkazu vygenerujte sadu migrací pro váš projekt:
dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
Tip
Ukázková aplikace (viz DotNetCoreSqlDb.csproj) je nakonfigurovaná tak, aby zahrnovala tento soubor migrationsbundle .
azd package
Během fáze se do balíčku pro nasazení přidá migracebundle.Nasaďte všechny změny pomocí
azd up
.azd up
Ve výstupu Azd vyhledejte adresu URL relace SSH a přejděte na ni v prohlížeči. Ve výstupu to vypadá takto:
Open SSH session to App Service container at: https://<app-name>-<hash>.scm.azurewebsites.net/webssh/host
V terminálu SSH spusťte následující příkazy:
cd /home/site/wwwroot ./migrationsbundle -- --environment Production
Pokud proběhne úspěšně, služba App Service se úspěšně připojuje k databázi. Nezapomeňte, že odpovídá změnám kódu, které
--environment Production
jste provedli v Program.cs.
V relaci SSH se změny souborů v /home
můžou zachovat i po restartování aplikace. Změny mimo /home
jiné se neuchovávají.
Máte problémy? Projděte si část Řešení potíží.
6. Přejděte do aplikace.
Ve výstupu AZD najděte adresu URL aplikace a přejděte na ni v prohlížeči. Adresa URL vypadá takto ve výstupu AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Přidejte do seznamu několik úkolů.
Blahopřejeme, spouštíte webovou aplikaci ve službě Aplikace Azure Service se zabezpečeným připojením ke službě Azure SQL Database.
Máte problémy? Projděte si část Řešení potíží.
7. Streamování diagnostických protokolů
Aplikace Azure Služba může zaznamenávat protokoly konzoly, které vám pomůžou diagnostikovat problémy s aplikací. Pro usnadnění přístupu už šablona AZD povolila protokolování do místního systému souborů a odesílá protokoly do pracovního prostoru služby Log Analytics.
Ukázková aplikace obsahuje standardní příkazy protokolování, které předvádějí tuto funkci, jak je znázorněno v následujícím fragmentu kódu:
public async Task<IActionResult> Index()
{
var todoItems = await _cache.GetAsync(_TodoItemsCacheKey);
if (todoItems != null)
{
_logger.LogInformation("Data from cache.");
var todoList = JsonConvert.DeserializeObject<List<Todo>>(Encoding.UTF8.GetString(todoItems));
return View(todoList);
}
else
{
_logger.LogInformation("Data from database.");
var todoList = await _context.Todo.ToListAsync();
var serializedTodoList = JsonConvert.SerializeObject(todoList);
await _cache.SetAsync(_TodoItemsCacheKey, Encoding.UTF8.GetBytes(serializedTodoList));
return View(todoList);
}
}
Ve výstupu AZD vyhledejte odkaz na streamování protokolů služby App Service a přejděte na něj v prohlížeči. Odkaz vypadá takto ve výstupu AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Přečtěte si další informace o protokolování v aplikacích .NET v řadě o povolení OpenTelemetry služby Azure Monitor pro aplikace .NET, Node.js, Pythonu a Javy.
Máte problémy? Projděte si část Řešení potíží.
8. Vyčištění prostředků
Pokud chcete odstranit všechny prostředky Azure v aktuálním prostředí nasazení, spusťte azd down
a postupujte podle pokynů.
azd down
Řešení problému
- Zobrazení nasazení portálu pro Azure SQL Database zobrazuje konfliktní stav.
- Na webu Azure Portal se v uživatelském rozhraní streamu protokolu pro webovou aplikaci zobrazují chyby sítě.
- Zobrazí se relace SSH v prohlížeči.
SSH CONN CLOSED
- Stránka streamu protokolu portálu se zobrazuje
Connected!
, ale žádné protokoly
Zobrazení nasazení portálu pro Azure SQL Database zobrazuje konfliktní stav.
V závislosti na vybraném předplatném a oblasti se může zobrazit stav nasazení služby Azure SQL Database Conflict
s následující zprávou v podrobnostech o operaci:
Location '<region>' is not accepting creation of new Windows Azure SQL Database servers at this time.
Tato chyba je pravděpodobně způsobena omezením předplatného pro oblast, kterou vyberete. Zkuste pro nasazení zvolit jinou oblast.
Na webu Azure Portal se v uživatelském rozhraní streamu protokolu pro webovou aplikaci zobrazují chyby sítě.
Může se zobrazit tato chyba:
Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.
Obvykle se jedná o přechodnou chybu při prvním spuštění aplikace. Počkejte několik minut a zkontrolujte to znovu.
Zobrazí se relace SSH v prohlížeči. SSH CONN CLOSED
Spuštění kontejneru Linux trvá několik minut. Počkejte několik minut a zkontrolujte to znovu.
Stránka streamu protokolu portálu se zobrazuje Connected!
, ale žádné protokoly
Po nakonfigurování diagnostických protokolů se aplikace restartuje. Možná budete muset aktualizovat stránku, aby se změny projevily v prohlížeči.
Nejčastější dotazy
- Kolik stojí toto nastavení?
- Návody se připojit k serveru Azure SQL Database, který je zabezpečený za virtuální sítí pomocí jiných nástrojů?
- Jak místní vývoj aplikací funguje s GitHub Actions?
- Návody chyby ladění během nasazení GitHub Actions?
- Návody změnit připojení služby SQL Database tak, aby místo toho používala spravovanou identitu?
- Nemám oprávnění k vytvoření identity přiřazené uživatelem
- Co můžu dělat s GitHub Copilotem v kódu?
Kolik stojí toto nastavení?
Ceny vytvořených prostředků jsou následující:
- Plán služby App Service se vytvoří na úrovni Basic a dá se vertikálně navýšit nebo snížit. Podívejte se na ceny služby App Service.
- Azure SQL Database se vytváří v bezserverové úrovni pro obecné účely na hardwaru řady Standard s minimálními jádry. Existují malé náklady a je možné je distribuovat do jiných oblastí. Náklady můžete minimalizovat ještě více tím, že zmenšujete maximální velikost nebo ji můžete vertikálně navýšit úpravou úrovně obsluhy, výpočetní úrovně, konfigurace hardwaru, počtu jader, velikosti databáze a redundance zón. Viz Ceny služby Azure SQL Database.
- Azure Cache for Redis se vytvoří na úrovni Basic s minimální velikostí mezipaměti. K této úrovni jsou spojené malé náklady. Kapacitu můžete vertikálně navýšit na vyšší úroveň výkonu pro vyšší dostupnost, clustering a další funkce. Podívejte se na ceny služby Azure Cache for Redis.
- Za virtuální síť se neúčtují poplatky, pokud nenakonfigurujete další funkce, jako je partnerský vztah. Podívejte se na ceny služby Azure Virtual Network.
- Za privátní zónu DNS se účtují malé poplatky. Podívejte se na ceny Azure DNS.
Návody se připojit k serveru Azure SQL Database, který je zabezpečený za virtuální sítí pomocí jiných nástrojů?
- Základní přístup z nástroje příkazového řádku můžete spustit
sqlcmd
z terminálu SSH aplikace. Kontejner aplikace není součástísqlcmd
, takže ho musíte nainstalovat ručně. Mějte na paměti, že nainstalovaný klient se při restartování aplikace neuchová. - Pokud se chcete připojit z klienta aplikace SQL Server Management Studio nebo ze sady Visual Studio, musí být váš počítač ve virtuální síti. Může to být například virtuální počítač Azure, který je připojený k jedné z podsítí, nebo počítač v místní síti, který má připojení VPN typu site-to-site s virtuální sítí Azure.
Jak místní vývoj aplikací funguje s GitHub Actions?
Jako příklad vezměte automaticky vygenerovaný soubor pracovního postupu ze služby App Service a každý git push
spustí nové sestavení a nasazení. Z místního klonu úložiště GitHub provedete požadované aktualizace nasdílení změn do GitHubu. Příklad:
git add .
git commit -m "<some-message>"
git push origin main
Návody chyby ladění během nasazení GitHub Actions?
Pokud v automaticky vygenerovaném souboru pracovního postupu GitHubu selže krok, zkuste upravit neúspěšný příkaz a vygenerovat více podrobného výstupu. Přidáním možnosti můžete například získat další výstup z libovolného dotnet
příkazu -v
. Potvrďte a nasdílejte změny, aby se aktivovalo další nasazení do služby App Service.
Nemám oprávnění k vytvoření identity přiřazené uživatelem
Viz Nastavení nasazení GitHub Actions z Centra nasazení.
Návody změnit připojení služby SQL Database tak, aby místo toho používala spravovanou identitu?
Výchozí připojovací řetězec k databázi SQL spravuje konektor služby, s výchozím názvemConnector a používá ověřování SQL. Pokud ho chcete nahradit připojením, které používá spravovanou identitu, spusťte následující příkazy v Cloud Shellu po nahrazení zástupných symbolů:
az extension add --name serviceconnector-passwordless --upgrade
az sql server update --enable-public-network true
az webapp connection delete sql --connection defaultConnector --resource-group <group-name> --name <app-name>
az webapp connection create sql --connection defaultConnector --resource-group <group-name> --name <app-name> --target-resource-group <group-name> --server <database-server-name> --database <database-name> --client-type dotnet --system-identity --config-connstr true
az sql server update --enable-public-network false
Ve výchozím nastavení příkaz az webapp connection create sql --client-type dotnet --system-identity --config-connstr
provede následující:
- Nastaví uživatele jako správce Microsoft Entra ID serveru databáze SQL.
- Vytvořte spravovanou identitu přiřazenou systémem a udělíte jí přístup k databázi.
- Vygeneruje bez hesla připojovací řetězec volal
AZURE_SQL_CONNECTIONGSTRING
, který už vaše aplikace používá na konci kurzu.
Vaše aplikace by teď měla mít připojení k databázi SQL. Další informace najdete v tématu Kurz: Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.
Tip
Nechcete povolit připojení k veřejné síti? Pokud máte ve svém předplatném přiřazenou roli Vlastník, můžete přeskočit az sql server update --enable-public-network true
spuštěním příkazů z Azure Cloud Shellu integrovaného s vaší virtuální sítí.
Pokud chcete identitě udělit požadovaný přístup k databázi, která je zabezpečená virtuální sítí, az webapp connection create sql
potřebuje přímé připojení s ověřováním Entra ID k databázovému serveru. Azure Cloud Shell ve výchozím nastavení nemá tento přístup k databázi zabezpečené sítí.
Co můžu dělat s GitHub Copilotem v kódu?
Možná jste si všimli, že zobrazení chatu GitHub Copilot už pro vás bylo při vytváření prostoru kódu. Pro usnadnění práce zahrneme rozšíření chatu GitHub Copilot do definice kontejneru (viz .devcontainer/devcontainer.json). Potřebujete ale účet GitHub Copilot (k dispozici je 30denní bezplatná zkušební verze).
Několik tipů pro vás při komunikaci s GitHub Copilotem:
- V rámci jedné chatové relace se otázky a odpovědi vzájemně staví a otázky můžete upravit tak, aby vyladily odpověď, kterou získáte.
- GitHub Copilot ve výchozím nastavení nemá přístup k žádnému souboru ve vašem úložišti. Pokud chcete položit otázky k souboru, otevřete ho nejprve v editoru.
- Pokud chcete, aby GitHub Copilot měl při přípravě odpovědí přístup ke všem souborům v úložišti, začněte svou otázkou
@workspace
. Další informace najdete na webu Use the @workspace agent. - V chatové relaci může GitHub Copilot navrhovat změny a (s
@workspace
) dokonce i tam, kde se mají změny provádět, ale změny za vás nesmí provádět. Je na vás přidat navrhované změny a otestovat je.
Tady je několik dalších věcí, které můžete říct k vyladění odpovědi, kterou získáte:
- Chci, aby tento kód běžel jenom v produkčním režimu.
- Chci, aby tento kód běžel jenom ve službě Aplikace Azure a ne místně.
- Zdá se, že parametr --output-path není podporován.
Související obsah
V dalším kurzu se dozvíte, jak zabezpečit aplikaci pomocí vlastní domény a certifikátu.
Nebo se podívejte na další zdroje informací: