このページでは、クラスタ内コントロール プレーンでオプション機能を有効にする方法について説明します。Google 管理のコントロール プレーンについては、マネージド Anthos Service Mesh でオプション機能を有効にするをご覧ください。
Anthos Service Mesh をインストールする際、デフォルトで有効になる機能はプラットフォームによって異なります。オプション機能を有効にするには、Anthos Service Mesh をインストール(またはアップグレード)する際に、オーバーレイ ファイルを追加します。オーバーレイ ファイルは IstioOperator
カスタム リソース(CR)を含む YAML ファイルで、これを使用してコントロール プレーンを構成します。オーバーレイ ファイルでデフォルトの構成をオーバーライドして、オプション機能を有効にする、またはデフォルトの機能を無効にすることができます。オーバーレイ ファイルごとに機能を 1 つずつ指定します。複数のオーバーレイを重ねることができます。各オーバーレイ ファイルは、以前のレイヤの構成をオーバーライドします。
オーバーレイ ファイルについて
このページのオーバーレイ ファイルは、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
オプションで 1 つ以上のオーバーレイ ファイルを指定できます。anthos-service-mesh
リポジトリ内のファイルを変更する必要がない場合は、--option
を使用します。これにより、GitHub からファイルが取得されます。それ以外の場合は、オーバーレイ ファイルを変更してから、--custom_overlay
オプションを使用してinstall_asm
スクリプトに渡します。
1 つのオーバーレイ ファイルに複数の CR を含めないでください | CR ごとに別々のオーバーレイ ファイルを作成します |
---|---|
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.11 asm
次の例では、
asm
パッケージが現在の作業ディレクトリにあることを前提としています。
オプション機能を有効にする方法
Anthos Service Mesh のインストール時に機能を有効にする場合は、使用するコマンドがプラットフォームによって若干異なります。また、install_asm
スクリプトを使用するのか、istioctl install
コマンドを使用するのかによっても異なります。
次の例は、オプション機能を有効にすることを目的とした、カスタム オーバーレイの使用についてのみ示すため簡略化されています。OTHER_FLAGS
は、使用しているインストール ガイドのコマンドライン オプションに置き換えます。
install_asm
スクリプトの使用
install_asm
スクリプトには、オプション機能を有効にする 2 つの方法があります。使用するメソッドは、オーバーレイ ファイルに変更を加える必要があるかどうかによって異なります。
オーバーレイ ファイルを変更する必要がない場合は、
--option
を使用します。--option
では、install_asm
は GitHub リポジトリからファイルを取得するため、インターネットに接続している必要があります。./install_asm \ OTHER_FLAGS \ --option OPTION_NAME
OPTION_NAME
は、有効にするオプションに置き換えます。オプションの一覧については、anthos-service-mesh
パッケージをご覧ください。オーバーレイ ファイルをカスタマイズする必要がある場合は、
--custom_overlay
を使用します。./install_asm \ OTHER_FLAGS \ --custom_overlay PATH_TO_FILE
PATH_TO_FILE
は、使用するオーバーレイ ファイルのパスに置き換えます。
istioctl install
コマンドを使用する
GKE のマルチプロジェクト インストールや、GKE on VMware など、Google Cloud 上にないプラットフォームには、istioctl install
コマンドを使用します。
-f
を使用して、オーバーレイ ファイルを含めます。このファイルには、カスタマイズを行う、またはカスタム オーバーレイ ファイルを使用することは必要なく、anthos-service-mesh
パッケージのオーバーレイ ファイルを使用できます。istioctl install \ OTHER_FLAGS \ -f PATH_TO_FILE
PATH_TO_FILE
は、使用するオーバーレイ ファイルのパスに置き換えます。
オプション機能の YAML
以降のセクションでは、オプション機能とサポートされている機能を有効にするための YAML について説明します。
mTLS STRICT
モード
アップグレードでの問題を防ぎ、柔軟性の高いインストールを可能にするため、global.mtls.enabled
構成は IstioOperator
CR から削除されました。STRICT
mTLS を有効にするには、代わりにピア認証ポリシーを構成してください。
Envoy を stdout に出力する
詳細については、Envoy のアクセス ロギングを有効にするをご覧ください。
Cloud Trace
Cloud Trace は、次のプラットフォームの Anthos Service Mesh インストールでご利用いただけます。
- Google Cloud 上の GKE
- Anthos Service Mesh 認証局(Mesh CA)を使用してインストールする場合、オンプレミスの GKE Enterprise クラスタ
料金の詳細については、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 を再起動して、再挿入する必要があります。たとえば、次のコマンドを使用して Deployment に属する Pod を再起動します。
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
トレース コンテキストの伝播
サイドカー プロキシは、トレーススパンを自動的に送信できますが、トレース全体を関連付けるにはなんらかの情報が必要になります。このため、プロキシがスパン情報の送信時にスパンを 1 つのトレースに正しく関連付けられるように、適切な HTTP ヘッダーを伝播する必要があります。
これを行うには、受信リクエストから適切なヘッダーを収集し、発信リクエストに反映する必要があります。Anthos Service Mesh Stackdriver のトレース構成は、次のいずれかのヘッダー形式を受け入れ、次のすべての形式を伝播します。
- B3(
x-b3-traceid
、x-b3-spanid
、x-b3parentspanid
、x-b3-sampled
、x-b3-flags
) - W3C TraceContext(
traceparent
) - Google Cloud Trace(
x-cloud-trace-context
) - gRPC TraceBin(
grpc-trace-bin
)
アプリケーションは、これらの形式のいずれかを使用してトレース コンテキストを伝播できます。これにより、トレースを適切に生成して Stackdriver に設定できます。
例
元のリクエストの traceparent
ヘッダーを使用した HTTP-Get リクエストの例を次に示します。プロキシによって追加されたトレース コンテキストのヘッダーに注意してください。
$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
* Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
"args": {
"freeform": ""
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
"Host": "httpbin:8000",
"Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
"User-Agent": "curl/7.80.0-DEV",
"X-B3-Sampled": "1",
"X-B3-Spanid": "a0c798646d74cef0",
"X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
"X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
"X-Envoy-Attempt-Count": "1",
"X-Forwarded-Client-Cert": "<REDACTED>"
},
"json": null,
"method": "GET",
"origin": "127.0.0.6",
"url": "http://httpbin:8000/anything?freeform="
}
返されたリクエスト ヘッダーのセットには、トレース コンテキスト ヘッダーの完全なセットが含まれています。
ヘッダーの伝播例については、トレース コンテキストの伝播をご覧ください。
カスタム ID を使用してクライアントからトレースを作成する
カスタム ID を使用してクライアントからトレースを作成するには、curl
コマンドを使用して外部クライアントを含むリクエストを作成し、強制的にトレースを表示します。次に例を示します。
curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"
x-client-trace-id
の詳細については、Envoy のドキュメントをご覧ください。
Istio Container Network Interface
Istio Container Network Interface(CNI)を有効にする方法は、Anthos Service Mesh がインストールされている環境によって異なります。
実際のプラットフォームに合ったオーバーレイ ファイルを選択します。
GKE で CNI を有効にする
オンプレミスで CNI を有効にする
内部ロードバランサを有効にする
GKE でインストールする場合は、Istio Ingress ゲートウェイの内部ロードバランサを有効にできます。
Ingress ゲートウェイの外部証明書の管理
Envoy の SDS を使用して Ingress ゲートウェイで外部証明書の管理を有効にする方法については、セキュア ゲートウェイをご覧ください。