Ověřování nasazení do služby Azure App Service
K dokončení cvičení v tomto modulu jste byli přihlášení k prostředí sandboxu. Vzhledem k tomu, že je toto prostředí interaktivní, jsou všechna vaše nasazení ověřena pomocí přihlašovacích údajů, které jste použili při inicializaci sandboxu. Pokud ale automatizujete proces sestavení, vaše nasazení toto interaktivní prostředí nebudou používat. Ve scénáři automatizace budete muset projekt nakonfigurovat tak, aby používal jednu z podporovaných metod ověřování.
V této lekci se dozvíte, jak může vaše společnost nakonfigurovat Maven tak, aby používala ověřování Azure.
Ověřování webové aplikace
Azure nabízí flexibilitu při rozhodování, jak chcete aplikaci ověřit. Možnost, kterou zvolíte, závisí na prostředí sestavení vaší společnosti. Tady jsou uvedené tři možnosti ověření kódu aplikace pomocí Mavenu v pořadí složitosti (od nejmenšího po většinu):
Ověřte se pomocí Azure CLI nebo použijte Cloud Shell na webu Azure Portal.
Vytvořte instanční objekt Azure, vytvořte soubor JSON s přihlašovacími údaji instančního objektu a upravte soubor
pom.xml
projektu.Vytvořte instanční objekt Azure, přidejte přihlašovací údaje instančního objektu do souboru
settings.xml
Mavenu a upravte souborpom.xml
projektu tak, aby používal nastavení Mavenu.
Společnost Microsoft doporučuje třetí možnost, protože poskytuje nejspolehlivější, flexibilní a konzistentní přístup k ověřování. V reálném prostředí můžou stávající webové aplikace Java vaší společnosti běžet na místních serverech, které nemají nainstalované nástroje Azure CLI. S ohledem na to byste pravděpodobně implementovali doporučení přidat ověřování pomocí instančního objektu a souboru settings.xml
Mavenu. V tomto cvičení však sandbox nemá dostatečná oprávnění k vytváření service principal.
Ověřování pomocí Azure CLI
Nejjednodušší způsob, jak ověřit Maven, je přihlásit se pomocí Azure CLI. Modul plug-in Maven pro Azure App Service pak může aplikaci nasadit pomocí vašich přihlašovacích údajů bez nutnosti další konfigurace.
Pokud používáte Azure Cloud Shell, jako jste byli při provádění cvičení s sandboxem Microsoft Learn v tomto modulu, jste ve výchozím nastavení přihlášeni k Azure; Nemusíte spouštět žádné další příkazy. Pokud ale používáte Azure CLI z samostatného počítače, budete se muset přihlásit pomocí příkazu az login
.
Ověřování pomocí služebního principálu
Druhá metoda ověřování webové aplikace zahrnuje vytvoření instančního objektu Azure a uložení přihlašovacích údajů instančního objektu do souboru, na který budete odkazovat z nastavení projektu.
K vytvoření instančního objektu Azure pomocí Azure CLI použijte následující postup.
Spuštěním následujícího příkazu z Azure CLI vytvořte instanční objekt Azure:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Kde
https://mywebapp-1234567890.azurewebsites.net/
je adresa URL vaší webové aplikace.Tento příkaz vrátí odpověď s objektem JSON, který se podobá následujícímu příkladu:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Upravte soubor
pom.xml
webové aplikace tak, aby používal informace ve výstupu JSON.Otevřete soubor
pom.xml
pomocí editoru kódu:cd ~/MyWebApp code pom.xml
Vyhledejte oddíl
<configuration>
proazure-webapp-maven-plugin
.Za řádek obsahující prvek
<region>
přidejte následující kód XML a použijte informace ve výstupu JSON:<auth> <type>service_principal</type> <client>value-of-appId</client> <tenant>value-of-tenant</tenant> <key>value-of-password</key> <environment>azure</environment> </auth>
Oddíl
azure-webapp-maven-plugin
by nyní měl vypadat podobně jako v následujícím příkladu:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>v2</schemaVersion> <resourceGroup>MyWebApp-1714654093047-rg</resourceGroup> <appName>MyWebApp-1714654093047</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>abcdefghijklmnopqrstuvwxyz1234567890</key> <environment>azure</environment> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Uložte změny zadáním Ctrl+S.
Ukončete editor kódu zadáním Ctrl+Q.
Pomocí Mavenu sestavte a nasaďte webovou aplikaci do Azure App Service:
mvn azure-webapp:deploy
Maven zobrazí řadu zpráv sestavení a konečná zpráva by měla indikovat úspěšné nasazení do Azure:
[INFO] Scanning for projects... [INFO] [INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: 74d82376-184f-400e-a08e-27cd522d7559 [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.052 s [INFO] Finished at: 2024-05-02T13:10:54Z [INFO] ------------------------------------------------------------------------
Řádek
Auth type: SERVICE_PRINCIPAL
v odpovědi označuje, že se služební principal použil k publikování vaší webové aplikace do Azure.
Ověřování pomocí souboru Mavenu settings.xml
Třetí metodou ověřování webové aplikace je vytvoření instančního objektu Azure, vytvoření souboru settings.xml
Mavenu, který obsahuje přihlašovací údaje instančního objektu, a úpravou souboru pom.xml
projektu tak, aby používal nastavení Mavenu.
Postup vytvoření instančního objektu Azure pomocí Azure CLI je stejný jako v předchozí části této lekce.
Spuštěním následujícího příkazu z Azure CLI vytvořte instanční objekt Azure:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Kde
https://mywebapp-1234567890.azurewebsites.net/
je adresa URL vaší webové aplikace.Tento příkaz vrátí odpověď s objektem JSON, který se podobá následujícímu příkladu:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Vytvořte uživatelskou verzi souboru
settings.xml
, který má Maven používat.Vytvořte nový soubor XML pro nastavení Mavenu pomocí editoru kódu:
code ~/.m2/settings.xml
Do souboru vložte následující kód XML:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>azure-auth</id> <configuration> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>pppppppp-pppp-pppp-pppp-pppppppppppp</key> </configuration> </server> </servers> </settings>
Kde:
Parametr Popis client
Určuje hodnotu appId
hlavního objektu služby.key
Určuje hodnotu password
služebního hlavního objektu.tenant
Určuje hodnotu tenant
instančního objektu.Uložte změny zadáním Ctrl+S.
Ukončete editor kódu zadáním Ctrl+Q.
Upravte soubor
pom.xml
webové aplikace tak, aby odkazoval na soubor autentizace.Otevřete soubor
pom.xml
pomocí editoru kódu:cd ~/MyWebApp code pom.xml
Vyhledejte oddíl
<configuration>
proazure-webapp-maven-plugin
.Za řádek obsahující prvek
<region>
přidejte následující kód XML:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
Oddíl
azure-webapp-maven-plugin
by teď měl vypadat podobně jako v následujícím příkladu:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>maven-publish</resourceGroup> <appName>MyWebApp-1234567890</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Uložte změny zadáním Ctrl+S.
Ukončete editor kódu zadáním Ctrl+Q.
Pomocí Mavenu sestavte a nasaďte webovou aplikaci do Azure App Service:
mvn azure-webapp:deploy
Maven zobrazí řadu zpráv sestavení a konečná zpráva by měla indikovat úspěšné nasazení do Azure:
[INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 53.611 s [INFO] Finished at: 2024-05-02T13:53:31Z [INFO] ------------------------------------------------------------------------
Řádek
Auth type: SERVICE_PRINCIPAL
v odpovědi značí, že vaše přihlašovací údaje instančního objektu se použily k publikování vaší webové aplikace do Azure.