Průběžné nasazování s vlastními kontejnery v Azure App Service
V tomto kurzu nakonfigurujete průběžné nasazování pro vlastní image kontejneru ze spravovaných Azure Container Registry úložišť nebo Docker Hub.
1. přejít do centra nasazení
V Azure Portalpřejděte na stránku pro správu vaší aplikace App Service.
v nabídce vlevo klikněte na centrum nasazení > Nastavení.
2. Vyberte zdroj nasazení.
Výběr zdroje nasazení závisí na vašem scénáři:
- Registr kontejnerů nastavuje CI/CD mezi registrem kontejneru a App Service.
- možnost akcí GitHub je určena pro vás, pokud udržujete zdrojový kód pro image kontejneru v GitHub. aktivováno novými potvrzeními v úložišti GitHub můžete spustit akci nasadit
docker buildadocker pushpřímo do registru kontejneru a potom aktualizovat aplikaci App Service a spustit novou bitovou kopii. další informace najdete v tématu jak funguje CI/CD s GitHubmi akcemi. - informace o nastavení služby CI/CD pomocí Azure Pipelines najdete v tématu nasazení kontejneru webové aplikace Azure z Azure Pipelines.
Poznámka
V případě aplikace Docker Compose vyberte Container Registry.
pokud zvolíte GitHub akce, klikněte na autorizovat a postupujte podle výzev k autorizaci. pokud jste už v GitHub autorizaci dříve, můžete ho nasadit z úložiště jiného uživatele kliknutím na změnit účet.
po autorizaci účtu Azure pomocí GitHub vyberte organizaci, úložiště a větev , ze které se mají nasadit.
2. Konfigurace nastavení registru
3. Konfigurace nastavení registru
Pokud chcete nasadit aplikaci s více kontejnery (Docker Compose), vyberte Docker Compose v typu kontejneru.
Pokud nevidíte rozevírací seznam typ kontejneru , přejděte zpět na zdroj a Vyberte Container Registry.
V případě zdroje registru Vyberte umístění registru kontejneru. Pokud není Azure Container Registry ani Docker Hub, Vyberte privátní registr.
Poznámka
Pokud vaše aplikace pro více kontejnerů (Docker Compose) používá více než jednu privátní bitovou kopii, ujistěte se, že jsou privátní obrázky ve stejném privátním registru a jsou přístupné se stejnými přihlašovacími údaji uživatele. Pokud vaše aplikace s více kontejnery používá jenom veřejné image, Vyberte Docker Hub, a to i v případě, že některé image nejsou v Docker Hub.
Postupujte podle dalších kroků a vyberte kartu, která odpovídá vaší volbě.
V rozevíracím seznamu registr se zobrazí Registry ve stejném předplatném jako vaše aplikace. Vyberte registr, který chcete.
Poznámka
- Pokud chcete použít spravované identity k uzamknutí přístupu k ACR, postupujte podle tohoto návodu:
- Pokud chcete nasadit z registru v jiném předplatném, vyberte místo toho možnost privátní registr v rámci zdroje registru .
Vyberte Image a značku k nasazení. Pokud chcete, Zadejte do spouštěcího souboru příkaz Spustit jako.
Použijte následující krok v závislosti na typu kontejneru:
- Pro Docker Compose Vyberte registr pro privátní image. Klikněte na zvolit soubor a odešlete soubor Docker Composenebo stačí Vložit obsah Docker Compose souboru do Konfigurace.
- V případě jednoho kontejneru Vyberte Image a značku k nasazení. Pokud chcete, Zadejte do spouštěcího souboru příkaz Spustit jako.
App Service připojí řetězec ve spouštěcím souboru ke konci docker run příkazu (jako [COMMAND] [ARG...] segment) při spuštění kontejneru.
3. povolení CI/CD
4. povolení CI/CD
App Service podporuje integraci CI/CD s Azure Container Registry a Docker Hub. Pokud ho chcete povolit, vyberte při průběžném nasazování možnost zapnuto .
Poznámka
pokud vyberete možnost GitHub akce ve zdroji, nezískáte tuto možnost, protože CI/CD se zpracovává přímo pomocí akcí GitHub. Místo toho se zobrazí část Konfigurace pracovního postupu , kde můžete kliknout na Náhled souboru a zkontrolovat soubor pracovního postupu. Azure tento soubor potvrdí do vybraného zdrojového úložiště GitHub pro zpracování úloh sestavení a nasazení. další informace najdete v tématu jak funguje CI/CD s GitHubmi akcemi.
Když tuto možnost povolíte, App Service do úložiště přidat Webhook v Azure Container Registry nebo Docker Hub. Vaše úložiště se publikuje do tohoto Webhooku, kdykoli se vaše vybraná image aktualizuje pomocí docker push . Webhook způsobí, že se vaše aplikace App Service restartuje a spustí docker pull se, aby se získala aktualizovaná image.
U ostatních privátních registrů se může váš Webhook vystavit ručně nebo jako krok v kanálu CI/CD. Kliknutím na tlačítko Kopírovat v adrese URL WEBhooku získáte adresu URL Webhooku.
Poznámka
Podpora aplikací pro více kontejnerů (Docker Compose) je omezená:
- V případě Azure Container Registry App Service vytvoří Webhook ve vybraném registru s registrem jako oborem. A
docker pushdo jakéhokoli úložiště v registru (včetně těch, které neodkazuje soubor Docker Compose) spustí restart aplikace. Webhook možná budete chtít změnit na užší rozsah. - Docker Hub nepodporuje Webhooky na úrovni registru. Webhooky musíte Přidat ručně do imagí zadaných v souboru Docker Compose.
4. Uložte nastavení.
5. Uložte nastavení.
Klikněte na Uložit.
jak funguje CI/CD s GitHubmi akcemi
pokud zvolíte GitHub akce ve zdroji (viz téma volba zdroje nasazení), App Service nastavuje CI/CD následujícími způsoby:
- uloží soubor pracovního postupu GitHub akcí do úložiště GitHub, aby zpracovával úlohy sestavení a nasazení do App Service.
- přidá přihlašovací údaje privátního registru jako GitHub tajných klíčů. Vygenerovaný soubor pracovního postupu spustí akci Azure/Docker – přihlášení , aby se přihlásil ke svému privátnímu registru, a pak se spustí
docker pusha nasadí se na něj. - přidá profil publikování aplikace jako tajný kód GitHub. Vygenerovaný soubor pracovního postupu používá tento tajný klíč k ověření pomocí App Service a potom spustí akci Azure/webapps-Deploy ke konfiguraci aktualizované image, která spustí restart aplikace, který se má načíst v aktualizované imagi.
- Zachycuje informace z pracovních postupů spuštění protokolů a zobrazí je na kartě protokoly v centru nasazení vaší aplikace.
poskytovatele sestavení GitHub akcí můžete přizpůsobit následujícími způsoby:
- až se soubor pracovního postupu vygeneruje v úložišti GitHub, přizpůsobte ho. další informace najdete v tématu syntaxe pracovního postupu pro akce GitHub. Jen se ujistěte, že pracovní postup končí akcí Azure/webapps-deploy, která aktivuje restartování aplikace.
- Pokud je vybraná větev chráněná, můžete si stále zobrazit náhled souboru pracovního postupu bez uložení konfigurace a pak ho přidat a GitHub tajných kódů do úložiště ručně. Tato metoda vám nedá integraci protokolu s Azure Portal.
- Místo profilu publikování nasaďte pomocí instančního objektu v Azure Active Directory.
Ověřování pomocí objektu služby
Tato volitelná konfigurace nahrazuje výchozí ověřování profily publikování ve vygenerované souboru pracovního postupu.
Instanční objekt vygeneruje příkazem az ad sp create-for-rbac v Azure CLI. V následujícím příkladu nahraďte <subscription-id> <group-name> , a <app-name> vlastními hodnotami. Uložte celý výstup JSON pro další krok, včetně nejvyšší úrovně {} .
az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--sdk-auth
Důležité
V případě zabezpečení udělte k objektu služby minimální požadovaný přístup. Rozsah v předchozím příkladu je omezený na konkrétní aplikaci App Service, a ne na celou skupinu prostředků.
V GitHubpřejděte ke svému úložišti a pak vyberte Nastavení > Secrets > Add a new secret (Přidat nový tajný kód). Celý výstup JSON z příkazu Azure CLI vložte do pole hodnoty tajného kódu. Zadejte pro tajný kód název, například AZURE_CREDENTIALS .
V souboru pracovního postupu vygenerovaném Centrem nasazení upravte azure/webapps-deploy krok kódem jako v následujícím příkladu:
- name: Sign in to Azure
# Use the GitHub secret you added
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
with:
app-name: '<app-name>'
slot-name: 'production'
images: '<registry-server>/${{ secrets.AzureAppService_ContainerUsername_... }}/<image>:${{ github.sha }}'
- name: Sign out of Azure
run: |
az logout
Automatizace pomocí rozhraní příkazového řádku
Pokud chcete nakonfigurovat registr kontejneru a image Dockeru, spusťte příkaz az webapp config container set.
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name '<image>:<tag>' --docker-registry-server-url 'https://<registry-name>.azurecr.io' --docker-registry-server-user '<username>' --docker-registry-server-password '<password>'
Pokud chcete nakonfigurovat aplikaci s více kontejnery (Docker Compose), připravte místně soubor Docker Compose a pak spusťte příkaz az webapp config container set s --multicontainer-config-file parametrem . Pokud váš Docker Compose obsahuje privátní image, přidejte --docker-registry-server-* parametry, jak je znázorněno v předchozím příkladu.
az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>
Pokud chcete nakonfigurovat CI/CD z registru kontejneru do vaší aplikace, spusťte příkaz az webapp deployment container config s --enable-cd parametrem . Výstupem příkazu je adresa URL webhooku, ale webhook musíte v registru vytvořit ručně v samostatném kroku. Následující příklad povolí CI/CD ve vaší aplikaci a pak použije adresu URL webhooku ve výstupu k vytvoření webhooku v Azure Container Registry.
ci_cd_url=$(az webapp deployment container config --name <app-name> --resource-group <group-name> --enable-cd true --query CI_CD_URL --output tsv)
az acr webhook create --name <webhook-name> --registry <registry-name> --resource-group <group-name> --actions push --uri $ci_cd_url --scope '<image>:<tag>'