Kurz: Nasazení aplikace Spring do Azure Spring Apps s bez heslem připojení 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 ho ještě nemáte, vytvořte si před zahájením bezplatný účet .
- Vyžaduje se 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 Git
- 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í Azure Cloud Shellu pomocí oblíbeného klientského nástroje mysql.exe příkazového řádku. Případně můžete použít
mysql
příkazový řádek v místním prostředí. - Ovladač ODBC 18 pro SQL Server , pokud se rozhodnete spustit Službu Azure SQL Database.
Příprava pracovního prostředí
Nejprve pomocí následujících příkazů nastavte několik proměnných 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. Standardně můžete použíteastus
, ale doporučujeme nakonfigurovat oblast blíže k místu, kde se nacházíte. Ú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 nebo admin-password
parametry nezadáteadmin-user
, 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 do databáze Azure
Nejprve nainstalujte rozšíření Service Připojení or 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 najdete v tématu Nastavení ověřování Microsoft Entra pro flexibilní server Azure Database for MySQL.
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í Správa istrator nebo privilegovanou roli Správa istrator 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 Oprávnění ověřování active directory.
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 Připojení or 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 pojmenované
$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í databáze$AZ_DATABASE_NAME
.Přidejte do aplikace
$AZ_SPRING_APPS_APP_NAME
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ů service Připojení or 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 úvodní sady Spring Cloud Azure.
Poznámka:
Další informace o správě verzí knihovny Azure Spring Cloud pomocí kusovníku najdete v části Začínáme s příručkou 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
Pomocí následujícího příkazu nasaďte cílový soubor/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 -
Testová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