Envoy を使用して Traffic Director を設定する準備をする

Traffic Director の設定には、次のフェーズがあります。

  1. 権限を付与し、Traffic Director API を有効にする。Compute Engine を使用している場合は、Cloud DNS を構成します。
  2. Envoy プロキシを使用してアプリケーションをデプロイする。
  3. トラフィックがサービス メッシュを通過する方法を決定するサービスとルーティング ルールを作成する。

このドキュメントでは、第 1 段階について説明します。これは、以前の API を使用している場合にも、プレビュー版の新しいサービス ルーティング API 使用している場合にも適用されます。2 番目と 3 番目のフェーズについては、このドキュメントの後半の設定プロセスを続行するをご覧ください。

このガイドを読む前に、Traffic Director の概要を理解しておいてください。新しい API を使用している場合は、新しいサービス ルーティング API の概要をご覧ください。

前提条件

Traffic Director を使用して、仮想マシン(VM)インスタンス、コンテナ、またはその両方にあるアプリケーションとともに動作する Envoy プロキシを構成する場合は、次の作業を先に行う必要があります。

  1. 課金を有効にします。
  2. Envoy のインストール方法を決定します。
  3. 必要な権限を付与します。
  4. プロジェクトで Traffic Director API を有効にします。
  5. Compute Engine を使用している場合は、Cloud DNS API を有効にして Cloud DNS を構成します。
  6. Envoy プロキシで使用されるサービス アカウントに、Traffic Director API へのアクセスに十分な権限があることを確認します。

以降のセクションでは、各作業の手順を説明します。

課金を有効にする

Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトの課金を有効化、無効化、または変更するをご覧ください。

Envoy のインストール方法を決める

Traffic Director を使用すると、Envoy プロキシのインストールとこのインフラストラクチャ レイヤの管理が容易になります。

  • Compute Engine では、VM 上で実行されるアプリケーションに Envoy を自動的に追加できます。Envoy をインストールし、Traffic Director に接続して VM のネットワーキングを構成する VM テンプレートを使用します。

  • Google Kubernetes Engine(GKE)では、サービスの Pod に Envoy サイドカー プロキシを自動的に追加できます。クラスタに Envoy サイドカー インジェクタをインストールすると、Envoy サイドカー プロキシが追加されて、Traffic Director に接続され、コンテナのネットワークが構成されます。

また、Traffic Director でサードパーティ プロバイダの Envoy デプロイ ソリューションを使用することもできます。このようなサービスの例が GetEnvoy です。このサービスを利用すると、パッケージ マネージャーベースのアプローチで Envoy プロキシのインストールと更新を行うことができます。

Envoy のバージョニングについて

Traffic Director と連携するには、Envoy がバージョン 1.9.1 以降であることが必要です。既知のセキュリティ上の脆弱性を軽減するために、常に最新の Envoy バージョンを使用することをおすすめします。

自動メソッドのいずれかを使用して Envoy をデプロイする場合、このタスクは以下のように自動的に処理されます。

  • Compute Engine VM で自動 Envoy デプロイを使用する場合、インストールされている Envoy のバージョンは、Traffic Director との連携について検証済みのバージョンです。インスタンス テンプレートを使用して新しい VM を作成すると、検証済みの最新バージョンが VM に送信されます。長時間実行される VM がある場合は、ローリング アップデートを使用して既存の VM を置き換え、最新のバージョンを取得できます。

  • GKE で Envoy サイドカー インジェクタを使用すると、Traffic Director との連携について検証済みの最新バージョンの Envoy を使用するようにインジェクタが構成されます。サイドカーがワークロード Pod とともに挿入されると、このバージョンの Envoy が返されます。より新しいバージョンの Envoy を選択する場合は、Envoy サイドカー インジェクタを更新してください。

特定の Envoy のバージョンについては、バージョン履歴をご覧ください。セキュリティの脆弱性の詳細については、セキュリティ アドバイザリをご覧ください。

必要な IAM 権限を付与する

VM インスタンスを作成し、ネットワークを変更して Traffic Director を構成するには、十分な Identity and Access Management(IAM)権限が付与されている必要があります。Traffic Director を有効にするプロジェクトのオーナーまたは編集者roles/owner または roles/editor)のロールを持っている場合は、適切な権限が自動的に付与されています。

それ以外の場合は、次の表に示されている Compute Engine IAM のロールがすべて必要です。これらのロールがある場合、Compute Engine IAM ドキュメントで説明されているように、関連する権限も付与されます。

タスク 必要なロール
サービス アカウントの IAM ポリシーの設定。 サービス アカウント管理者
roles/iam.serviceAccountAdmin
Traffic Director の有効化。 Service Usage 管理者
roles/serviceusage.serviceUsageAdmin
ネットワーク、サブネット、負荷分散コンポーネントの作成。 Compute ネットワーク管理者
roles/compute.networkAdmin
ファイアウォール ルールの追加と削除。 Compute セキュリティ管理者
roles/compute.securityAdmin
インスタンスの作成。 Compute インスタンス管理者
roles/compute.instanceAdmin

GKE ノードプールまたは Compute Engine VM には https://www.googleapis.com/auth/cloud-platform スコープが必要です。詳細については、Envoy を使用するデプロイのトラブルシューティングをご覧ください。

xDS v3 では、Traffic Director Envoy クライアントが使用するサービス アカウントにロール roles/trafficdirector.client を付与します。

Traffic Director API を有効にする

Console

  1. Google Cloud Console で、プロジェクトの [API ライブラリ] ページに移動します。

    [API ライブラリ] に移動

  2. [API とサービスを検索] に「Traffic Director」と入力します。

  3. 検索結果のリストで、[Traffic Director API] をクリックします。Traffic Director API が表示されない場合、Traffic Director API を有効にするために必要な権限がないことを示しています。

  4. [Traffic Director API] ページで、[有効にする] をクリックします。

gcloud

次のコマンドを実行します。

gcloud services enable trafficdirector.googleapis.com

Cloud DNS API を有効にして Cloud DNS を構成する

Compute Engine で Traffic Director を構成する場合は、次の手順を使用します。DNS 名解決のために Cloud DNS API を有効にし、Cloud DNS を構成する必要があります。

Traffic Director と DNS の解決の背景情報については、Traffic Director と DNS の名前の解決をご覧ください。

まず、以下の手順に沿って Cloud DNS API を有効にします。

Console

  1. Google Cloud Console で、プロジェクトの [API ライブラリ] ページに移動します。

    [API ライブラリ] に移動

  2. [API とサービスを検索] に「DNS」と入力します。

  3. 検索結果のリストで、[Cloud DNS API] をクリックします。Cloud DNS API が表示されない場合、Cloud DNS API を有効にするために必要な権限がないことを示しています。

  4. [Cloud DNS API] ページで、[有効にする] をクリックします。

gcloud

次のコマンドを実行します。

gcloud services enable dns.googleapis.com

次に、Cloud DNS 限定公開マネージド ゾーンを構成します。限定公開ゾーンの作成の手順を行います。

サービス アカウントで Traffic Director API にアクセスする

データプレーンを設定して Traffic Director に接続すると、xDS クライアント(Envoy プロキシなど)が trafficdirector.googleapis.com xDS サーバーに接続されます。この xDS クライアントは、サービス アカウント ID を xDS サーバーに提示して、データプレーンとコントロール プレーン間の通信が適切に承認されるようにします。

  • Compute Engine VM の場合、xDS クライアントは、VM に割り当てられたサービス アカウントを使用します。
  • GKE の場合、Workload Identity が有効になっていないと、xDS クライアントは基盤となる GKE ノードに割り当てられたサービス アカウントを使用します。
  • Workload Identity が有効になっている場合、xDS クライアントは Pod に割り当てられた Kubernetes サービス アカウントにバインドされている Google サービス アカウントを使用します。

Envoy の構成に使用する xDS クライアントのバージョンに応じて、次の権限が必要です。新しい Envoy デプロイを xDS v3 で構成することを強くおすすめします。xDS v2 を使用する既存のデプロイがある場合は xDS v3 に移行することを強くおすすめします。

  • xDS v3 を使用する場合、クライアントが使用するサービス アカウントには trafficdirector.networks.reportMetrics 権限と trafficdirector.networks.getConfigs 権限が必要です。IAM Traffic Director Client ロールroles/trafficdirector.client)を使用して、両方の権限をラップできます。

  • xDS v2 を使用する場合、クライアントが使用するサービス アカウントにはプロジェクト レベルの IAM 権限 compute.globalForwardingRules.get が必要です。この権限は、Compute ネットワーク閲覧者ロールroles/compute.networkViewer)をサービス アカウントに割り当てることで付与することもできます。

コンソール

  1. Google Cloud コンソールで、[IAM と管理] ページに移動します。

    [IAM と管理] に移動

  2. プロジェクトを選択します。

  3. ロールを追加するサービス アカウントを特定します。

    • サービス アカウントがまだメンバーリストに含まれていない場合、サービス アカウントには何もロールが割り当てられていません。[追加] をクリックし、サービス アカウントのメールアドレスを入力します。
    • このサービス アカウントがすでにメンバーリストに含まれている場合、サービス アカウントには既存のロールがあります。サービス アカウントを選択して [ロール] タブをクリックします。
  4. ロールを展開します。編集するサービス アカウントで [編集] をクリックします。

  5. [その他] > [Traffic Director Client] のロールを選択します。

  6. ロールをサービス アカウントに適用するには、[保存] をクリックします。

gcloud

次のコマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT \
    --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
    --role=roles/trafficdirector.client

次のように置き換えます。

  • PROJECT: 「gcloud config get-value project」と入力します。
  • SERVICE_ACCOUNT_EMAIL: サービス アカウントに関連付けられたメール

設定プロセスを続行する

前提条件の手順を完了したら、サービス メッシュの設定を開始できます。