Průběžné nasazování s využitím vlastních kontejnerů ve službě Aplikace Azure Service

V tomto kurzu nakonfigurujete průběžné nasazování pro vlastní image kontejneru ze spravovaných úložišť Azure Container Registry nebo Docker Hubu.

1. Přejděte do centra nasazení.

Na webu Azure Portal přejděte na stránku pro správu vaší aplikace App Service.

V nabídce vlevo klikněte na Deployment Center> Nastavení.

2. Zvolte zdroj nasazení.

Volba zdroje nasazení závisí na vašem scénáři:

  • Registr kontejnerů nastaví CI/CD mezi registrem kontejneru a službou App Service.
  • Možnost GitHub Actions je pro vás, pokud udržujete zdrojový kód image kontejneru na GitHubu. Aktivované novými potvrzeními do úložiště GitHub, akce nasazení se může spustit docker build a přímo do registru kontejneru a docker push pak aktualizovat aplikaci App Service tak, aby spustila novou image. Další informace najdete v tématu Jak CI/CD funguje s GitHub Actions.
  • Informace o nastavení CI/CD pomocí Azure Pipelines najdete v tématu Nasazení kontejneru webové aplikace Azure ze služby Azure Pipelines.

Poznámka:

Pro aplikaci Docker Compose vyberte Container Registry.

Pokud zvolíte GitHub Actions, klikněte naAutorizovat a postupujte podle pokynů k autorizaci. Pokud jste už s GitHubem už autorizovali, můžete ho nasadit z jiného úložiště uživatele kliknutím na Změnit účet.

Po autorizaci účtu Azure pomocí GitHubu vyberte organizaci, úložiště a větev, ze které chcete provést nasazení.

2. Konfigurace nastavení registru

3. Konfigurace nastavení registru

Poznámka:

Kontejnery sajdkár (Preview) budou úspěšné vícekontenerové aplikace (Docker Compose) ve službě App Service. Pokud chcete začít, přečtěte si kurz: Konfigurace kontejneru sajdkáře pro vlastní kontejner ve službě Aplikace Azure Service (Preview).

Pokud chcete nasadit vícekontenerovou aplikaci (Docker Compose), vyberteDocker Compose v typu kontejneru.

Pokud rozevírací seznam Typ kontejneru nevidíte, posuňte se zpět ke zdroji a vyberteContainer Registry.

Ve zdroji registru vyberte, kde je váš registr kontejneru. Pokud se nejedná o Službu Azure Container Registry ani Docker Hub, vyberteprivátní registr.

Poznámka:

Pokud vaše aplikace Pro více kontejnerů (Docker Compose) používá více než jednu privátní image, ujistěte se, že jsou privátní image ve stejném privátním registru a jsou přístupné pomocí stejných přihlašovacích údajů uživatele. Pokud vaše vícekontejnerová aplikace používá jenom veřejné image, vyberteDocker Hub, i když některé image nejsou v Docker Hubu.

Podle dalších kroků 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 požadovaný registr.

Poznámka:

Vyberte image a značku, které chcete nasadit. Pokud chcete, zadejte do spouštěcího souboru spouštěcí příkaz.

Postupujte podle dalšího kroku v závislosti na typu kontejneru:

  • Pro Docker Compose vyberte registr pro vaše privátní image. Kliknutím naZvolit soubor nahrajete soubor Docker Compose nebo jednoduše vložíte obsah souboru Docker Compose do konfigurace.
  • V případě jednoho kontejneru vyberte image a značku, které chcete nasadit. Pokud chcete, zadejte do spouštěcího souboru spouštěcí příkaz.

App Service při spuštění kontejneru připojí řetězec ve spouštěcím docker run souboru na konec příkazu (jako [COMMAND] [ARG...] segment).

3. Povolení CI/CD

4. Povolení CI/CD

App Service podporuje integraci CI/CD se službou Azure Container Registry a Docker Hubem. Pokud ho chcete povolit, vyberteZapnuto v průběžném nasazování.

Poznámka:

Pokud ve zdroji vyberete GitHub Actions, tuto možnost se nezobrazí, protože CI/CD zpracovává GitHub Actions přímo. Místo toho se zobrazí část Konfigurace pracovního postupu, kde můžete kliknout nasoubor náhledu a zkontrolovat soubor pracovního postupu. Azure tento soubor potvrdí do vybraného zdrojového úložiště GitHubu pro zpracování úloh sestavení a nasazení. Další informace najdete v tématu Jak CI/CD funguje s GitHub Actions.

Když tuto možnost povolíte, App Service přidá webhook do úložiště ve službě Azure Container Registry nebo Docker Hubu. Vaše úložiště publikuje do tohoto webhooku při každé aktualizaci docker pushvybraného obrázku . Webhook způsobí restartování a spuštění docker pull aplikace App Service, aby získala aktualizovanou image.

Poznámka:

Abyste zajistili správné fungování webhooku, je nezbytné povolit v rámci webové aplikace možnost Základní přihlašovací údaje pro publikování ověřování . Pokud to neuděláte, může dojít k chybě 401 neautorizované pro webhook. Pokud chcete ověřit, jestli je povolené základní přihlašovací údaje publikování ověřování, postupujte takto:

  • Přejděte na obecné Nastavení konfigurace > vaší webové aplikace.
  • Vyhledejte část Nastavení platformy, kde najdete možnost Základní přihlašovací údaje pro publikování ověřování.

U jiných privátních registrů můžete webhook publikovat ručně nebo jako krok v kanálu CI/CD. V adrese URL webhooku získáte adresu URL webhooku kliknutím natlačítko Kopírovat.

Poznámka:

Podpora vícekontenerových aplikací (Docker Compose) je omezená:

  • Pro Azure Container Registry vytvoří App Service ve vybraném registru webhook s registrem jako oborem. A docker push do libovolného úložiště v registru (včetně těch, na které se neodkazuje váš soubor Docker Compose), aktivuje restartování aplikace. Webhook můžete upravit na užší obor.
  • 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 naUložit.

Jak CI/CD funguje s GitHub Actions

Pokud ve zdroji zvolíte GitHub Actions(viz Volba zdroje nasazení), App Service nastaví CI/CD následujícími způsoby:

  • Uloží soubor pracovního postupu GitHub Actions do úložiště GitHub, aby zvládl sestavení a nasazení úloh do služby App Service.
  • Přidá přihlašovací údaje pro privátní registr jako tajné kódy GitHubu. Vygenerovaný soubor pracovního postupu spustí akci Azure/docker-login pro přihlášení k vašemu privátnímu registru a pak se spustí docker push , aby se do něj nasadila.
  • Přidá profil publikování pro vaši aplikaci jako tajný kód GitHubu. Vygenerovaný soubor pracovního postupu používá tento tajný kód k ověření ve službě App Service a potom spustí akci nasazení Azure/webapps, která nakonfiguruje aktualizovanou image, která aktivuje restartování aplikace, aby se aktualizovaná image stáhla.
  • Zaznamenává informace z protokolů spuštění pracovního postupu a zobrazuje je na kartě Protokoly v Centru nasazení vaší aplikace.

Poskytovatele sestavení GitHub Actions můžete přizpůsobit následujícími způsoby:

  • Upravte soubor pracovního postupu po vygenerování v úložišti GitHub. Další informace najdete v tématu Syntaxe pracovního postupu pro GitHub Actions. Stačí se ujistit, že pracovní postup končí akcí Azure/webapps-deploy , která aktivuje restartování aplikace.
  • Pokud je vybraná větev chráněná, můžete soubor pracovního postupu zobrazit náhled bez uložení konfigurace a pak ho přidat a požadované tajné kódy GitHubu do úložiště ručně. Tato metoda neposkytuje integraci protokolů s webem Azure Portal.
  • Místo profilu publikování nasaďte instanční objekt v ID Microsoft Entra.

Ověřování pomocí instančního objektu

Tato volitelná konfigurace nahrazuje výchozí ověřování profily publikování ve vygenerovaném souboru pracovního postupu.

Vygenerujte instanční objekt pomocí příkazu az ad sp create-for-rbac v Azure CLI. V následujícím příkladu nahraďte <id> předplatného, <název> skupiny a <název> aplikace 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> \
                            --json-auth

Důležité

Pro zabezpečení udělte minimální požadovaný přístup k instančnímu objektu. Obor v předchozím příkladu je omezený na konkrétní aplikaci App Service, nikoli na celou skupinu prostředků.

Na GitHubu přejděte do svého úložiště a pak vyberte Nastavení > Tajné kódy > Přidat nový tajný klíč. Celý výstup JSON z příkazu Azure CLI vložte do pole hodnoty tajného kódu. Dejte tajnému jménu, jako AZURE_CREDENTIALSje .

V souboru pracovního postupu vygenerovaného centrem nasazení upravte azure/webapps-deploy krok s kódem, jako je následující příklad:

- 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ťtepří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 vícekontenerovou aplikaci (Docker Compose), připravte místně soubor Docker Compose a pak spusťtepříkaz az webapp config container set s parametrem--multicontainer-config-file. Pokud váš soubor 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ťtepříkaz az webapp deployment container config s parametrem--enable-cd. Příkaz vypíše adresu 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 pomocí adresy URL webhooku ve výstupu vytvoří webhook ve službě 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>'

Další materiály