クラスタ内コントロール プレーンでオプション機能を有効にする

このページでは、クラスタ内コントロール プレーンでオプション機能を有効にする方法について説明します。Google 管理のコントロール プレーンの詳細については、Google 管理のコントロール プレーンの構成をご覧ください。

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 ごとに別々のオーバーレイ ファイルを作成します
1 つの yaml に複数の CR CR ごとに別々の yaml ファイル

anthos-service-mesh パッケージのダウンロード

anthos-service-mesh パッケージをダウンロードするには:

次の手順では、kpt を使用して GitHub リポジトリから asm パッケージをダウンロードします。代わりに、git clone を使用することもできます。

  1. まだインストールしていない場合は、kpt をインストールします。

    gcloud components install kpt
    
  2. ファイルが含まれているパッケージをダウンロードします。

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm 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 に出力する

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

詳細については、Envoy のアクセス ロギングを有効にするをご覧ください。

Cloud Trace

GKE でインストールする場合は、Cloud Trace を有効にできます。料金の詳細については、Cloud Trace の料金ページをご覧ください。

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

デフォルトのサンプリング レートは 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 ゲートウェイ経由の下り(外向き)

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    egressGateways:
      - name: istio-egressgateway
        enabled: true

詳細については、Egress ゲートウェイをご覧ください。

Istio Container Network Interface

Istio Container Network Interface(CNI)を有効にする方法は、Anthos Service Mesh がインストールされている環境によって異なります。

  1. ネットワーク ポリシーを有効にします

  2. 実際のプラットフォームに合ったオーバーレイ ファイルを選択します。

GKE で CNI を有効にする

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

オンプレミスで CNI を有効にする

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

内部ロードバランサを有効にする

GKE でインストールする場合は、Istio Ingress ゲートウェイの内部ロードバランサを有効にできます。

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          serviceAnnotations:
            cloud.google.com/load-balancer-type: "internal"
          service:
            ports:
              - name: status-port
                port: 15020
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443

Ingress ゲートウェイの外部証明書の管理

Envoy の SDS を使用して Ingress ゲートウェイで外部証明書の管理を有効にする方法については、セキュア ゲートウェイをご覧ください。