Kurz: Nasazení Tvůrce rozhraní API dat do Azure Container Apps pomocí Azure CLI
Tvůrce rozhraní API pro data je možné rychle nasadit do služeb Azure, jako je Azure Container Apps, jako součást vaší sady aplikací. V tomto kurzu použijete Azure CLI k automatizaci běžných úloh při nasazování Tvůrce rozhraní DATA API do Azure. Nejprve vytvoříte image kontejneru pomocí Tvůrce rozhraní DATA API a uložíte ji do Azure Container Registry. Image kontejneru pak nasadíte do Azure Container Apps s databází Azure SQL. Celý kurz se ověřuje u každé komponenty pomocí spravovaných identit.
V tomto kurzu jste:
- Create spravované identity s oprávněními řízení přístupu na základě role
- Nasazení Azure SQL pomocí ukázkové datové sady AdventureWorksLT
- Příprava image kontejneru v Azure Container Registry
- Nasazení aplikace Azure Container App s imagí kontejneru Data API Builderu
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Požadavky
- Předplatné Azure
- Azure Cloud Shell
- Azure Cloud Shell je interaktivní prostředí prostředí, které můžete používat prostřednictvím prohlížeče. Pomocí tohoto prostředí a jeho předinstalovaných příkazů spusťte kód v tomto článku, aniž byste museli cokoli instalovat do místního prostředí. Spuštění služby Azure Cloud Shell:
- V tomto článku vyberte Vyzkoušet v bloku kódu nebo příkazů. Výběrem možnosti Vyzkoušet se kód nebo příkaz automaticky nezkopíruje do Cloud Shell.
- Přejděte na https://shell.azure.comnebo vyberte Spustit Cloud Shell.
- Vyberte Cloud Shell v řádku nabídek Azure Portal (https://portal.azure.com)
- Azure Cloud Shell je interaktivní prostředí prostředí, které můžete používat prostřednictvím prohlížeče. Pomocí tohoto prostředí a jeho předinstalovaných příkazů spusťte kód v tomto článku, aniž byste museli cokoli instalovat do místního prostředí. Spuštění služby Azure Cloud Shell:
Create aplikace kontejneru
Nejprve vytvořte instanci Azure Container Apps se spravovanou identitou přiřazenou systémem. Této identitě se nakonec udělí oprávnění řízení přístupu na základě role pro přístup k Azure SQL a Azure Container Registry.
Create univerzální
SUFFIX
proměnnou, která se použije pro více názvů prostředků dále v tomto kurzu.let SUFFIX=$RANDOM*$RANDOM
Create proměnnou
LOCATION
s oblastí Azure, kterou jste vybrali pro použití v tomto kurzu.LOCATION="<azure-region>"
Poznámka
Pokud například chcete nasadit do oblasti USA – západ , použijte tento skript.
LOCATION="westus"
Pokud chcete zobrazit seznam podporovaných oblastí pro aktuální předplatné, použijte
az account list-locations
az account list-locations --query "[].{Name:displayName,Slug:name}" --output table
Další informace najdete v tématu Oblasti Azure.
Create proměnnou s názvem
RESOURCE_GROUP_NAME
skupiny prostředků. Pro účely tohoto kurzu doporučujememsdocs-dab-*
. Tuto hodnotu použijete v tomto kurzu několikrát.RESOURCE_GROUP_NAME="msdocs-dab$SUFFIX"
Create novou skupinu prostředků pomocí
az group create
.az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATION \ --tag "source=msdocs-dab-tutorial"
Create proměnné s názvem
API_CONTAINER_NAME
aCONTAINER_ENV_NAME
s jedinečně vygenerovanými názvy pro vaši instanci Azure Container Apps. Tyto proměnné použijete v průběhu kurzu.API_CONTAINER_NAME="api$SUFFIX" CONTAINER_ENV_NAME="env$SUFFIX"
Použijte
az containerapp env create
k vytvoření nového prostředí Azure Container Apps.az containerapp env create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_ENV_NAME \ --logs-destination none \ --location $LOCATION
Create novou aplikaci kontejneru
mcr.microsoft.com/azure-databases/data-api-builder
pomocí Image kontejneru DAB aaz containerapp create
příkaz Tato aplikace kontejneru se úspěšně spustí, ale není připojená k žádné databázi.az containerapp create \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENV_NAME \ --name $API_CONTAINER_NAME \ --image "mcr.microsoft.com/azure-databases/data-api-builder" \ --ingress "external" \ --target-port "5000" \ --system-assigned
Získejte identifikátor objektu zabezpečení spravované identity pomocí
az identity show
a uložte hodnotu do proměnné s názvemMANAGED_IDENTITY_PRINCIPAL_ID
.MANAGED_IDENTITY_PRINCIPAL_ID=$( \ az containerapp show \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --query "identity.principalId" \ --output "tsv" \ )
Tip
Výstup tohoto příkazu můžete kdykoli zkontrolovat.
echo $MANAGED_IDENTITY_PRINCIPAL_ID
Přiřazení oprávnění
Teď přiřaďte spravované identitě přiřazené systémem oprávnění ke čtení dat z Azure SQL a Azure Container Registry. Kromě toho přiřaďte identitě oprávnění k zápisu do Azure Container Registry.
Create proměnnou s názvem
RESOURCE_GROUP_ID
pro uložení identifikátoru skupiny prostředků. Získejte identifikátor pomocí .az group show
Tuto proměnnou použijete v tomto kurzu několikrát.RESOURCE_GROUP_ID=$( \ az group show \ --name $RESOURCE_GROUP_NAME \ --query "id" \ --output "tsv" \ )
Tip
Výstup tohoto příkazu můžete kdykoli zkontrolovat.
echo $RESOURCE_GROUP_ID
Slouží
az role assignment create
k přiřazení role AcrPush k vašemu účtu, abyste mohli odesílat kontejnery do Azure Container Registry.CURRENT_USER_PRINCIPAL_ID=$( \ az ad signed-in-user show \ --query "id" \ --output "tsv" \ ) # AcrPush az role assignment create \ --assignee $CURRENT_USER_PRINCIPAL_ID \ --role "8311e382-0749-4cb8-b61a-304f252e45ec" \ --scope $RESOURCE_GROUP_ID
Znovu přiřaďte roli AcrPull spravované identitě
az role assignment create
. Toto přiřazení umožňuje spravované identitě načíst image kontejneru z Azure Container Registry. Spravovaná identita se nakonec přiřadí instanci Azure Container Apps.# AcrPull az role assignment create \ --assignee $MANAGED_IDENTITY_PRINCIPAL_ID \ --role "7f951dda-4ed3-4680-a7ca-43fe172d538d" \ --scope $RESOURCE_GROUP_ID
Nasazení databáze
Dále nasaďte nový server a databázi ve službě Azure SQL. Databáze používá ukázkovou datovou sadu AdventureWorksLT .
Create proměnnou
SQL_SERVER_NAME
s jedinečným názvem pro instanci Azure SQL serveru. Tuto proměnnou použijete dále v této části.SQL_SERVER_NAME="srvr$SUFFIX"
Create nový prostředek Azure SQL serveru pomocí .
az sql server create
Nakonfigurujte spravovanou identitu jako správce tohoto serveru.az sql server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $SQL_SERVER_NAME \ --location $LOCATION \ --enable-ad-only-auth \ --external-admin-principal-type "User" \ --external-admin-name $API_CONTAINER_NAME \ --external-admin-sid $MANAGED_IDENTITY_PRINCIPAL_ID
Slouží
az sql server firewall-rule create
k vytvoření pravidla brány firewall, které povolí přístup ze služeb Azure.az sql server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --server $SQL_SERVER_NAME \ --name "AllowAzure" \ --start-ip-address "0.0.0.0" \ --end-ip-address "0.0.0.0"
Slouží
az sql db create
k vytvoření databáze na serveru Azure SQL s názvemadventureworks
. Nakonfigurujte databázi tak, aby používalaAdventureWorksLT
ukázková data.az sql db create \ --resource-group $RESOURCE_GROUP_NAME \ --server $SQL_SERVER_NAME \ --name "adventureworks" \ --sample-name "AdventureWorksLT"
Create proměnnou s názvem
SQL_CONNECTION_STRING
připojovací řetězec databázeadventureworks
v instanci Azure SQL serveru. Vytvořte připojovací řetězec s plně kvalifikovaným názvem domény serveru pomocíaz sql server show
. Tuto proměnnou použijete později v tomto kurzu.SQL_SERVER_ENDPOINT=$( \ az sql server show \ --resource-group $RESOURCE_GROUP_NAME \ --name $SQL_SERVER_NAME \ --query "fullyQualifiedDomainName" \ --output "tsv" \ ) SQL_CONNECTION_STRING="Server=$SQL_SERVER_ENDPOINT;Database=adventureworks;Encrypt=true;Authentication=Active Directory Default;"
Tip
Výstup tohoto příkazu můžete kdykoli zkontrolovat.
echo $SQL_CONNECTION_STRING
Sestavení image kontejneru
Dále vytvořte image kontejneru pomocí souboru Dockerfile. Pak nasaďte image kontejneru do nově vytvořené instance Azure Container Registry.
Create proměnnou s jedinečným
CONTAINER_REGISTRY_NAME
názvem pro vaši instanci Azure Container Registry. Tuto proměnnou použijete dále v této části.CONTAINER_REGISTRY_NAME="reg$SUFFIX"
Create novou instanci Azure Container Registry pomocí .
az acr create
az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_REGISTRY_NAME \ --sku "Standard" \ --location $LOCATION \ --admin-enabled false
Create vícefázový soubor Dockerfile s názvem
Dockerfile
. V souboru implementujte tyto kroky.Použití image kontejneru
mcr.microsoft.com/dotnet/sdk
jako základ fáze sestaveníNainstalujte rozhraní příkazového řádku DAB.
Create konfigurační soubor pro připojení k databázi SQL (
mssql
) s použitímDATABASE_CONNECTION_STRING
proměnné prostředí jako připojovací řetězec.Create entitu s názvem
Product
namapovanou naSalesLT.Product
tabulku.Zkopírujte konfigurační soubor do konečné
mcr.microsoft.com/azure-databases/data-api-builder
image kontejneru.
FROM mcr.microsoft.com/dotnet/sdk:6.0-cbl-mariner2.0 AS build WORKDIR /config RUN dotnet new tool-manifest RUN dotnet tool install Microsoft.DataApiBuilder RUN dotnet tool run dab -- init --database-type "mssql" --connection-string "@env('DATABASE_CONNECTION_STRING')" RUN dotnet tool run dab -- add Product --source "SalesLT.Product" --permissions "anonymous:read" FROM mcr.microsoft.com/azure-databases/data-api-builder COPY --from=build /config /App
Sestavte soubor Dockerfile jako úlohu Azure Container Registry pomocí
az acr build
.az acr build \ --registry $CONTAINER_REGISTRY_NAME \ --image adventureworkslt-dab:latest \ --image adventureworkslt-dab:{{.Run.ID}} \ --file Dockerfile \ .
Použijte
az acr show
k získání koncového bodu pro registr kontejneru a jeho uložení do proměnné s názvemCONTAINER_REGISTRY_LOGIN_SERVER
.CONTAINER_REGISTRY_LOGIN_SERVER=$( \ az acr show \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_REGISTRY_NAME \ --query "loginServer" \ --output "tsv" \ )
Tip
Výstup tohoto příkazu můžete kdykoli zkontrolovat.
echo $CONTAINER_REGISTRY_LOGIN_SERVER
Nasazení image kontejneru
Nakonec aktualizujte aplikaci kontejneru Azure pomocí nové vlastní image kontejneru a přihlašovacích údajů. Otestujte spuštěnou aplikaci a ověřte její připojení k databázi.
Nakonfigurujte aplikaci kontejneru tak, aby používala registr kontejneru pomocí
az containerapp registry set
.az containerapp registry set \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --server $CONTAINER_REGISTRY_LOGIN_SERVER \ --identity "system"
Použijte
az containerapp secret set
k vytvoření tajného kódu s názvemconn-string
Azure SQL připojovací řetězec.az containerapp secret set \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --secrets conn-string="$SQL_CONNECTION_STRING"
Důležité
Tato připojovací řetězec neobsahuje žádné uživatelské jméno ani hesla. Připojovací řetězec používá spravovanou identitu pro přístup k databázi Azure SQL. Díky tomu je bezpečné používat připojovací řetězec jako tajný klíč v hostiteli.
Aktualizujte aplikaci kontejneru pomocí nové vlastní image kontejneru pomocí
az containerapp update
příkazu . Nastavte proměnnouDATABASE_CONNECTION_STRING
prostředí na čtení z dříve vytvořenéhoconn-string
tajného kódu.az containerapp update \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --image "$CONTAINER_REGISTRY_LOGIN_SERVER/adventureworkslt-dab:latest" \ --set-env-vars DATABASE_CONNECTION_STRING=secretref:conn-string
Pomocí příkazu načtěte plně kvalifikovaný název domény nejnovější revize ve spuštěné aplikaci
az containerapp show
kontejneru. Uložte hodnotu do proměnné s názvemAPPLICATION_URL
.APPLICATION_URL=$( \ az containerapp show \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --query "properties.latestRevisionFqdn" \ --output "tsv" \ )
Tip
Výstup tohoto příkazu můžete kdykoli zkontrolovat.
echo $APPLICATION_URL
Přejděte na adresu URL a otestujte
Product
rozhraní REST API.echo "https://$APPLICATION_URL/api/Product"
Upozornění
Nasazení může trvat až minutu. Pokud se vám nezobrazuje úspěšná odpověď, počkejte a aktualizujte prohlížeč.
Vyčištění prostředků
Pokud už ukázkovou aplikaci nebo prostředky nepotřebujete, odeberte odpovídající nasazení a všechny prostředky.
az group delete \
--name $RESOURCE_GROUP_NAME