Go 用 Cloud デバッガの設定

概要

このページでは、Cloud デバッガを使用できるように、環境と Go アプリケーションを構成する方法について説明します。環境によっては、Cloud デバッガ エージェントがデータを送信できるようにするためにアクセス スコープを明示的に指定する必要があります。できるだけ幅広いアクセススコープを設定し、Identity and Access Managementを使用してアクセスを制限することをおすすめします。このおすすめの方法に沿って、オプション cloud-platform を使用して、すべての Cloud API がアクセス スコープになるように設定します。

言語バージョンとコンピューティング環境

Cloud デバッガは、次のコンピューティング環境上の Go 1.9 以降で利用できます。

App Engine スタンダード環境 App Engine フレキシブル環境 Compute Engine Google Kubernetes Engine Cloud Run Cloud Run for Anthos on Google Cloud その他の場所で実行されている VM とコンテナ Cloud Functions

Cloud デバッガの設定

Cloud デバッガを設定するには、次のタスクを実行します。

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

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

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

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

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

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 エージェントをコンテナ化されたアプリに追加します。

    RUN go get -u cloud.google.com/go/cmd/go-cloud-debug-agent \
        go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
        -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    ここで

    • PATH_TO_FILE は、ソース コンテキスト構成を含む JSON 形式ファイルへの相対パスを指定します。

    • APP_NAME は、アプリケーションまたはサービスの名前です。これは、バージョンとともに、Cloud Console でアプリケーションを識別するために使用します。

    • APP_VERSION は、アプリケーション提供のバージョン マーカーです。たとえば、ビルド番号を使用できます。Cloud Console は、実行中のバージョンを module - version のように表示します。例: main - 1.0

    • PATH_TO_BINARY は、アプリケーションのバイナリへの相対パスを指定します。

    • ARG1ARG2 は、アプリケーションで必要となる追加の引数用のプレースホルダです。

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

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

コンソール

コンソールを使用して Debugger を有効にする方法は次のとおりです。

  1. クラスタタイプを選択したら、[ノードプール] ペインで [その他の設定項目] をクリックします。

    [その他の設定項目] ボタンの上の赤い長方形を示すノードプールのフィールド。

  2. [セキュリティ] ペインから次のいずれかを選択します。

    • [すべての Cloud API に完全アクセス権を許可]

    • [各 API にアクセス権を設定]。次に、Cloud Debugger の [有効] を選択します。

Compute Engine

  1. Compute Engine VM インスタンスで 64 ビットの Debian Linux イメージが実行されていることを確認します。

  2. Compute Engine VM インスタンスが [すべての Cloud API に完全アクセス権を許可] アクセス スコープ オプションで作成されていることを確認するか、次のいずれかのアクセス スコープを使用します。

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. 現在、Go コンパイラの最適化を使用すると、正確なデバッグを行うことができません。このため、アプリケーションをデフォルトの Go コンパイラの最適化でビルドすると、アプリケーションに関する誤った情報が Cloud デバッガに表示されます。

    正しいデバッグ情報を取得するには、デフォルトの最適化を行わずにアプリケーションをビルドします。最適化を無効にするコマンドの例を次に示します(Go 1.10 以降のバージョンを使用している場合)。

    go build -gcflags=all='-N -l'
    

    この gcflags 値に -N を追加すると最適化が無効になり -l を追加するとインラインが無効になります。

  4. デバッガ エージェントをダウンロードします。

    Cloud デバッガ エージェントは、起動時にアプリケーションに対して有効にする軽量のバイナリです。エージェントはアプリケーションとともに起動し、アプリケーションの実行中は Cloud デバッガ バックエンドと通信します。

    Compute Engine アプリケーションをビルドしデプロイしたら、デバッグ エージェントをダウンロードしてインストールします。

    go get -u cloud.google.com/go/cmd/go-cloud-debug-agent
    
  5. エージェントとプログラムを起動します。

    go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
                     -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    ここで

    • PATH_TO_FILE は、ソース コンテキスト構成を含む JSON 形式ファイルへの相対パスを指定します。

    • APP_NAME は、アプリケーションまたはサービスの名前です。これは、バージョンとともに、Cloud Console でアプリケーションを識別するために使用します。

    • APP_VERSION は、アプリケーション提供のバージョン マーカーです。たとえば、ビルド番号を使用できます。Cloud Console は、実行中のバージョンを module - version のように表示します。例: main - 1.0

    • PATH_TO_BINARY は、アプリケーションのバイナリへの相対パスを指定します。

    • ARG1ARG2 は、アプリケーションで必要となる追加の引数用のプレースホルダです。

    例:

    go-cloud-debug-agent -appmodule=main -appversion=1.0 -- bin/my-app my-arg
    

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

ローカルと他の場所

Go 用 Cloud デバッガ エージェントは、Go 1.9 以前を使用するローカル環境などでサポートされています。