オプション機能の有効化

Anthos Service Mesh をインストールするときに、構成プロファイルを指定します。構成プロファイルは、Anthos Service Mesh でインストールされる機能を定義して構成する YAML ファイルです。Anthos Service Mesh では、次のプロファイルが提供されています。

  • asm-gcp: すべての GKE クラスタが同じプロジェクトにある場合は、このプロファイルを使用します。このプロファイルを使用して Anthos Service Mesh をインストールすると、次の機能が有効になります。

  • asm-gcp-multiproject: このプロファイルは、GKE クラスタが共有 Virtual Private Cloud にあり、別のプロジェクトのクラスタを Anthos Service Mesh に追加する場合に使用します。asm-gcp-multiproject プロファイルを使用して Anthos Service Mesh をインストールする場合:

    • Google Cloud コンソールの Anthos Service Mesh ダッシュボードは現在利用できません。ただし、プロジェクトごとに Cloud Logging でログを表示し、Cloud Monitoring で指標を表示できます。

    • asm-gcp-multiproject 構成プロファイルでサポートされるデフォルト機能が有効になります(サポートされている機能を参照)。

  • asm-multicloud: このプロファイルは、GKE on VMware、GKE on AWS、Amazon Elastic Kubernetes Service(Amazon EKS)、Microsoft Azure Kubernetes Service(Microsoft AKS)など、他のサポートされている環境のクラスタに使用します。asm-multicloud.yaml プロファイルを使用して Anthos Service Mesh をインストールすると、asm-multicloud 構成プロファイルでサポートされているデフォルト機能が有効になります(サポートされている機能ページを参照)。

これらのプロファイルは、Anthos Service Mesh インストールのルート ディレクトリ内の manifests/profiles サブディレクトリにあります。

構成プロファイルをオーバーライドして、サポートされているオプション機能を有効にするには、IstioOperator API を使用します。IstioOperator 構成は YAML ファイル(feature.yaml など)に指定します(YAML ファイルの名前は関係ありません)。

構成はプロファイルで変更できます。また、コマンドラインで、構成パラメータに --set オプションを使用して変更することもできますが、他のリソース構成ファイルとともにバージョン管理システムに保存できるので、IstioOperator 構成 YAML ファイルを使用することをおすすめします。オプション機能を有効にする場合、コマンドラインで複数のファイルを指定できます。

Anthos Service Mesh のインストールまたはアップグレード時に機能を有効にするには、有効にする機能のプロファイルと YAML ファイルの両方を含める必要があります。これらの例では、インストール ガイドまたはアップグレード ガイドの説明に従い、Anthos Service Mesh をインストールするところまでを完了していることを前提としています。

Egress ゲートウェイを有効にする

この例では、GKE on VMware で Egress ゲートウェイを有効にする方法を説明します。

  1. 次の YAML を feature.yaml にコピーしてファイルを保存します。

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        egressGateways:
          - name: istio-egressgateway
            enabled: true
  2. GKE on VMware に Anthos Service Mesh をインストールするには、次のコマンドラインの REVISION をインストール対象の Anthos Service Mesh の正確なバージョン(asm-1614-2 など)に置き換えます。

    istioctl install \
      --set profile=asm-multicloud \
      --set revision=REVISION \
      -f feature.yaml

トレースを有効にする

以下の例は、GKE で Cloud Trace を有効にする方法を示します。

GKE でインストールとアップグレードを行うには、istio-operator.yaml を準備する必要があります。これには、プロジェクトとクラスタに関する情報が含まれています。istio-operator.yaml を構成するときに、使用するプロファイル(asm-gcp または asm-gcp-multiproject)を設定します。このプロファイルは istio-operator.yaml で構成されているため、コマンドラインでプロファイルを指定する必要はありませんが、わかりやすくするため、指定することもできます。

  1. 次の YAML を feature.yaml にコピーしてファイルを保存します。

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
      values:
        global:
           proxy:
             tracer: stackdriver
  2. GKE に Anthos Service Mesh をインストールするには、コマンドラインで以下の操作を行います。

    • PROFILE は、使用しているプロファイル(asm-gcp または asm-gcp-multiproject)に置き換えます。
    • REVISION は、インストールする Anthos Service Mesh の正確なバージョン(例: asm-1614-2)に置き換えます。
    istioctl install \
     -f asm/cluster/istio-operator.yaml \
     --set profile=PROFILE \
     --set revision=REVISION \
     -f feature.yaml

オプション機能の YAML

以降のセクションでは、オプション機能とサポートされている機能を有効にするための YAML について説明します。オプション機能を有効にする場合は、有効にする機能のプロファイルと YAML ファイルの両方をコマンドラインで指定する必要があります。GKE の場合、プロファイルは istio-operator.yaml に構成されます。

mTLS STRICT モード

アップグレードでの問題を防ぎ、柔軟性の高いインストールを可能にするため、global.mtls.enabled 構成は削除されました。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% ですが、traceSampling 値を指定してデフォルトをオーバーライドできます。値は 0.01 単位で、0.0~100.0 の範囲から設定してください。たとえば、10,000 件ごとに 5 件のリクエストをトレースするには、0.05 を使用します。

次の例は、100& のサンプリング レートを示しています(この操作は、デモまたはトラブルシューティングの目的でのみ行います)。

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

トレース コンテキストの伝播

サイドカー プロキシは、トレーススパンを自動的に送信できますが、トレース全体を関連付けるにはなんらかの情報が必要になります。このため、プロキシがスパン情報の送信時にスパンを 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

ヘッダーの伝播例については、トレース コンテキストの伝播をご覧ください。

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 がインストールされている環境によって異なります。また、ネットワーク ポリシーを有効にする必要があります。

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

GKE on VMware で CNI を有効にする

GKE on VMware の場合は、gke-systemexcludeNamespaces に追加し、values.cni.cniBinDir/opt/cni/bin です。

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 ゲートウェイの内部ロードバランサを有効にできます。次の YAML で、PROFILE は、使用しているプロファイル(asm-gcp または asm-gcp-multiproject)に置き換えます。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: PROFILE
  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
              - name: https
                port: 443

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

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