.NET Core 用 Cloud デバッガの設定

概要

このページでは、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 デバッガを設定するには、次のタスクを実行します。

  1. プロジェクトで Cloud デバッガ API が有効になっていることを確認します。

  2. 使用しているコンピューティング環境にデバッガをインストールして構成します。

  3. ソースコードを選択します。

Cloud デバッガ API が有効になっていることを確認する

Cloud デバッガを使用する前に、Cloud Debugger API が有効になっていることを確認します。Cloud デバッガは、ほとんどのプロジェクトでデフォルトで有効になっています。
Cloud デバッガ API を有効にする

App Engine 標準環境

.NET Core 用 Cloud デバッガ エージェントは、App Engine スタンダード環境ではサポートされていません。

App Engine フレキシブル環境

  1. app.yaml の runtimecustom に変更します。

    runtime: custom
    env: flex
    
  2. カスタム 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 のオペレーション スイートをアプリケーションで使用する準備が整いました。

デプロイされたアプリケーションに一致するソースコードを Cloud Console の [デバッグ] ページに自動的に表示するには、ソースコードを自動的に選択するをご覧ください。

Google Kubernetes Engine

gcloud

gcloud を使用して Debugger を有効にする方法は次のとおりです。

  1. 次のいずれかのアクセス スコープでクラスタを作成します。

    • 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
    
  2. 以下の行を 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 はアプリケーションの名前です。Cloud Console では、この名前とバージョンでアプリケーションを識別します。例: MyAppBackendFrontend

    • VERSION はアプリケーションのバージョン(例: ビルド ID)です。Cloud Console は、実行中のアプリケーションを MODULE - VERSION のように表示します。例: v1.0build_147v20160520

    • CREDENTIALS_FILE は、JSON サービス アカウント認証情報ファイルへのパスです。

    • APPLICATION は、Debugger とともに実行されている .NET Core アプリケーションのエントリ ポイントです。

これで、コンテナ化されたアプリをデプロイするときにデバッガを使用できるようになりました。

クラスタの作成の詳細については、クラスタの作成をご覧ください。

コンソール

Google Cloud Console を使用してデバッガを有効にするには、次の手順を実行します。

  1. [ノードプール] セクションで、[セキュリティ] を選択し、[各 API にアクセス権を設定] を選択します。

  2. デバッガを有効にします。

    クラスタで Debugger API が有効になっている。

  3. 省略可: [すべての Cloud APIs に完全アクセス権を許可] を選択します。

これで、アプリケーションでデバッガを使用できるようになりました。

デプロイされたアプリケーションに一致するソースコードを Cloud Console の [デバッグ] ページに自動的に表示するには、ソースコードを自動的に選択するをご覧ください。

Compute Engine

.NET Core の Cloud デバッガ エージェントは、Compute Engine 環境ではサポートされていません。

国内

アプリケーションをローカルで実行中に Google Cloud のオペレーション スイートを使用するには:

  • サービス アカウント JSON ファイルの完全なパスを指すように GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定します。
  • STACKDRIVER_DEBUGGER_MODULE 環境変数をデバッグ対象のコンポーネントの名前に設定します。このモジュール名は、デバッグ対象となったモジュールの Cloud Console リストに表示されます。
  • STACKDRIVER_DEBUGGER_VERSION 環境変数をデバッグ対象のモジュールの論理バージョンに設定します。これで、Cloud Console で複数の論理バージョンのモジュールをデバッグできるようになります。
  • 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 ビルドをデバッグするときに、変数の名前が異なっていることや、変数が見つからないことがあります。