Oktatóanyag: Spring-alkalmazás üzembe helyezése az Azure Spring Appsben jelszó nélküli kapcsolattal egy Azure-adatbázishoz
Ez a cikk bemutatja, hogyan használhat jelszó nélküli kapcsolatokat az Azure-adatbázisokhoz az Azure Spring Appsben üzembe helyezett Spring Boot-alkalmazásokban.
Ebben az oktatóanyagban az alábbi feladatokat hajtja végre az Azure Portal vagy az Azure CLI használatával. Mindkét módszert az alábbi eljárások ismertetik.
- Az Azure Spring Apps egy példányának kiépítése.
- Alkalmazások létrehozása és üzembe helyezése az Azure Spring Appsben.
- Azure-adatbázisokhoz csatlakoztatott alkalmazások futtatása felügyelt identitással.
Megjegyzés:
Ez az oktatóanyag nem működik az R2DBC-ben.
Előfeltételek
- Azure-előfizetés. Ha még nem rendelkezik ilyen fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .
- Az Azure CLI 2.45.0-s vagy újabb verziója szükséges.
- Az Azure Spring Apps bővítmény. A bővítményt a következő paranccsal telepítheti:
az extension add --name spring
. - Java Development Kit (JDK), 8-os, 11-es vagy 17-es verzió.
- Egy Git-ügyfél.
- cURL vagy hasonló HTTP-segédprogram a funkciók teszteléséhez.
- MySQL parancssori ügyfél, ha az Azure Database for MySQL futtatását választja. A kiszolgálóhoz az Azure Cloud Shell használatával csatlakozhat egy népszerű ügyféleszköz, a mysql.exe parancssori eszköz használatával. Másik lehetőségként használhatja a parancssort
mysql
a helyi környezetben. - ODBC Driver 18 for SQL Server , ha az Azure SQL Database futtatása mellett dönt.
A munkakörnyezet előkészítése
Először állítsa be a környezeti változókat az alábbi parancsokkal:
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>
A helyőrzőket írja felül a következő értékekkel, amelyeket a cikk teljes további részében használni fogunk:
<YOUR_DATABASE_SERVER_NAME>
: Az Azure Database-kiszolgáló neve, amelynek egyedinek kell lennie az Azure-ban.<YOUR_AZURE_REGION>
: A használni kívánt Azure-régió. Használhatja az alapértelmezetteastus
értéket, de ajánlott az Ön lakóhelyéhez közelebbi régiót konfigurálni. A rendelkezésre álló régiók teljes listáját a használatávalaz account list-locations
tekintheti meg.<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
: Az Azure Spring Apps-példány neve. A névnek 4 és 32 karakter közötti hosszúságúnak kell lennie, és csak kisbetűket, számokat és kötőjeleket tartalmazhat. A szolgáltatásnév első karakterének betűnek kell lennie, az utolsó karakternek pedig betűnek vagy számnak kell lennie.<AZ_DB_ADMIN_USERNAME>
: Az Azure-adatbáziskiszolgáló rendszergazdai felhasználóneve.<AZ_DB_ADMIN_PASSWORD>
: Az Azure-adatbáziskiszolgáló rendszergazdai jelszava.<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
: A felhasználó által hozzárendelt felügyelt identitáskiszolgáló neve, amelynek egyedinek kell lennie az Azure-ban.
Az Azure Spring Apps egy példányának kiépítése
Az Azure Spring Apps egy példányának kiépítéséhez kövesse az alábbi lépéseket.
Frissítse az Azure CLI-t az Azure Spring Apps-bővítménysel az alábbi paranccsal:
az extension update --name spring
Jelentkezzen be az Azure CLI-be, és válassza ki aktív előfizetését az alábbi parancsokkal:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>
Az alábbi parancsokkal hozzon létre egy erőforráscsoportot az Azure Spring Apps szolgáltatás és az Azure Spring Apps szolgáltatás egy példányának létrehozásához:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Azure-adatbázispéldány létrehozása
Azure Database-példány kiépítéséhez kövesse az alábbi lépéseket.
Hozzon létre egy Azure Database for MySQL-kiszolgálót az alábbi paranccsal:
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
Megjegyzés:
Ha nem ad meg admin-user
vagy admin-password
paramétereket, a rendszer alapértelmezés szerint létrehoz egy alapértelmezett rendszergazdai felhasználót vagy egy véletlenszerű rendszergazdai jelszót.
Hozzon létre egy új adatbázist a következő paranccsal:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Alkalmazás létrehozása hozzárendelt nyilvános végponttal
Az alkalmazás létrehozásához használja az alábbi parancsot.
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
Az Azure Spring Apps Csatlakozás az Azure-adatbázisba
Először telepítse a Service Csatlakozás or jelszó nélküli bővítményt az Azure CLI-hez:
az extension add --name serviceconnector-passwordless --upgrade
Ezután a következő paranccsal hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a Microsoft Entra-hitelesítéshez. További információ: Microsoft Entra-hitelesítés beállítása rugalmas Azure Database for MySQL-kiszolgálóhoz.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Fontos
A felhasználó által hozzárendelt identitás létrehozása után kérje meg a globális Rendszergazda istratort vagy a Privileged Role Rendszergazda istratort, hogy adja meg az alábbi engedélyeket ehhez az identitáshoz: User.Read.All
, GroupMember.Read.All
és Application.Read.ALL
. További információ: Az Active Directory-hitelesítés Engedélyek szakasza.
Ezután az alábbi paranccsal hozzon létre jelszó nélküli kapcsolatot az adatbázissal.
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
Ez a Szolgáltatás Csatlakozás or parancs a következő feladatokat hajtja végre a háttérben:
Engedélyezze a rendszer által hozzárendelt felügyelt identitást az Azure Spring Apps által üzemeltetett alkalmazáshoz
$AZ_SPRING_APPS_APP_NAME
.Állítsa a Microsoft Entra rendszergazdát az aktuális bejelentkezett felhasználóra.
Adjon hozzá egy, az 1. lépésben létrehozott felügyelt identitáshoz elnevezett
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME
adatbázis-felhasználót, és adja meg az adatbázis$AZ_DATABASE_NAME
összes jogosultságát ennek a felhasználónak.Adjon hozzá két konfigurációt az alkalmazáshoz
$AZ_SPRING_APPS_APP_NAME
:spring.datasource.url
ésspring.datasource.username
.Megjegyzés:
Ha megjelenik a hibaüzenet
The subscription is not registered to use Microsoft.ServiceLinker
, futtassa a parancsotaz provider register --namespace Microsoft.ServiceLinker
a Szolgáltatás Csatlakozás or erőforrás-szolgáltató regisztrálásához, majd futtassa újra a kapcsolati parancsot.
Az alkalmazás létrehozása és üzembe helyezése
Az alábbi lépések a mintaalkalmazás letöltését, konfigurálását, összeállítását és üzembe helyezését ismertetik.
A mintakódtár klónozásához használja a következő parancsot:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
Adja hozzá a következő függőséget a pom.xml fájlhoz :
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>
Ez a függőség támogatja a Spring Cloud Azure startert.
Megjegyzés:
A Spring Cloud Azure-kódtár verzióinak anyagjegyzék (BOM) használatával történő kezelésével kapcsolatos további információkért tekintse meg a Spring Cloud Azure fejlesztői útmutatójának Első lépések szakaszát.
Az application.properties fájl frissítéséhez használja a következő parancsot :
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
A projekt a Maven használatával történő létrehozásához használja az alábbi parancsokat:
cd passwordless-sample ./mvnw clean package -DskipTests
A következő paranccsal helyezze üzembe a target/demo-0.0.1-SNAPSHOT.jar fájlt az alkalmazáshoz:
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
Az alkalmazás állapotának lekérdezése az üzembe helyezés után az alábbi paranccsal:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output table
Az alábbi példához hasonló kimenetnek kell megjelennie.
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 -
Az alkalmazás tesztelése
Az alkalmazást tesztelheti a cURL használatával. Először hozzon létre egy új "teendő" elemet az adatbázisban a következő paranccsal:
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
Ez a parancs a létrehozott elemet adja vissza az alábbi példában látható módon:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Ezután kérje le az adatokat a következő cURL-kéréssel:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Ez a parancs a "teendő" elemek listáját adja vissza, beleértve a létrehozott elemet is, ahogyan az a következő példában látható:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Clean up resources
Az oktatóanyag során használt összes erőforrás törléséhez törölje az erőforráscsoportot az alábbi paranccsal:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes