Návod: Nasazení aplikace Spring do služby Azure Spring Apps s bezheslovým připojením k databázi Azure
V tomto článku se dozvíte, jak používat bez hesla připojení k databázím Azure v aplikacích Spring Boot nasazených v Azure Spring Apps.
V tomto kurzu provedete následující úlohy pomocí webu Azure Portal nebo Azure CLI. Obě metody jsou vysvětleny v následujících postupech.
- Zřízení instance Azure Spring Apps
- Sestavte a nasaďte aplikace do Azure Spring Apps.
- Spouštění aplikací připojených k databázím Azure pomocí spravované identity
Poznámka
Tento kurz nefunguje pro R2DBC.
Požadavky
- Předplatné Azure. Pokud jej ještě nemáte, vytvořte si bezplatný účet .
- Azure CLI 2.45.0 nebo vyšší.
- Rozšíření Azure Spring Apps Rozšíření můžete nainstalovat pomocí příkazu:
az extension add --name spring
. - Java Development Kit (JDK), verze 8, 11 nebo 17.
- Klient Gitu.
- cURL nebo podobný nástroj HTTP pro testování funkčnosti.
- Klient příkazového řádku MySQL, pokud se rozhodnete spustit Službu Azure Database for MySQL. Ke svému serveru se můžete připojit pomocí nástroje Azure Cloud Shell, což je oblíbený klientský nástroj mysql.exe pro příkazový řádek. Alternativně můžete použít příkazový řádek
mysql
v místním prostředí. - ovladač ODBC 18 pro SQL Server, pokud se rozhodnete použít Azure SQL Database.
Příprava pracovního prostředí
Nejprve pomocí následujících příkazů nastavte některé proměnné prostředí:
export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
Zástupné symboly nahraďte následujícími hodnotami, které se používají v tomto článku:
-
<YOUR_DATABASE_SERVER_NAME>
: Název vašeho serveru Azure Database, který by měl být jedinečný v rámci Azure. -
<YOUR_AZURE_REGION>
: Oblast Azure, kterou chcete použít. Ve výchozím nastavení můžete použíteastus
, ale doporučujeme nakonfigurovat oblast blíže k umístění, kde žijete. Úplný seznam dostupných oblastí můžete zobrazit pomocíaz account list-locations
. -
<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
: Název instance Azure Spring Apps. Název musí mít délku 4 až 32 znaků a může obsahovat jenom malá písmena, číslice a pomlčky. První znak názvu služby musí být písmeno a poslední znak musí být písmeno nebo číslo. -
<AZ_DB_ADMIN_USERNAME>
: Uživatelské jméno správce vašeho databázového serveru Azure. -
<AZ_DB_ADMIN_PASSWORD>
: Heslo správce vašeho databázového serveru Azure. -
<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
: Název serveru spravované identity přiřazeného uživatelem, který by měl být jedinečný v rámci Azure.
Zřízení instance Azure Spring Apps
Pomocí následujících kroků zřiďte instanci Azure Spring Apps.
Pomocí následujícího příkazu aktualizujte Azure CLI pomocí rozšíření Azure Spring Apps:
az extension update --name spring
Přihlaste se k Azure CLI a zvolte své aktivní předplatné pomocí následujících příkazů:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>
Pomocí následujících příkazů vytvořte skupinu prostředků, která bude obsahovat vaši službu Azure Spring Apps a instanci služby Azure Spring Apps:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Vytvoření instance databáze Azure
Ke zřízení instance služby Azure Database použijte následující postup.
Pomocí následujícího příkazu vytvořte server Azure Database for MySQL:
az mysql flexible-server create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_DATABASE_SERVER_NAME \ --location $AZ_LOCATION \ --admin-user $AZ_DB_ADMIN_USERNAME \ --admin-password $AZ_DB_ADMIN_PASSWORD \ --yes
Poznámka
Pokud nezadáte parametry admin-user
nebo admin-password
, systém ve výchozím nastavení vygeneruje výchozího uživatele správce nebo náhodné heslo správce.
Pomocí následujícího příkazu vytvořte novou databázi:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Vytvoření aplikace s přiřazeným veřejným koncovým bodem
K vytvoření aplikace použijte následující příkaz.
az spring app create \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--name $AZ_SPRING_APPS_APP_NAME \
--runtime-version=Java_17
--assign-endpoint true
Připojení Azure Spring Apps k databázi Azure
Nejprve nainstalujte rozšíření Service Connector bez hesla pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Potom pomocí následujícího příkazu vytvořte spravovanou identitu přiřazenou uživatelem pro ověřování Microsoft Entra. Další informace viz Nastavení ověřování Microsoft Entra pro Azure Database for MySQL - Flexible Server.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Důležitý
Po vytvoření identity přiřazené uživatelem požádejte globálního správce nebo správce privilegovaných rolí udělit následující oprávnění pro tuto identitu: User.Read.All
, GroupMember.Read.All
a Application.Read.ALL
. Další informace najdete v části
Dále pomocí následujícího příkazu vytvořte připojení bez hesla k databázi.
az spring connection create mysql-flexible \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--app $AZ_SPRING_APPS_APP_NAME \
--target-resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--database $AZ_DATABASE_NAME \
--system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID
Tento příkaz konektoru služby provede na pozadí následující úlohy:
Povolte spravovanou identitu přiřazenou systémem pro aplikaci
$AZ_SPRING_APPS_APP_NAME
hostované službou Azure Spring Apps.Nastavte správce Microsoft Entra na aktuálně přihlášeného uživatele.
Přidejte uživatele databáze s názvem
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME
pro spravovanou identitu vytvořenou v kroku 1 a udělte tomuto uživateli všechna oprávnění$AZ_DATABASE_NAME
databáze.Do aplikace
$AZ_SPRING_APPS_APP_NAME
přidejte dvě konfigurace:spring.datasource.url
aspring.datasource.username
.Poznámka
Pokud se zobrazí chybová zpráva
The subscription is not registered to use Microsoft.ServiceLinker
, spusťte příkazaz provider register --namespace Microsoft.ServiceLinker
pro registraci poskytovatele prostředků konektoru služeb a spusťte příkaz připojení znovu.
Sestavení a nasazení aplikace
Následující kroky popisují, jak stáhnout, nakonfigurovat, sestavit a nasadit ukázkovou aplikaci.
Pomocí následujícího příkazu naklonujte úložiště ukázkového kódu:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
Do souboru pom.xml přidejte následující závislost:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>
Tato závislost přidává podporu startéru Spring Cloud Azure.
Poznámka
Další informace o tom, jak spravovat verze knihoven Spring Cloud Azure pomocí BOM, najdete v části Začínáme příručky pro vývojáře Spring Cloud Azure.
Pomocí následujícího příkazu aktualizujte soubor application.properties:
cat << EOF > passwordless-sample/src/main/resources/application.properties logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=always EOF
K sestavení projektu pomocí Mavenu použijte následující příkazy:
cd passwordless-sample ./mvnw clean package -DskipTests
Použijte následující příkaz k nasazení souboru target/demo-0.0.1-SNAPSHOT.jar pro aplikaci:
az spring app deploy \ --name $AZ_SPRING_APPS_APP_NAME \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --artifact-path target/demo-0.0.1-SNAPSHOT.jar
Pomocí následujícího příkazu odešlete dotaz na stav aplikace po nasazení:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output table
Měl by se zobrazit výstup podobný následujícímu příkladu.
Name Location ResourceGroup Production Deployment Public Url Provisioning Status CPU Memory Running Instance Registered Instance Persistent Storage ----------------- ---------- --------------- ----------------------- --------------------------------------------------- --------------------- ----- -------- ------------------ --------------------- -------------------- <app name> eastus <resource group> default Succeeded 1 2 1/1 0/1 -
Otestování aplikace
K otestování aplikace můžete použít cURL. Nejprve vytvořte novou položku "todo" v databázi pomocí následujícího příkazu:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Tento příkaz vrátí vytvořenou položku, jak je znázorněno v následujícím příkladu:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Potom načtěte data pomocí následujícího požadavku cURL:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Tento příkaz vrátí seznam položek "todo", včetně položky, kterou jste vytvořili, jak je znázorněno v následujícím příkladu:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Vyčištění prostředků
Pokud chcete vyčistit všechny prostředky použité v tomto kurzu, odstraňte skupinu prostředků pomocí následujícího příkazu:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes
Další kroky
- Dokumentace Spring Cloud Azure