次の方法で共有


チュートリアル: Jenkins と Azure CLI を使用して Azure Spring Apps にアプリをデプロイする

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 サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

サービス インスタンスをプロビジョニングして Java Spring アプリケーションを起動する

サンプルの Microsoft サービス アプリケーションとして Piggy Metrics を 使用し、「 クイック スタート: Azure CLI を使用して Java Spring アプリケーションを起動して サービス インスタンスをプロビジョニングし、アプリケーションを設定する」の同じ手順に従います。 同じプロセスを既に完了している場合は、次のセクションに進むことができます。 それ以外の場合、以下に含まれるのは Azure CLI コマンドです。 詳細については、「 クイック スタート: Azure CLI を使用して Java Spring アプリケーションを起動 する」を参照してください。

ローカル コンピューターは、Jenkins ビルド サーバーと同じ前提条件を満たしている必要があります。 マイクロサービス アプリケーションをビルドしてデプロイするには、次のものがインストールされていることを確認します。

  1. Azure Spring Apps 拡張機能をインストールします。

    az extension add --name spring
    
  2. Azure Spring Apps サービスを含むリソース グループを作成します。

    az group create --location eastus --name <resource group name>
    
  3. Azure Spring Apps のインスタンスをプロビジョニングします。

    az spring create -n <service name> -g <resource group name>
    
  4. Piggy Metrics リポジトリを独自の GitHub アカウントにフォークします。 ローカル コンピューターで、 source-codeというディレクトリにリポジトリを複製します。

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. 構成サーバーを設定します。 GitHub id<>正しい値に置き換えてください。

    az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. プロジェクトをビルドします。

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. ゲートウェイ認証サービスアカウント サービスの 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>
    
  8. アプリケーションをデプロイします。

    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
    
  9. ゲートウェイにパブリック エンドポイントを割り当てます。

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. アプリケーションが実行されていることを確認できるように、ゲートウェイ アプリケーションにクエリを実行して URL を取得します。

    az spring app show --name gateway | grep url
    
  11. 前のコマンドで提供された URL に移動して PiggyMetrics アプリケーションを実行します。

Jenkins サーバーを準備する

このセクションでは、ビルドを実行するように Jenkins サーバーを準備します。これはテストに適しています。 ただし、セキュリティへの影響があるため、 Azure VM エージェント または Azure Container エージェント を使用して、ビルドを実行するために Azure でエージェントを起動する必要があります。

プラグインのインストール

  1. Jenkins サーバーにログインします。

  2. [ Jenkins の管理] を選択します。

  3. [ プラグインの管理] を選択します

  4. [ 使用可能] タブで、次のプラグインを選択します。

    これらのプラグインが一覧に表示されない場合は、[ インストール済み ] タブを確認して、既にインストールされているかどうかを確認します。

  5. プラグインをインストールするには、[ 今すぐダウンロード] を選択し、再起動後にインストールします

  6. Jenkins サーバーを再起動してインストールを完了します。

Jenkins 資格情報ストアに Azure サービス プリンシパルの資格情報を追加する

  1. 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"
    }
    
  2. Jenkins ダッシュボードで、 資格情報>System を選択します。 次に、 グローバル資格情報 (無制限) を選択します。

  3. [Add Credentials](資格情報の追加) を選択します。

  4. 種類として Microsoft Azure サービス プリンシパルを選択します。

  5. 次のフィールドの値を指定します。

    • サブスクリプション 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 拡張機能を実行するアクセス許可があることを確認します。

  1. SSH 経由で Jenkins コントローラーに接続します。

  2. Maven をインストールします。

    sudo apt-get install maven
    
  3. az version」と入力して、Azure CLI がインストールされていることを確認します。 Azure CLI がインストールされていない場合は、「 Azure CLI のインストール」を参照してください。

  4. jenkins ユーザーに切り替えます。

    sudo su jenkins
    
  5. Spring 拡張機能をインストールします。

    az extension add --name spring
    

Jenkinsfile を作成する

  1. 独自のリポジトリ ( https://github.com/your_github_id/piggymetrics ) で、ルートに Jenkinsfile を作成します。

  2. 次のようにファイルを更新します。 <リソース グループ名><サービス名>の値を必ず置き換えてください。 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'
            }
          }
        }
    
  3. 変更を保存してコミットします。

ジョブを作成する

  1. Jenkins ダッシュボードで、[ 新しい項目] を選択します。

  2. ジョブの名前 Deploy-PiggyMetrics を指定し、[パイプライン] を選択 します。 [OK] をクリックします。

  3. [ パイプライン ] タブを選択します。

  4. [定義] で、SCM から [パイプライン スクリプト] を選択します。

  5. SCM の場合は、Git を選択します

  6. フォークしたリポジトリの GitHub URL を入力します: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git

  7. ブランチ指定子 ("any" の場合は黒) の場合は、/Azure を選択します。

  8. [スクリプト パス] で、[Jenkinsfile] を選択します。

  9. [保存] を選びます。

ジョブを検証して実行する

ジョブを実行する前に、ログイン入力ボックスのテキストを編集して ログイン ID を入力します

  1. リポジトリで、index.html/gateway/src/main/resources/static/を開きます。

  2. enter your loginを検索し、そのテキストをenter login IDに更新します。

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. 変更を保存してコミットします。

  4. Jenkins でジョブを手動で実行します。 Jenkins ダッシュボードで、ジョブ Deploy-PiggyMetrics を選択し、[ 今すぐビルド] を選択します。

ジョブが完了したら、 gateway アプリケーションのパブリック IP に移動し、アプリケーションが更新されたことを確認します。

更新されたピギーメトリクス

リソースをクリーンアップする

不要になったら、この記事で作成したリソースを削除します。

az group delete -y --no-wait -n <resource group name>

次のステップ