注
Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスには新しい名前が付けられますが、スクリーンショット、ビデオ、図などのアセットの更新に取り組んでいる間、しばらくの間、古い名前が表示されます。
Azure Spring Apps は、組み込みのサービス検出と構成管理を備えたフル マネージドマイクロサービス開発です。 このサービスを使用すると、Spring Boot ベースのマイクロサービス アプリケーションを Azure に簡単にデプロイできます。 このチュートリアルでは、Jenkins で Azure CLI を使用して、Azure Spring Apps の継続的インテグレーションと配信 (CI/CD) を自動化する方法について説明します。
このチュートリアルでは、以下のタスクを完了します。
- サービス インスタンスをプロビジョニングして Java Spring アプリケーションを起動する
- Jenkins サーバーを準備する
- Jenkins パイプラインで Azure CLI を使用してマイクロサービス アプリケーションを構築してデプロイする
[前提条件]
- Azure サブスクリプション: Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Jenkins: Linux VM に Jenkins をインストールする
- GitHub アカウント: GitHub アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
サービス インスタンスをプロビジョニングして Java Spring アプリケーションを起動する
サンプルの Microsoft サービス アプリケーションとして Piggy Metrics を 使用し、「 クイック スタート: Azure CLI を使用して Java Spring アプリケーションを起動して サービス インスタンスをプロビジョニングし、アプリケーションを設定する」の同じ手順に従います。 同じプロセスを既に完了している場合は、次のセクションに進むことができます。 それ以外の場合、以下に含まれるのは Azure CLI コマンドです。 詳細については、「 クイック スタート: Azure CLI を使用して Java Spring アプリケーションを起動 する」を参照してください。
ローカル コンピューターは、Jenkins ビルド サーバーと同じ前提条件を満たしている必要があります。 マイクロサービス アプリケーションをビルドしてデプロイするには、次のものがインストールされていることを確認します。
- Git
- JDK 8
- Maven 3.0 以降
- Azure CLI がインストールされているバージョン 2.0.67 以降
Azure Spring Apps 拡張機能をインストールします。
az extension add --name springAzure Spring Apps サービスを含むリソース グループを作成します。
az group create --location eastus --name <resource group name>Azure Spring Apps のインスタンスをプロビジョニングします。
az spring create -n <service name> -g <resource group name>Piggy Metrics リポジトリを独自の GitHub アカウントにフォークします。 ローカル コンピューターで、
source-codeというディレクトリにリポジトリを複製します。mkdir source-code git clone https://github.com/<your GitHub id>/piggymetrics構成サーバーを設定します。 GitHub id<>正しい値に置き換えてください。
az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label configプロジェクトをビルドします。
cd piggymetrics mvn clean package -D skipTestsゲートウェイ、認証サービス、アカウント サービスの 3 つのマイクロサービスを作成します。
az spring app create --n gateway -s <service name> -g <resource group name> az spring app create --n auth-service -s <service name> -g <resource group name> az spring app create --n account-service -s <service name> -g <resource group name>アプリケーションをデプロイします。
az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jarゲートウェイにパブリック エンドポイントを割り当てます。
az spring app update -n gateway -s <service name> -g <resource group name> --is-public trueアプリケーションが実行されていることを確認できるように、ゲートウェイ アプリケーションにクエリを実行して URL を取得します。
az spring app show --name gateway | grep url前のコマンドで提供された URL に移動して PiggyMetrics アプリケーションを実行します。
Jenkins サーバーを準備する
このセクションでは、ビルドを実行するように Jenkins サーバーを準備します。これはテストに適しています。 ただし、セキュリティへの影響があるため、 Azure VM エージェント または Azure Container エージェント を使用して、ビルドを実行するために Azure でエージェントを起動する必要があります。
プラグインのインストール
Jenkins サーバーにログインします。
[ Jenkins の管理] を選択します。
[ プラグインの管理] を選択します。
[ 使用可能] タブで、次のプラグインを選択します。
これらのプラグインが一覧に表示されない場合は、[ インストール済み ] タブを確認して、既にインストールされているかどうかを確認します。
プラグインをインストールするには、[ 今すぐダウンロード] を選択し、再起動後にインストールします。
Jenkins サーバーを再起動してインストールを完了します。
Jenkins 資格情報ストアに Azure サービス プリンシパルの資格情報を追加する
Azure にデプロイするには、Azure サービス プリンシパルが必要です。 詳細については、「Azure App Service へのデプロイ」チュートリアルの「 サービス プリンシパルの作成 」セクションを参照してください。
az ad sp create-for-rbacからの出力は次のようになります。{ "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "displayName": "xxxxxxxjenkinssp", "name": "http://xxxxxxxjenkinssp", "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx" }Jenkins ダッシュボードで、 資格情報>System を選択します。 次に、 グローバル資格情報 (無制限) を選択します。
[Add Credentials](資格情報の追加) を選択します。
種類として Microsoft Azure サービス プリンシパルを選択します。
次のフィールドの値を指定します。
- サブスクリプション ID: Azure サブスクリプション ID
- クライアント ID: サービスプリンシパルのアプリID
- クライアント シークレット: サービス プリンシパルのパスワード
- テナント ID: Microsoft アカウントのテナント ID
- Azure 環境: 環境に適した値を選択します。 たとえば、Azure Global のために Azure を使用する
-
ID:
azure_service_principalとして設定します。 この ID は、この記事の後の手順で使用します - 説明: この値は省略可能ですが、ドキュメント/メンテナンスの観点から推奨されます。
Maven と Azure CLI Spring 拡張機能をインストールする
サンプル パイプラインでは Maven を使用してビルドし、Azure CLI を使用してサービス インスタンスにデプロイします。 Jenkins がインストールされると、 jenkins という名前の管理者アカウントが作成されます。 ユーザー jenkins に spring 拡張機能を実行するアクセス許可があることを確認します。
SSH 経由で Jenkins コントローラーに接続します。
Maven をインストールします。
sudo apt-get install maven「
az version」と入力して、Azure CLI がインストールされていることを確認します。 Azure CLI がインストールされていない場合は、「 Azure CLI のインストール」を参照してください。jenkinsユーザーに切り替えます。sudo su jenkinsSpring 拡張機能をインストールします。
az extension add --name spring
Jenkinsfile を作成する
独自のリポジトリ (
https://github.com/your_github_id/piggymetrics) で、ルートに Jenkinsfile を作成します。次のようにファイルを更新します。 <リソース グループ名>と<サービス名>の値を必ず置き換えてください。 Jenkins で資格情報を 追加するときに別の値を使用する場合は、azure_service_principalを適切な ID に置き換えます。
node { stage('init') { checkout scm } stage('build') { sh 'mvn clean package' } stage('deploy') { withCredentials([azureServicePrincipal('azure_service_principal')]) { // Log in to Azure sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values sh 'az config set defaults.group=<resource group name>' sh 'az config set defaults.spring=<service name>' // Deploy applications sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar' sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar' sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar' sh 'az logout' } } }変更を保存してコミットします。
ジョブを作成する
Jenkins ダッシュボードで、[ 新しい項目] を選択します。
ジョブの名前 Deploy-PiggyMetrics を指定し、[パイプライン] を選択 します。 [OK] をクリックします。
[ パイプライン ] タブを選択します。
[定義] で、SCM から [パイプライン スクリプト] を選択します。
SCM の場合は、Git を選択します。
フォークしたリポジトリの GitHub URL を入力します:
https://github.com/<your GitHub id>/piggymetrics.git。ブランチ指定子 ("any" の場合は黒) の場合は、/Azure を選択します。
[スクリプト パス] で、[Jenkinsfile] を選択します。
[保存] を選びます。
ジョブを検証して実行する
ジョブを実行する前に、ログイン入力ボックスのテキストを編集して ログイン ID を入力します。
リポジトリで、
index.htmlで/gateway/src/main/resources/static/を開きます。enter your loginを検索し、そのテキストをenter login IDに更新します。<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>変更を保存してコミットします。
Jenkins でジョブを手動で実行します。 Jenkins ダッシュボードで、ジョブ
Deploy-PiggyMetricsを選択し、[ 今すぐビルド] を選択します。
ジョブが完了したら、 gateway アプリケーションのパブリック IP に移動し、アプリケーションが更新されたことを確認します。
リソースをクリーンアップする
不要になったら、この記事で作成したリソースを削除します。
az group delete -y --no-wait -n <resource group name>