チュートリアル:CI/CD を使用して Service Fabric クラスターへコンテナー アプリケーションをデプロイする
このチュートリアルはシリーズの第 2 部です。Visual Studio と Azure DevOps を使用して、Azure Service Fabric コンテナー アプリケーションの継続的インテグレーションと継続的配置を設定する方法について説明します。 既存の Service Fabric アプリケーションが必要で、「Windows コンテナー内の .NET アプリケーションを Azure Service Fabric にデプロイする」で作成されたアプリケーションを例として使用します。
シリーズの第 2 部で学習する内容は次のとおりです。
- プロジェクトにソース管理を追加する
- Visual Studio Team Explorer でビルド定義を作成する
- Visual Studio Team Explorer でリリース定義を作成する
- アプリケーションを自動的にデプロイおよびアップグレードする
前提条件
このチュートリアルを開始する前に
- Azure にクラスターを用意する、またはこのチュートリアルを参照して作成する
- コンテナー化されたアプリケーションをクラスターにデプロイする
発行プロファイルの準備
コンテナー アプリケーションをデプロイできたので、継続的インテグレーションを設定する準備が整いました。 まず、Azure DevOps 内で実行されるデプロイ プロセスで使用する発行プロファイルを、アプリケーション内に準備します。 発行プロファイルは、あらかじめ作成したクラスターを対象とするように構成する必要があります。 Visual Studio を起動し、既存の Service Fabric アプリケーション プロジェクトを開きます。 ソリューション エクスプローラーで、プロジェクトを右クリックし、 [発行] を選択します。
継続的インテグレーション ワークフローに使用するアプリケーション プロジェクト内で目標一覧表 (たとえば Cloud) を選択します。 クラスター接続エンドポイントを指定します。 Azure DevOps 内の各デプロイ用にアプリケーションがアップグレードされるよう、 [アプリケーションのアップグレード] チェックボックスをオンにします。 [保存] ハイパーリンクをクリックして設定を発行プロファイルに保存し、 [キャンセル] をクリックしてダイアログ ボックスを閉じます。
新しい Azure DevOps の Git リポジトリで Visual Studio ソリューションを共有する
ビルドを生成できるように、Azure DevOps のチーム プロジェクトで、アプリケーションのソース ファイルを共有します。
Visual Studio の右下隅のステータス バーにある [ソース管理 ->Git に追加] を選択して、プロジェクトの新しいローカル Git リポジトリを作成します。
チーム エクスプローラーの [プッシュ] ビューで、 [Push to Azure DevOps](Azure DevOps へのプッシュ) の下にある [Git リポジトリの発行] ボタンを選択します。
電子メールを確認し、[アカウント] ドロップダウンからご自身の組織を選択します。 まだ組織が存在しない場合は、組織を設定する必要があります。 リポジトリ名を入力し、[リポジトリの発行] を選択します。
リポジトリを公開すると、ローカル リポジトリと同じ名前の新しいチーム プロジェクトが自分のアカウントに作成されます。 既存のチーム プロジェクトでリポジトリを作成するには、[リポジトリ名] の横にある [詳細] をクリックして、チーム プロジェクトを選択します。 [See it on the web](Web を参照) を選択すると、Web でコードを表示できます。
Azure Pipelines を使用して継続的デリバリーを構成する
Azure DevOps のビルド定義では、順次実行される一連のビルド ステップで構成されたワークフローを記述します。 Service Fabric クラスターをデプロイするため、Service Fabric アプリケーション パッケージおよび他のアーティファクトを生成するビルド定義を作成します。 Azure DevOps のビルド定義について詳細を確認してください。
Azure DevOps のリリース定義では、クラスターにアプリケーション パッケージをデプロイするワークフローを記述します。 ビルド定義とリリース定義を併用すると、ソース ファイルから始まり、クラスターでのアプリケーションの実行で終わるワークフロー全体を実行できます。 Azure DevOps のリリース定義について詳細を確認してください。
ビルド定義の作成
Web ブラウザーで https://dev.azure.com に移動し、該当する組織と新しいプロジェクトを順に選択して、新しいチーム プロジェクトを開きます。
左側のパネルの [パイプライン] オプションを選択し、[新しいパイプライン] をクリックします。
Note
ビルド定義テンプレートが表示されない場合は、[YAML パイプライン作成の新しいエクスペリエンス] 機能がオフになっていることを確認します。 この機能は、DevOps アカウントの [プレビュー機能] セクションで構成します。
ソースとして [Azure Repos Git] を選択し、該当するチーム プロジェクト名、プロジェクト リポジトリ、[マスター] 既定ブランチまたは手動のビルドおよびスケジュールされたビルドを選択します。 [Continue](続行) をクリックします。
[テンプレートの選択] で [Docker がサポートされている Azure Service Fabric アプリケーション] テンプレートを選択し、[適用] をクリックします。
[タスク] で、[エージェント プール] として [Hosted VS2017] を選択します。
[Tag images](イメージにタグ付け) をクリックします。
[コンテナー レジストリの種類] で、[Azure Container Registry] を選択します。 Azure サブスクリプションを選択し、[承認] をクリックします。 Azure コンテナー レジストリを選択します。
[Push images](イメージをプッシュ) をクリックします。
[コンテナー レジストリの種類] で、[Azure Container Registry] を選択します。 Azure サブスクリプションを選択し、[承認] をクリックします。 Azure コンテナー レジストリを選択します。
[トリガー] タブで [継続的インテグレーションを有効にする] をオンにして、継続的インテグレーションを有効にします。 [ブランチ フィルター] で [+ 追加] をクリックすると、[ブランチ仕様] が既定の [マスター] になります。
[ビルド パイプラインとキューの保存] ダイアログで、[保存してキューに登録] をクリックして手動でビルドを開始します。
プッシュまたはチェックイン時にもビルドがトリガーされます。 ビルドの進行状況を確認するには、[ビルド] タブに切り替えます。ビルドが正常に実行されることを確認したら、アプリケーションをクラスターにデプロイするリリース定義を定義します。
リリース定義の作成
左側のパネルの [パイプライン] オプションを選択し、[リリース] を選択して、[+ 新しいパイプライン] をクリックします。 [テンプレートの選択] で一覧から [Azure Service Fabric の配置] テンプレートを選択し、[適用] を選択します。
[タスク]、[環境 1]、[+ 新規] の順に選択し、新しいクラスター接続を追加します。
[Add new Service Fabric Connection] (新しい Service Fabric 接続) ビューで、[証明書ベース] または [Microsoft Entra ID] 認証を選択します。 接続名 "mysftestcluster" とクラスター エンドポイント "tcp://mysftestcluster.southcentralus.cloudapp.azure.com:19000" (またはデプロイ先のクラスターのエンドポイント) を指定します。
証明書ベースの認証の場合は、クラスターの作成に使用したサーバー証明書のサーバー証明書拇印を追加します。 [クライアント証明書] で、クライアント証明書ファイルの Base 64 エンコーディングを追加します。 証明書の Base 64 でエンコードされた表現を取得する方法については、そのフィールドのヘルプ ポップアップをご覧ください。 また、証明書のパスワードも追加します。 別のクライアント証明書がない場合は、クラスター証明書またはサーバー証明書を使用できます。
Microsoft Entra の資格情報の場合は、クラスターの作成に使用したサーバー証明書のサーバー証明書拇印を追加し、[ユーザー名] および [パスワード] フィールドにクラスターへの接続で使用する資格情報を指定します。
[追加] をクリックして、クラスター接続を保存します。
[エージェント フェーズ] で、[Service Fabric アプリケーションの展開] をクリックします。 [Docker 設定]、[Docker 設定の構成] の順にクリックします。 [レジストリ資格情報のソース] で、[Azure Resource Manager Service Connection](Azure Resource Manager サービス接続) を選択します。 次に Azure サブスクリプションを選択します。
次に、ビルド成果物をパイプラインに追加して、リリース定義でビルドの出力を見つけられるようにします。 [パイプライン] を選択し、[成果物]->[+ 追加] の順に選択します。 [ソース (ビルド定義)] で、前に作成したビルド定義を選択します。 [追加] をクリックして、ビルド成果物を保存します。
ビルドの完了時にリリースが自動的に作成されるように、継続的配置トリガーを有効にします。 成果物の稲妻のアイコンをクリックし、トリガーを有効にします。次に、[保存] をクリックして、リリース定義を保存します。
[+ リリース] ->[リリースの作成] ->[作成] の順に選択して、リリースを手動で作成します。 [リリース] タブで、リリースの進行状況を監視できます。
デプロイが成功し、アプリケーションがクラスターで実行されていることを確認します。 Web ブラウザーを開き、http://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/
に移動します。 この例では、アプリケーション バージョンは「1.0.0.20170616.3」となっていることに注意してください。
変更のコミットとプッシュ、リリースのトリガー
Azure DevOps へのコード変更をチェックインして、継続的インテグレーション パイプラインが機能していることを確認します。
コードを記述すると、変更内容は Visual Studio によって自動的に追跡されます。 右下のステータス バーで [保留中の変更] アイコン () を選択して、ローカル Git リポジトリに変更をコミットします。
チーム エクスプローラーの [変更] ビューで、更新内容を説明するメッセージを追加し、変更をコミットします。
発行されていない変更のステータス バー アイコンを選択 () するか、またはチーム エクスプローラーで [同期] ビューを選択します。 [プッシュ] を選択して、Azure DevOps のコードを更新します。
Azure DevOps へ変更をプッシュすると、ビルドが自動的にトリガーされます。 ビルド定義が正常に完了すると、リリースは自動的に作成され、クラスター上のアプリケーションのアップグレードが開始されます。
ビルドの進行状況を確認するには、Visual Studio のチーム エクスプローラーで [ビルド] タブに切り替えます。 ビルドが正常に実行されることを確認したら、クラスターにアプリケーションをデプロイするリリース定義を定義します。
デプロイが成功し、アプリケーションがクラスターで実行されていることを確認します。 Web ブラウザーを開き、http://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/
に移動します。 この例では、アプリケーション バージョンが "1.0.0.20170815.3" である点に注意してください。
アプリケーションの更新
アプリケーションで、コードを変更します。 前の手順に従って、変更を保存し、コミットします。
アプリケーションのアップグレードが開始されると、Service Fabric Explorer でアップグレードの進行状況を見ることができます。
アプリケーションのアップグレードには数分かかる場合があります。 アップグレードが完了すると、アプリケーションは次のバージョンで実行されます。 この例では "1.0.0.20170815.4" です。
次のステップ
このチュートリアルでは、以下の内容を学習しました。
- プロジェクトにソース管理を追加する
- ビルド定義の作成
- リリース定義の作成
- アプリケーションを自動的にデプロイおよびアップグレードする
チュートリアルの次の部分で、コンテナーの監視をセットアップする方法を学習します。