Osvědčené postupy pro nasazení
Poznámka:
Od 1. června 2024 budou mít všechny nově vytvořené aplikace App Service možnost vygenerovat jedinečný výchozí název hostitele pomocí zásad <app-name>-<random-hash>.<region>.azurewebsites.net
vytváření názvů . Stávající názvy aplikací zůstanou beze změny.
Příklad: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Další podrobnosti najdete v tématu Jedinečný výchozí název hostitele pro prostředek služby App Service.
Každý vývojový tým má jedinečné požadavky, které můžou ztížit implementaci efektivního kanálu nasazení v jakékoli cloudové službě. Tento článek představuje tři hlavní komponenty nasazení do služby App Service: zdroje nasazení, kanály sestavení a mechanismy nasazení. Tento článek se věnuje také některým osvědčeným postupům a tipům pro konkrétní zásobníky jazyků.
Součásti nasazení
Zdroj nasazení
Zdrojem nasazení je umístění kódu aplikace. Pro produkční aplikace je zdrojem nasazení obvykle úložiště hostované softwarem pro správu verzí, jako je GitHub, BitBucket nebo Azure Repos. Ve scénářích vývoje a testování může být zdrojem nasazení projekt na místním počítači.
Kanál buildu
Jakmile se rozhodnete o zdroji nasazení, v dalším kroku zvolíte kanál buildu. Kanál buildu načte zdrojový kód ze zdroje nasazení a provede řadu kroků (například kompilaci kódu, minifikaci kódu HTML a JavaScriptu, spouštění testů a balení komponent), aby se aplikace dostala do spustitelného stavu. Konkrétní příkazy spouštěné kanálem buildu závisí na vašem zásobníku jazyka. Tyto operace je možné spouštět na buildovém serveru, jako je Azure Pipelines, nebo se spouštět místně.
Mechanismus nasazení
Mechanismus nasazení je akce použitá k vložení integrované aplikace do adresáře /home/site/wwwroot vaší webové aplikace. Adresář /wwwroot je připojené umístění úložiště sdílené všemi instancemi vaší webové aplikace. Když mechanismus nasazení umístí vaši aplikaci do tohoto adresáře, instance obdrží oznámení o synchronizaci nových souborů. App Service podporuje následující mechanismy nasazení:
- Koncové body Kudu: Kudu je opensourcový vývojářský nástroj pro produktivitu, který běží jako samostatný proces ve službě Windows App Service a jako druhý kontejner v Linux App Service. Kudu zpracovává průběžné nasazování a poskytuje koncové body HTTP pro nasazení, jako je zipdeploy/.
- FTP a WebDeploy: Pomocí přihlašovacích údajů webu nebo uživatele můžete nahrát soubory přes FTP nebo WebDeploy. Tyto mechanismy neprocházejí Kudu.
Nástroje pro nasazení, jako jsou Azure Pipelines, Jenkins a moduly plug-in editoru, používají jeden z těchto mechanismů nasazení.
Použití slotů nasazení
Kdykoli je to možné, při nasazování nového produkčního sestavení použijte sloty nasazení. Pokud používáte úroveň plánu služby App Service Standard nebo lépe, můžete aplikaci nasadit do přípravného prostředí, ověřit změny a provádět orientační testy. Až budete připraveni, můžete prohodit přípravné a produkční sloty. Operace prohození zahřeje potřebné instance pracovního procesu tak, aby odpovídaly vašemu produkčnímu škálování, čímž se eliminuje výpadek.
Průběžné nasazování kódu
Pokud váš projekt určil větve pro testování, kontrolu kvality a přípravu, měly by se všechny tyto větve průběžně nasazovat do přípravného slotu. (To se označuje jako Návrh Gitflow.) To umožňuje zúčastněným stranám snadno posoudit a otestovat nasazenou větev.
Pro produkční slot by nikdy nemělo být povolené průběžné nasazování. Místo toho by se vaše produkční větev (často hlavní) měla nasadit do neprodukčního slotu. Až budete připraveni vydat základní větev, prohodíte ji do produkčního slotu. Prohození do produkčního prostředí ( místo nasazení do produkčního prostředí) zabrání výpadkům a umožňuje vrátit změny zpět opětovným prohozením.
Průběžné nasazování kontejnerů
Pro vlastní kontejnery z Dockeru nebo jiných registrů kontejnerů nasaďte image do přípravného slotu a prohoďte ji do produkčního prostředí, abyste zabránili výpadkům. Automatizace je složitější než nasazení kódu, protože image musíte odeslat do registru kontejneru a aktualizovat značku image ve webové aplikaci.
Pro každou větev, kterou chcete nasadit do slotu, nastavte automatizaci pro každé potvrzení do větve následujícím postupem.
- Sestavte a označte image. V rámci kanálu buildu označte image pomocí ID potvrzení Gitu, časového razítka nebo jiných identifikovatelných informací. Nejlepší je nepoužívat výchozí značku "latest". Jinak je obtížné trasovat, jaký kód je aktuálně nasazený, což ztěžuje ladění.
- Nasdílí označený obrázek. Jakmile je image sestavená a označená, kanál odešle image do našeho registru kontejneru. V dalším kroku slot nasazení stáhne označenou image z registru kontejneru.
- Aktualizujte slot nasazení pomocí nové značky image. Po aktualizaci této vlastnosti se lokalita automaticky restartuje a stáhne novou image kontejneru.
Pro běžné architektury automatizace jsou uvedené následující příklady.
Použití Azure DevOps
Služba App Service má integrované průběžné doručování kontejnerů prostřednictvím Centra nasazení. Přejděte do aplikace na webu Azure Portal a v části Nasazení vyberte Deployment Center. Podle pokynů vyberte úložiště a větev. Tím nakonfigurujete kanál buildu a verze DevOps, který automaticky sestaví, označí a nasadí kontejner, když se do vybrané větve nasdílí nová potvrzení.
Použití GitHub Actions
Nasazení kontejneru můžete také automatizovat pomocí GitHub Actions. Následující soubor pracovního postupu sestaví a označí kontejner pomocí ID potvrzení, odešle ho do registru kontejneru a aktualizuje zadanou webovou aplikaci novou značkou image.
on:
push:
branches:
- <your-branch-name>
name: Linux_Container_Node_Workflow
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/docker-login@v1
with:
login-server: contoso.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
docker push contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'node-rnc'
publish-profile: ${{ secrets.azureWebAppPublishProfile }}
images: 'contoso.azurecr.io/nodejssampleapp:${{ github.sha }}'
Použití jiných poskytovatelů automatizace
Výše uvedené kroky platí pro další nástroje automatizace, jako je CircleCI nebo Travis CI. K aktualizaci slotů nasazení pomocí Azure CLI je však potřeba použít nové značky imagí v posledním kroku. Pokud chcete v automatizačním skriptu použít Azure CLI, vygenerujte instanční objekt pomocí následujícího příkazu.
az ad sp create-for-rbac --name "myServicePrincipal" --role contributor \
--scopes /subscriptions/{subscription}/resourceGroups/{resource-group} \
--sdk-auth
Ve skriptu se přihlaste pomocí az login --service-principal
a zadejte informace o instančním objektu. Pak můžete použít az webapp config container set
k nastavení názvu kontejneru, značky, adresy URL registru a hesla registru. Níže najdete několik užitečných odkazů pro vytvoření procesu CI kontejneru.
Aspekty specifické pro jazyk
Java
K nasazení aplikací JAR a wardeploy/ pro aplikace WAR použijte zipdeploy Kudu/ API. Pokud používáte Jenkinse, můžete tato rozhraní API použít přímo ve fázi nasazení. Další informace najdete v tomto článku.
Uzel
Ve výchozím nastavení Kudu provede kroky sestavení pro vaši aplikaci Node (npm install
). Pokud používáte službu sestavení, jako je Azure DevOps, je sestavení Kudu zbytečné. Pokud chcete zakázat sestavení Kudu, vytvořte nastavení SCM_DO_BUILD_DURING_DEPLOYMENT
aplikace s hodnotou false
.
.NET
Ve výchozím nastavení Kudu provede kroky sestavení pro vaši aplikaci .NET (dotnet build
). Pokud používáte službu sestavení, jako je Azure DevOps, je sestavení Kudu zbytečné. Pokud chcete zakázat sestavení Kudu, vytvořte nastavení SCM_DO_BUILD_DURING_DEPLOYMENT
aplikace s hodnotou false
.
Další důležité informace o nasazení
Místní mezipaměť
Aplikace Azure Obsah služby je uložený ve službě Azure Storage a je vystavován trvalým způsobem jako sdílená složka obsahu. Některé aplikace ale potřebují vysoce výkonné úložiště obsahu jen pro čtení, které můžou běžet s vysokou dostupností. Tyto aplikace můžou využívat místní mezipaměť. Místní mezipaměť se nedoporučuje pro weby pro správu obsahu, jako je WordPress.
Vždy používejte místní mezipaměť ve spojení s sloty nasazení, abyste zabránili výpadkům. Informace o společném používání těchto funkcí najdete v této části .
Vysoké využití procesoru nebo paměti
Pokud váš plán služby App Service využívá více než 90 % dostupného procesoru nebo paměti, může mít základní virtuální počítač potíže se zpracováním vašeho nasazení. Pokud k tomu dojde, dočasně vertikálně navyšte kapacitu počtu instancí, aby se nasazení provedlo. Po dokončení nasazení můžete počet instancí vrátit do předchozí hodnoty.
Další informace oosvědčených materiálech najdete v diagnostice služby App Service .
- Přejděte na webovou aplikaci na webu Azure Portal.
- V levém navigačním panelu vyberte Diagnostika diagnostiky služby App Service a vyřešte problémy .
- Zvolte dlaždici domovské stránky Osvědčené postupy .
- Vyberte osvědčené postupy pro dostupnost a výkon nebo osvědčené postupy pro optimální konfiguraci , abyste zobrazili aktuální stav vaší aplikace, pokud jde o tyto osvědčené postupy.
Pomocí tohoto odkazu můžete také přímo otevřít diagnostiku služby App Service pro váš prostředek: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot
.
Další materiály
Referenční informace k proměnným prostředí a nastavením aplikace