概要
このページでは、Cloud デバッガを使用できるように、環境と .NET Core アプリケーションを構成する方法について説明します。
環境によっては、Cloud デバッガ エージェントがデータを送信できるようにするためにアクセス スコープを明示的に指定する必要があります。できるだけ幅広いアクセススコープを設定し、Identity and Access Managementを使用してアクセスを制限することをおすすめします。このおすすめの方法に沿って、オプション cloud-platform
を使用して、すべての Cloud API がアクセス スコープになるように設定します。
言語バージョンとコンピューティング環境
Cloud デバッガは、次のコンピューティング環境上の .NET Core 1.0~2.1 で使用できます。
App Engine スタンダード環境 | App Engine フレキシブル環境 | Compute Engine | Google Kubernetes Engine | Cloud Run | Cloud Run for Anthos | その他の場所で実行されている VM とコンテナ | Cloud Functions |
---|---|---|---|---|---|---|---|
Cloud デバッガの設定
Cloud デバッガを設定するには、次のタスクを実行します。
プロジェクトで Cloud デバッガ API が有効になっていることを確認します。
使用しているコンピューティング環境にデバッガをインストールして構成します。
ソースコードを選択します。
Cloud デバッガ API が有効になっていることを確認する
Cloud デバッガを使用する前に、Cloud Debugger API が有効になっていることを確認します。Cloud デバッガは、ほとんどのプロジェクトでデフォルトで有効になっています。Cloud デバッガ API を有効にする
App Engine 標準環境
.NET Core 用 Cloud デバッガ エージェントは、App Engine スタンダード環境ではサポートされていません。
App Engine フレキシブル環境
app.yaml の
runtime
をcustom
に変更します。runtime: custom env: flex
カスタム Dockerfile を使用します。
FROM gcr.io/dotnet-debugger/aspnetcore:2.0 COPY . /app WORKDIR /app # If you don't have source context delete the below line. # See 'Selecting source code automatically' below for more information. COPY ./source-context.json /usr/share/dotnet-debugger/agent/ ENTRYPOINT ["/usr/share/dotnet-debugger/start-debugger.sh", "dotnet", "APPLICATION.dll"]
ここで
APPLICATION
は、実行してデバッグするバイナリです。
これで、Google Cloud のオペレーション スイートをアプリケーションで使用する準備が整いました。
デプロイされたアプリケーションに一致するソースコードを Google Cloud コンソールの [デバッグ] ページに自動的に表示するには、ソースコードを自動的に選択するをご覧ください。
GKE
gcloud
gcloud
を使用して Debugger を有効にする方法は次のとおりです。
次のいずれかのアクセス スコープでクラスタを作成します。
https://www.googleapis.com/auth/cloud-platform
は、すべての Google Cloud API へのアクセス権をクラスタに付与します。https://www.googleapis.com/auth/cloud_debugger
は、Debugger API のみへのアクセス権をクラスタに付与します。このアクセス スコープを使用して、クラスタのセキュリティを強化します。
gcloud container clusters create example-cluster-name \ --scopes=https://www.googleapis.com/auth/cloud_debugger
以下の行を
Dockerfile
に追加して、Debugger エージェントをコンテナ化されたアプリに追加します。FROM gcr.io/dotnet-debugger/aspnetcore:2.0 COPY . /app WORKDIR /app # If you don't have the source-context.json file, delete the `COPY` line below. # See running locally below for more information. COPY ./source-context.json /usr/share/dotnet-debugger/agent/ ENV STACKDRIVER_DEBUGGER_MODULE=MODULE ENV STACKDRIVER_DEBUGGER_VERSION=VERSION # If not running on Google Cloud, uncomment and set the following: # ENV GOOGLE_APPLICATION_CREDENTIALS=CREDENTIALS_FILE ENTRYPOINT ["/usr/share/dotnet-debugger/start-debugger.sh", "dotnet", "APPLICATION.dll"]
ここで
source-context.json
は、ソース コンテキスト構成を含む JSON 形式ファイルです。このファイルを生成する方法については、ソースコードを自動的に選択するをご覧ください。MODULE
はアプリケーションの名前です。Google Cloud コンソールでは、この名前とバージョンでアプリケーションを識別します。例:MyApp
、Backend
、Frontend
。VERSION
はアプリケーションのバージョン(例: ビルド ID)です。Google Cloud コンソールは、実行中のアプリケーションをMODULE - VERSION
として表示します。例:v1.0
、build_147
、v20160520
。CREDENTIALS_FILE
は、JSON サービス アカウント認証情報ファイルへのパスです。APPLICATION
は、Debugger とともに実行されている .NET Core アプリケーションのエントリ ポイントです。
これで、コンテナ化されたアプリをデプロイするときにデバッガを使用できるようになりました。
クラスタの作成の詳細については、クラスタの作成をご覧ください。
コンソール
Google Cloud Console を使用してデバッガを有効にするには、次の手順を実行します。
[ノードプール] セクションで、[セキュリティ] を選択し、[各 API にアクセス権を設定] を選択します。
デバッガを有効にします。
省略可: [すべての Cloud APIs に完全アクセス権を許可] を選択します。
これで、アプリケーションでデバッガを使用できるようになりました。
デプロイされたアプリケーションに一致するソースコードを Google Cloud コンソールの [デバッグ] ページに自動的に表示するには、ソースコードを自動的に選択するをご覧ください。
Compute Engine
.NET Core の Cloud デバッガ エージェントは、Compute Engine 環境ではサポートされていません。
国内
アプリケーションをローカルで実行中に Google Cloud のオペレーション スイートを使用するには:
- サービス アカウント JSON ファイルの完全なパスを指すように
GOOGLE_APPLICATION_CREDENTIALS
環境変数を設定します。 STACKDRIVER_DEBUGGER_MODULE
環境変数をデバッグ対象のコンポーネントの名前に設定します。このモジュール名は、デバッグ対象となったモジュールの Google Cloud コンソール リストに表示されます。STACKDRIVER_DEBUGGER_VERSION
環境変数をデバッグ対象のモジュールの論理バージョンに設定します。これで、Google Cloud コンソールで複数の論理バージョンのモジュールをデバッグできるようになります。- Google Cloud のオペレーション スイート バイナリの場所を指すように
STACKDRIVER_DEBUGGER_DEBUGGER
環境変数を設定します。 - Linux で実行する場合は、Google Cloud のオペレーション スイート ディレクトリを含めるように
LD_LIBRARY_PATH
環境変数を設定します。
.NET Core アプリケーションをビルドする場合は、PDB ファイルを追加し、コードと一緒にデプロイします。各 PDB ファイルに以下の行を含めます。
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<DebugType>portable</DebugType>
</PropertyGroup>
Release
ビルドをデバッグするときに、変数の名前が異なっていることや、変数が見つからないことがあります。