Anthos Service Mesh をインストールした後、デフォルトで有効になっているコントロール プレーンの機能は、プラットフォームによって異なります。オプション機能を有効にするには、Anthos Service Mesh をインストール(またはアップグレード)する際に、オーバーレイ ファイルを追加します。オーバーレイ ファイルは IstioOperator
カスタム リソース(CR)を含む YAML ファイルで、これを使用してコントロール プレーンを構成します。オーバーレイ ファイルでデフォルトの構成をオーバーライドすることにより、オプション機能を有効にします。複数のオーバーレイを重ねることができます。各オーバーレイ ファイルは、以前のレイヤの構成をオーバーライドします。
オーバーレイ ファイルについて
このページのオーバーレイ ファイルは、GitHub の anthos-service-mesh
パッケージにあります。これらのファイルには、デフォルト構成に対する一般的なカスタマイズが含まれています。これらのファイルはそのまま使用することも、必要に応じて変更を加えることもできます。
istioctl install
コマンドを使用して Anthos Service Mesh をインストールするときに、-f
コマンドライン オプションで 1 つ以上のオーバーレイ ファイルを指定できます。コマンドラインでistioctl install
に--set
オプションを使用して構成パラメータを指定することで構成を変更できますが、オーバーレイ ファイルを使用して他のカスタム リソース ファイルとともにバージョン管理システムに保存できるようにすることをおすすめします。アップグレード後もコントロール プレーンが同じ構成になるように、Anthos Service Mesh をアップグレードするまでこれらのファイルを保持する必要があります。Google が提供する
install_asm
スクリプトを使用して Anthos Service Mesh をインストールする場合は、--option
または--custom_overlay
オプションを指定します。anthos-service-mesh
リポジトリ内のファイルを変更する必要がない場合は、--option
を使用します。これにより、GitHub からファイルが取得されます。それ以外の場合は、オーバーレイ ファイルを変更してから、--custom_overlay
オプションを使用してinstall_asm
スクリプトに渡します。両方のオプションの使用例については、install_asm
の例をご覧ください。
1 つの YAML ファイルに複数の CR を含めないでください | CR ごとに別々の YAML ファイルを作成します |
---|---|
anthos-service-mesh
パッケージのダウンロード
anthos-service-mesh
パッケージをダウンロードするには:
次の手順では、kpt
を使用して GitHub リポジトリから asm
パッケージをダウンロードします。代わりに、git clone
を使用することもできます。
まだインストールしていない場合は、
kpt
をインストールします。gcloud components install kpt
ファイルが含まれているパッケージをダウンロードします。
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.8-asm asm
次の例では、
asm
パッケージが現在の作業ディレクトリにあることを前提としています。
例
Anthos Service Mesh のインストール時に機能を有効にする場合は、使用するコマンドがプラットフォームによって若干異なります。また、install_asm
スクリプトを使用するのか、istioctl install
コマンドを使用するのかによっても異なります。
次のすべてのコマンドは、istiod
にリビジョン ラベルを設定します。istiod
デプロイメント名は istiod-asm-186-8
に設定されます。リビジョン ラベルは istio.io/rev=asm-186-8
の形式になります。リビジョン ラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod
リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod
のリビジョン ラベルと一致するリビジョンのラベルを付けます。
GKE On-Prem で Egress ゲートウェイを有効にする
この例では、Anthos Service Mesh をインストールするまでの操作をオンプレミスへの Anthos Service Mesh のインストールの説明に従って完了していることを前提としています。このガイドでは、CTX_CLUSTER1
環境変数を設定し、cluster.yaml
を構成する手順について説明しています。cluster.yaml
に構成する設定の 1 つはリビジョンです。egressgateways.yaml
ファイルには、オプションの Egress ゲートウェイを有効にする構成が含まれています。
GKE on VMware に Anthos Service Mesh をインストールします。
istioctl install --context="${CTX_CLUSTER1}" \ -f cluster.yaml \ -f asm/istio/options/egressgateways.yaml
GKE on VMware インストール ガイドに戻って、新規のインストールに必要な検証 Webhook を構成してください。
コマンドラインでファイルを指定する順番に注意してください。最初に cluster.yaml
を指定します。これには、デフォルトの機能に必要な構成が含まれています。その後、オーバーレイ ファイルを指定します。
Google Cloud の GKE で Egress ゲートウェイを有効にする
install_asm
スクリプトを使用して、同じプロジェクトに 1 つ以上のクラスタを設定することをおすすめします。このスクリプトは、istiod
にリビジョン ラベルを設定します。この例では、GKE に Anthos Service Mesh をインストールするの手順に沿って、Anthos Service Mesh 1.8.6 をインストールする release-1.8-asm
ブランチに install_asm
スクリプトのバージョンをダウンロードしていることを前提としています。
install_asm
スクリプトを使用して Egress ゲートウェイをインストールするには:
./install_asm \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--mode install \
--enable_all \
--option egressgateways
このコマンドは、新規インストール用のスクリプトを実行し、Mesh CA を有効にします(これがインストールのデフォルト CA になります)。--enable_all
フラグを使用すると、このスクリプトで、必要な Google API の有効化、Identity and Access Management の権限の設定、GKE Workload Identity の有効化など、クラスタに必要な更新を行うことができます。このスクリプトは GitHub から egressgateways.yaml
ファイルを取得します。このファイルは、コントロール プレーンの構成に使用されます。
異なるプロジェクトの GKE クラスタで Egress ゲートウェイを有効にする
現在、install_asm
スクリプトでは、異なるプロジェクトにあるクラスタに Anthos Service Mesh をインストールすることはできません。
次のコマンドラインは、マルチプロジェクトのインストールと移行の説明に従って、Anthos Service Mesh をインストールするまでの操作を完了していることを前提としています。
次のコマンドを実行して Anthos Service Mesh をインストールします。
istioctl install \ -f asm/istio/istio-operator.yaml \ -f asm/istio/options/multiproject.yaml \ -f asm/istio/options/multicluster.yaml\ -f asm/istio/options/egressgateways.yaml \ --set revision=asm-186-8
次のファイルは
istio-operator.yaml
ファイルの設定をオーバーレイします。multiproject.yaml
ファイルは、マルチプロジェクト メッシュのデフォルト機能の指定に使用されます。これは、他のオーバーレイ ファイルより前に指定する必要があります。multicluster.yaml
ファイルは、マルチクラスタ構成で Anthos Service Mesh が必要とする設定を構成します。egressgateways.yaml
ファイルによって、Egress ゲートウェイが構成されます。
マルチ プロジェクト インストール ガイドに戻って、新しいインストールに必要な検証 Webhook を構成してください。
オプション機能の YAML
以降のセクションでは、オプション機能とサポートされている機能を有効にするための YAML について説明します。
mTLS STRICT
モード
アップグレードでの問題を防ぎ、柔軟性の高いインストールを可能にするため、global.mtls.enabled
構成は削除されました。STRICT
mTLS を有効にするには、代わりにピア認証ポリシーを構成してください。
Envoy を stdout に出力する
詳細については、Envoy のアクセス ロギングを有効にするをご覧ください。
Cloud Trace
GKE でインストールする場合は、Cloud Trace を有効にできます。料金の詳細については、Cloud Trace の料金ページをご覧ください。
デフォルトのサンプリング レートは 1% ですが、tracing.sampling
値を指定してデフォルトをオーバーライドできます。値は 0.01 単位で、0.0~100.0 の範囲から設定してください。たとえば、10,000 件ごとに 5 件のリクエストをトレースするには、0.05 を使用します。
次の例は、100& のサンプリング レートを示しています(この操作は、デモまたはトラブルシューティングの目的でのみ行います)。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing:
sampling: 100
values:
global:
proxy:
tracer: stackdriver
現在、トレーサー構成はプロキシ ブートストラップ構成の一部になっているため、トレーサーの更新を取得するためには、Pod を再起動して、再挿入する必要があります。たとえば、次のコマンドを使用すると、再起動 Pod をデプロイメントに入れることができます。
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
トレース コンテキストの伝播
サイドカー プロキシは、トレーススパンを自動的に送信できますが、トレース全体を関連付けるにはなんらかの情報が必要になります。このため、プロキシがスパン情報の送信時にスパンを 1 つのトレースに正しく関連付けられるように、適切な HTTP ヘッダーを伝播する必要があります。
これを行うには、受信リクエストから次のヘッダーを収集し、発信リクエストに反映する必要があります。
- x-request-id
- x-b3-traceid
- x-b3-spanid
- x-b3-parentspanid
- x-b3-sampled
- x-b3-flags
- x-ot-span-context
- x-cloud-trace-context
- traceparent
- grpc-trace-bin
ヘッダーの伝播例については、トレース コンテキストの伝播をご覧ください。
カスタム ID を使用してクライアントからトレースを作成する
カスタム ID を使用してクライアントからトレースを作成するには、curl
コマンドを使用して外部クライアントを含むリクエストを作成し、強制的にトレースを表示します。次に例を示します。
curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"
x-client-trace-id
の詳細については、Envoy のドキュメントをご覧ください。
Egress ゲートウェイ経由の下り(外向き)
詳細については、Egress ゲートウェイをご覧ください。
Istio Container Network Interface
Istio Container Network Interface(CNI)を有効にする方法は、Anthos Service Mesh がインストールされている環境によって異なります。また、ネットワーク ポリシーを有効にする必要があります。
GKE で CNI を有効にする
GKE on VMware で CNI を有効にする
内部ロードバランサを有効にする
GKE でインストールする場合は、Istio Ingress ゲートウェイの内部ロードバランサを有効にできます。
Ingress ゲートウェイの外部証明書の管理
Envoy の SDS を使用して Ingress ゲートウェイで外部証明書の管理を有効にする方法については、セキュア ゲートウェイをご覧ください。