このチュートリアルでは、Azure Pipelines、Cloud Run、Container Registry を使用して、ASP.NET MVC コア ウェブ アプリケーションの継続的インテグレーション / 継続的デプロイ(CI / CD)パイプラインを作成する方法について説明します。
次の図に示すように、CI / CD パイプラインは、開発用と本番環境用の 2 つの Google Cloud プロジェクトを使用します。
パイプラインの開始時に、デベロッパーがサンプル コードベースへの変更を commit します。このアクションがトリガーとなり、パイプラインによってリリースが作成され、開発クラスタの Cloud Run にデプロイされます。その後リリース管理者がリリースをプロモートし、本番環境プロジェクトにデプロイします。
このチュートリアルは、デベロッパーと DevOps エンジニアを対象としています。.NET Core、Azure Pipelines、Cloud Run、git
に関する基本的な知識があることを前提としています。このチュートリアルを完了するには、Azure DevOps アカウントに対する管理者権限が必要です。
目標
- Docker イメージを公開するために Container Registry を Azure Pipelines に接続する。
- Cloud Run にデプロイするための .NET Core サンプルアプリを準備する。
- Azure Pipelines と Google Cloud 間の認証を設定する。
- Azure Pipelines リリース管理を使用して Cloud Run のデプロイをオーケストレートする。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
Azure DevOps を使用した場合に適用される可能性がある費用については、Azure DevOps の料金ページをご覧ください。
始める前に
このチュートリアルでは、開発用と本番環境用の 2 つの個別のプロジェクトを使用します。個別のプロジェクトを使用することで、リリースを本番環境にデプロイする前にテストできます。また、Identity and Access Management(IAM)のロールと権限を個別に管理することもできます。
- 開発用の Google Cloud プロジェクトを作成します。このチュートリアルでは、このプロジェクトを開発プロジェクトと呼びます。
- 本番環境用の Google Cloud プロジェクトを作成します。このチュートリアルでは、このプロジェクトを本番環境プロジェクトと呼びます。
-
Make sure that billing is enabled for your Google Cloud project.
- Azure DevOps アカウントがあり、そのアカウントに対する管理者権限があることを確認します。まだ Azure DevOps アカウントがない場合は、Azure DevOps ホームページで登録できます。
Azure DevOps プロジェクトを作成する
Azure DevOps を使用して、ソースコードの管理、ビルドとテストの実行、Cloud Run へのデプロイのオーケストレートを行います。はじめに、Azure DevOps アカウントでプロジェクトを作成します。
- Azure DevOps ホームページ(https://dev.azure.com/YOUR_AZURE_DEVOPS_ACCOUNT_NAME)に移動します。
- [New Project] をクリックします。
CloudDemo
などのプロジェクト名を入力します。- [Visibility] を [Private] に設定してから、[Create] をクリックします。
- プロジェクトを作成したら、左側のメニューで [Repos] をクリックします。
- [Import] をクリックして GitHub から
dotnet-docs-samples
リポジトリを fork し、次の値を設定します。- Repository type:
Git
- Clone URL:
https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
- Repository type:
[Import] をクリックします。
インポート処理が完了すると、
dotnet-docs-samples
リポジトリのソースコードが表示されます。
Container Registry に Azure Pipeline を接続する
CloudDemo
アプリの継続的インテグレーションを設定する前に、Azure Pipelines を Container Registry に接続する必要があります。この接続により、Azure Pipelines はコンテナ イメージを Container Registry に公開できます。
イメージを公開するためのサービス アカウントを設定する
本番環境プロジェクトに Google Cloud サービス アカウントを作成します。
- Google Cloud コンソールで、本番環境プロジェクトに切り替えます。
-
In the Google Cloud console, activate Cloud Shell.
次の環境変数を初期化します。
DEV_PROJECT_ID=DEV_PROJECT_ID PROD_PROJECT_ID=PROD_PROJECT_ID
以下を置き換えます。
DEV_PROJECT_ID
: 開発プロジェクトのプロジェクト IDPROD_PROJECT_ID
: 本番環境プロジェクトのプロジェクト ID
本番環境プロジェクトで Container Registry API を有効にします。
gcloud services enable containerregistry.googleapis.com \ --project=$PROD_PROJECT_ID
Azure Pipelines が Docker イメージの公開に使用するサービス アカウントを作成します。
gcloud iam service-accounts create azure-pipelines-publisher \ --display-name="Azure Pipelines Publisher" \ --project=$PROD_PROJECT_ID
サービス アカウントにストレージ管理者の IAM ロール(
roles/storage.admin
)を付与して、Azure Pipelines が Container Registry に push できるようにします。AZURE_PIPELINES_PUBLISHER=azure-pipelines-publisher@$PROD_PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \ --member serviceAccount:$AZURE_PIPELINES_PUBLISHER \ --role roles/storage.admin \ --project=$PROD_PROJECT_ID
サービス アカウント キーを生成します。
gcloud iam service-accounts keys create azure-pipelines-publisher.json \ --iam-account $AZURE_PIPELINES_PUBLISHER \ --project=$PROD_PROJECT_ID tr -d '\n' < azure-pipelines-publisher.json > azure-pipelines-publisher-oneline.json
サービス アカウント キーファイルの内容を表示します。
echo $(<azure-pipelines-publisher-oneline.json)
次の手順のいずれかでサービス アカウント キーが必要になります。
Container Registry 用のサービス接続を作成する
Azure Pipelines で、Container Registry 用の新しいサービス接続を作成します。
- Azure の [DevOps] メニューで、[Project settings] を選択してから、[Pipelines] > [Service connections] の順に選択します。
- [Create service connection] をクリックします。
- リストから [Docker Registry] を選択し、[Next] をクリックします。
- ダイアログの以下のフィールドに値を入力します。
- Registry type: Others
- Docker Registry:
https://gcr.io/PROD_PROJECT_ID
、PROD_PROJECT_ID
は本番環境プロジェクト名に置き換えます(例:https://gcr.io/azure-pipelines-test-project-12345
)。 - Docker ID:
_json_key
- Password:
azure-pipelines-publisher-oneline.json
の内容を貼り付けます。 - Service connection name:
gcr-tutorial
- [Save] をクリックして接続を作成します。
継続的なビルド
この段階で Azure Pipelines を使用して継続的インテグレーションを設定できます。commit によって Git リポジトリへの push を行うたびに、Azure Pipelines によってコードがビルドされ、そのビルドのアーティファクトが Docker コンテナにパッケージ化されます。そのコンテナは Container Registry に公開されます。
リポジトリには、すでに次の Dockerfile が含まれています。
YAML 構文を使用する新しいパイプラインを作成します。
- Visual Studio またはコマンドライン
git
クライアントを使用して、新しい Git リポジトリのクローンを作成します。 - リポジトリのルートで、
azure-pipelines.yml
という名前のファイルを作成します。 次のコードをファイルにコピーします。
resources: - repo: self fetchDepth: 1 queue: name: Hosted Ubuntu 1604 trigger: - master variables: TargetFramework: 'net6.0' BuildConfiguration: 'Release' DockerImageName: 'PROD_PROJECT_ID/CloudDemo' steps: - task: DotNetCoreCLI@2 displayName: Publish inputs: projects: 'applications/clouddemo/netcore/CloudDemo.MvcCore.sln' publishWebProjects: false command: publish arguments: '--configuration $(BuildConfiguration) --framework=$(TargetFramework)' zipAfterPublish: false modifyOutputPath: false - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' - task: Docker@2 displayName: 'Login to Container Registry' inputs: command: login containerRegistry: 'gcr-tutorial' - task: Docker@2 displayName: 'Build and push image' inputs: Dockerfile: 'applications/clouddemo/netcore/Dockerfile' command: buildAndPush repository: '$(DockerImageName)'
PROJECT_ID
を本番環境プロジェクトの名前に置き換えて、ファイルを保存します。Cloud Run は Linux ベースの環境であるため、パイプラインは Linux ベースのビルド エージェントを使用します。
変更を commit し、Azure Pipelines に push します。
Visual Studio
- チーム エクスプローラーを開き、[Home] アイコンをクリックします。
- [変更] をクリックします。
- 「
Add pipeline definition
」といった Commit メッセージを入力します。 - [すべてをコミットしてプッシュ] をクリックします。
コマンドライン
変更されたすべてのファイルをステージングします。
git add -A
ローカル リポジトリへの変更を commit します。
git commit -m "Add pipeline definition"
Azure DevOps への変更を push します。
git push
Azure DevOps のメニューで、[Pipelines] を選択して、[Create Pipeline] をクリックします。
[Azure Reposs Git] を選択します。
リポジトリを選択します。
[Review your pipeline YAML] ページで、[Run] をクリックします。
新しいビルドがトリガーされます。ビルドが完了するまでに 2 分ほどかかる場合があります。
イメージが Container Registry に公開されたことを確認するには、Google Cloud コンソールで本番環境プロジェクトに切り替えて、[Container Registry] > [イメージ] の順に選択し、[CloudDemo] をクリックします。
1 つのイメージと、そのイメージのタグが表示されます。このタグは、Azure Pipelines で実行されたビルドの数値 ID に対応しています。
継続的デプロイ
commit するたびに Azure Pipelines で自動的にコードのビルドと Docker イメージの公開が実施されるようになったら、デプロイするための操作に移行できます。
他の継続的インテグレーション システムとは異なり、Azure Pipelines ではビルドとデプロイが区別され、デプロイ関連のすべてのタスクに、リリース管理というラベルが付けられた専用のツールセットが提供されます。
Azure Pipelines リリース管理は、次のコンセプトに基づいて構築されています。
- リリースは、通常はビルドプロセスの結果からなる、アプリの特定のバージョンを形成するアーティファクト群である。
- デプロイは、リリースを特定の環境に導入する過程である。
- デプロイによって一連のタスクが実行される。タスクはジョブでグループ化できる。
- ステージによってパイプラインを分割でき、ステージを使用することで、開発環境やテスト環境などの複数の環境へのデプロイをオーケストレートできる。
新しくビルドが完了すると、必ずリリース パイプラインがトリガーされるように設定します。パイプラインは、開発と本番環境の 2 つのステージで構成されています。各ステージでリリース パイプラインは、ビルド パイプラインが生成する Docker イメージを使用して Cloud Run にデプロイします。
前もって構成しておいたビルド パイプラインは、Docker イメージを Container Registry に公開する前に、ビルド ID でタグ付けします。これにより、リリース パイプラインでは、$BUILD_BUILDID
変数を使用してデプロイすべき Docker イメージを正確に識別します。
Cloud Run を構成する
Cloud Run はフルマネージドのサーバーレス環境であるため、インフラストラクチャをプロビジョニングする必要はありません。Cloud Run のデプロイの安全性を確保できるように、IAM を設定する必要があります。
次の図に示すように、Cloud Run サービスのデプロイと実行には複数の ID が必要となります。
各 ID はサービス アカウントとして実装され、次の表で示すように、特定の目的で使用されます。
サービス アカウント | 使用元 | 目的 | 必要なロール |
---|---|---|---|
Azure Pipelines Publisher | ビルド パイプライン | Container Registry に Docker イメージを公開する | roles/storage.admin (本番環境プロジェクト専用) |
Azure Pipelines Deployer | リリース パイプライン | Cloud Run のデプロイを開始する | roles/run.admin |
CloudDemo サービスを起動する | roles/iam.serviceAccountUser |
||
Cloud Run サービス エージェント | Cloud Run | Container Registry から Docker イメージを pull する | roles/storage.objectViewer (本番環境プロジェクト専用) |
CloudDemo ランナー(ランタイム サービス アカウント) | CloudDemo サービス | Google Cloud のリソースにアクセスする | なし |
Azure Pipelines Publisher のサービス アカウントの作成と構成を行いました。以下のセクションでは、残りのサービス アカウントの作成と構成を行います。
Cloud Run サービス アカウントを構成する
Cloud Shell を開きます。
次の環境変数を初期化します。
DEV_PROJECT_ID=DEV_PROJECT_ID PROD_PROJECT_ID=PROD_PROJECT_ID
以下を置き換えます。
DEV_PROJECT_ID
: 開発プロジェクトのプロジェクト IDPROD_PROJECT_ID
: 本番環境プロジェクトのプロジェクト ID
開発プロジェクトと本番環境プロジェクトの両方で Cloud Run API と Compute Engine API を有効にします。
gcloud services enable run.googleapis.com --project=$DEV_PROJECT_ID gcloud services enable run.googleapis.com --project=$PROD_PROJECT_ID
これらの API を有効にすると、Cloud Run サービス エージェント アカウントがプロジェクトに作成されます。
2 つの Cloud Run サービス エージェント アカウントに、Docker イメージが格納されている本番環境プロジェクトの Container Registry へのアクセス権を付与します。
DEV_PROJECT_NUMBER=$(gcloud projects describe $DEV_PROJECT_ID \ --format='value(projectNumber)') PROD_PROJECT_NUMBER=$(gcloud projects describe $PROD_PROJECT_ID \ --format='value(projectNumber)') gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \ --member=serviceAccount:service-$DEV_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role roles/storage.objectViewer gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \ --member=serviceAccount:service-$PROD_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role roles/storage.objectViewer
CloudDemo ランナー アカウントを構成する
これで、CloudDemo ランナー アカウント(CloudDemo サービスのランタイム サービス アカウント)を構成できるようになりました。
CloudDemo-runner
という名前のサービス アカウントを作成します。gcloud iam service-accounts create clouddemo-runner \ --display-name="CloudDemo Runner" \ --project=$DEV_PROJECT_ID gcloud iam service-accounts create clouddemo-runner \ --display-name="CloudDemo Runner" \ --project=$PROD_PROJECT_ID DEV_CLOUDDEMO_RUNNER=clouddemo-runner@$DEV_PROJECT_ID.iam.gserviceaccount.com PROD_CLOUDDEMO_RUNNER=clouddemo-runner@$PROD_PROJECT_ID.iam.gserviceaccount.com
Azure Pipelines Deployer アカウントを構成する
最後に、Azure リリース パイプラインが Cloud Run へのデプロイに使用する Azure Pipelines Deployer アカウントの作成と構成を行います。
azure-pipelines-deployer
という名前のサービス アカウントを作成します。gcloud iam service-accounts create azure-pipelines-deployer \ --display-name="Azure Pipelines Deployer" \ --project=$PROD_PROJECT_ID AZURE_PIPELINES_DEPLOYER=azure-pipelines-deployer@$PROD_PROJECT_ID.iam.gserviceaccount.com
必要な IAM ロールを割り当てて、新しい Cloud Run サービスまたはリビジョンを開発プロジェクトにデプロイします。
gcloud projects add-iam-policy-binding $DEV_PROJECT_ID \ --member serviceAccount:$AZURE_PIPELINES_DEPLOYER \ --role roles/run.admin gcloud iam service-accounts add-iam-policy-binding \ $DEV_CLOUDDEMO_RUNNER \ --member=serviceAccount:$AZURE_PIPELINES_DEPLOYER \ --role="roles/iam.serviceAccountUser" \ --project=$DEV_PROJECT_ID
本番環境プロジェクトに同じ一連のロールを割り当てます。
gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \ --member serviceAccount:$AZURE_PIPELINES_DEPLOYER \ --role roles/run.admin gcloud iam service-accounts add-iam-policy-binding \ $PROD_CLOUDDEMO_RUNNER \ --member=serviceAccount:$AZURE_PIPELINES_DEPLOYER \ --role="roles/iam.serviceAccountUser" \ --project=$PROD_PROJECT_ID
サービス アカウント キーを生成します。
gcloud iam service-accounts keys create azure-pipelines-deployer.json \ --iam-account=$AZURE_PIPELINES_DEPLOYER \ --project=$PROD_PROJECT_ID cat azure-pipelines-deployer.json | base64 -w 0
このコマンドの出力は、リリース パイプラインを構成するときに使用します。
リリース パイプラインを構成する
この段階で、Azure Pipelines に戻ってデプロイを自動化できます。デプロイには次の手順が含まれます。
- 開発環境にデプロイする。
- 本番環境へのデプロイを開始する前に、手動承認をリクエストする。
- 本番環境にデプロイする。
リリース定義を作成する
まず、リリース定義を作成します。
- Azure DevOps のメニューで、[Pipelines] > [Releases] の順に選択します。
- [New pipeline] をクリックします。
- テンプレートのリストから [Empty job] を選択します。
- ステージの名前の入力を求められたら、「
Development
」と入力します。 - 画面の上部で、パイプラインに
CloudDemo
という名前を付けます。 - パイプライン図で、[Artifacts] の横にある [Add] をクリックします。
- [Build] を選択して、次の設定を追加します。
- Source type: ビルド
- Source (build pipeline): ビルド定義を選択します(選択肢は 1 つだけです)
- Default version: Latest
- Source alias:
build
- [Add] をクリックします。
- [Artifact] ボックスで [Continuous deployment trigger](稲妻のアイコン)をクリックしてデプロイ トリガーを追加します。
- [Continuous deployment trigger] で、スイッチを [Enabled] に設定します。
- [Save] をクリックします。
必要に応じてコメントを入力し、[OK] をクリックして確定します。
パイプラインは次のようになります。
開発プロジェクトにデプロイする
リリース定義を作成したら、開発プロジェクトへの Cloud Run デプロイを構成できるようになります。
- メニューで [Agent job] タブに切り替えます。
- [Agent job] をクリックします。
- エージェントの仕様を [ubuntu-18.04] に設定します。
- [Agent job] の横の [Add a task to agent job] をクリックして、フェーズにステップを追加します。
- [Command line] タスクを選択し、[Add] をクリックします。
新たに追加したタスクをクリックし、以下の設定を構成します。
- Display name:
Deploy image to development project
Script:
gcloud auth activate-service-account \ --quiet \ --key-file <(echo $(ServiceAccountKey) | base64 -d) && \ gcloud run deploy clouddemo \ --quiet \ --service-account=clouddemo-runner@$(CloudRun.ProjectId.Development).iam.gserviceaccount.com \ --allow-unauthenticated \ --image=gcr.io/$(ContainerRegistry.ProjectId)/clouddemo:$BUILD_BUILDID \ --platform=managed \ --region=$(CloudRun.Region) \ --project=$(CloudRun.ProjectId.Development)
このコマンドは、環境変数からサービス アカウント キーを取得し、gcloud CLI を使用してアプリケーションを Cloud Run にデプロイします。デフォルトでは、Azure Pipelines エージェントで gcloud CLI を使用できます。
- Display name:
[変数] タブに切り替えて、次の変数を追加します。
Name Value Secret ServiceAccountKey
前に azure-pipelines-deployer
用に作成されたサービス アカウント キー。○ ContainerRegistry.ProjectId
本番環境プロジェクトのプロジェクト ID。 CloudRun.Region
Cloud Run リソースをデプロイする前に選択したリージョン。 CloudRun.ProjectId.Development
開発プロジェクトのプロジェクト ID。 CloudRun.ProjectId.Production
本番環境プロジェクトのプロジェクト ID。 [Save] をクリックします。
必要に応じてコメントを入力し、[OK] をクリックして確定します。
本番環境クラスタにデプロイする
最後に、本番環境プロジェクトへのデプロイを構成します。
- メニューで [Pipeline] タブに切り替えます。
- [Stages] ボックスで、[Add] > [New stage] の順に選択します。
- テンプレートのリストから [Empty job] を選択します。
- ステージの名前の入力を求められたら、「
Production
」と入力します。 - 新たに作成したステージの稲妻のアイコンをクリックします。
以下の設定を構成します。
- Select trigger: After stage
- Stages: Development
- Pre-deployment approvals: (有効)
- Approvers: ユーザー名を選択します。
パイプラインに次のようなビューが表示されます。
[Tasks] タブに切り替えます。
[Tasks] タブにカーソルを合わせ、[Tasks] > [Production] の順に選択します。
[Agent job] をクリックします。
エージェントの仕様を [ubuntu-18.04] に設定します。
[Add a task to agent job]
をクリックして、フェーズにステップを追加します。[Command line] タスクを選択し、[Add] をクリックします。
新たに追加したタスクをクリックし、以下の設定を構成します。
- Display name:
Deploy image to production project
Script:
gcloud auth activate-service-account \ --quiet \ --key-file <(echo $(ServiceAccountKey) | base64 -d) && \ gcloud run deploy clouddemo \ --quiet \ --service-account=clouddemo-runner@$(CloudRun.ProjectId.Production).iam.gserviceaccount.com \ --allow-unauthenticated \ --image=gcr.io/$(ContainerRegistry.ProjectId)/clouddemo:$BUILD_BUILDID \ --platform=managed \ --region=$(CloudRun.Region) \ --project=$(CloudRun.ProjectId.Production)
- Display name:
[Save] をクリックします。
必要に応じてコメントを入力し、[OK] をクリックして確定します。
パイプラインを実行する
パイプライン全体の構成が済んだら、ソースコードを変更してパイプラインをテストできます。
- ローカルのパソコンで、先ほどクローンを作成した Git リポジトリからファイル
applications\clouddemo\netcore\CloudDemo.MvcCore\Views\Home\Index.cshtml
を開きます。 - 26 行目で、
ViewBag.Title
の値をHome Page
からHome Page Cloud Run
に変更します。 変更を commit し、Azure Pipelines に push します。
Visual Studio
- チーム エクスプローラーを開き、[Home] アイコンをクリックします。
- [変更] をクリックします。
- 「
Change site title
」といった Commit メッセージを入力します。 - [すべてをコミットしてプッシュ] をクリックします。
コマンドライン
変更されたすべてのファイルをステージングします。
git add -A
ローカル リポジトリへの変更を commit します。
git commit -m "Change site title"
変更を Azure Pipelines に push します。
git push
Azure DevOps のメニューで [Pipelines] を選択します。ビルドがトリガーされます。
ビルドが完了したら、[Pipelines] > [Releases] の順に選択します。リリース プロセスが開始されます。
[Release-1] をクリックして詳細ページを開き、Development ステージのステータスが [Succeeded] に切り替わるのを待ちます。
Google Cloud コンソールで、開発プロジェクトに切り替えます。
メニューで、[Compute] > [Cloud Run] の順に選択します。
clouddemo サービスが正常にデプロイされます。
clouddemo をクリックして詳細を表示します。
Cloud Run がサービスをプロビジョニングしたことを示す URL が表示されます。
新しいブラウザタブで URL を開き、CloudDemo アプリがデプロイされ、カスタム タイトルが使用されていることを確認します。
Azure Pipelines で [Approve]([Production] ステージに隣接している)をクリックして、本番環境へのデプロイをプロモートします。
(省略可)コメントを入力します。
[Approve] をクリックして確定し、Production環境のステータスが [Succeeded] に切り替わるのを待ちます。
Google Cloud コンソールで、本番環境プロジェクトに切り替えます。
メニューで、[Compute] > [Cloud Run] の順に選択します。
clouddemo サービスが本番環境プロジェクトにデプロイされます。
clouddemo をクリックして詳細を表示します。
Cloud Run によってサービスがプロビジョニングされたことを示す URL が表示されます。
新しいブラウザタブで URL を開き、CloudDemo アプリが本番環境にデプロイされ、カスタム タイトルが使用されていることを確認します。
クリーンアップ
このチュートリアルの完了後に請求が発生しないようにするには、作成したエンティティを削除します。
Azure Pipelines プロジェクトの削除
Azure Pipelines プロジェクトを削除するには、Azure DevOps Services のドキュメントをご覧ください。Azure Pipelines プロジェクトを削除すると、すべてのソースコードの変更が失われます。
Google Cloud の開発プロジェクトと本番環境プロジェクトを削除する
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- Cloud Run サービスのカスタム ドメインを構成する。
- Azure Pipelines を使用して Google Kubernetes Engine に同じアプリをデプロイする方法を確認する。
- Google Cloud への Deploying .NET アプリのデプロイについて詳細を確認する。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center をご覧ください。