オプション機能の有効化

Anthos Service Mesh をインストールする場合は、環境に応じて、構成プロファイルを指定するか、プロファイルを設定するためのオーバーレイ ファイルを指定します。構成プロファイルは、IstioOperator API を使用する YAML ファイルです。構成プロファイルは、Anthos Service Mesh でインストールされる機能を定義して構成します。Anthos Service Mesh プロファイルは、empty プロファイル(つまり設定なし)または Istio default プロファイルのどちらかのオーバーレイです。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 カスタム リソース(CR)を含む YAML ファイルです。これを使用して、コントロール プレーンを構成します。デフォルトの構成をオーバーライドして、オーバーレイ ファイル内でサポートされているオプションの機能を有効にできます。複数のオーバーレイを重ねることができます。各オーバーレイ ファイルは、以前のレイヤの構成をオーバーライドします。

istioctl install コマンドを使用して Anthos Service Mesh をインストールまたはアップグレードする場合は、コマンドラインで -f コマンドライン オプションを使用して 1 つ以上のオーバーレイ ファイルを指定できます。

1 つの YAML ファイルに複数の CR を含めないでください CR ごとに別々の YAML ファイルを作成します
1 つの yaml に複数の CR CR ごとに別々の yaml ファイル

構成はコマンドラインで --set オプションを使用して istioctl install に設定することで変更できますが、バージョン管理システムと、他のリソース定義ファイルに保存できるように、オーバーレイ ファイルを使用することをおすすめします。Anthos Service Mesh をアップグレードする際は、サービス メッシュがアップグレード後にも同じ構成を維持するよう、これらのファイルを保持する必要があります。

このページのオーバーレイ ファイルは、GitHub の asm パッケージにあります。これらのファイルには、プロファイルの一般的なカスタマイズが含まれています。これらのファイルはそのまま使用することも、必要に応じて変更を加えることもできます。構成のカスタマイズで説明しているように、独自のオーバーレイ ファイルを作成することもできます。

Google が提供する install_asm スクリプトを使用して Anthos Service Mesh をインストールする場合は、--option または --custom_overlay を使用します。ファイルを変更する必要がない場合は、--option を使用します。このスクリプトは GitHub からファイルを取得します。それ以外の場合は、オーバーレイ ファイルを変更してから、--custom_overlay オプションを使用して install_asm スクリプトに渡すことができます。両方のオプションの使用例については、install_asm の例をご覧ください。

asm パッケージをダウンロードする手順は、次のとおりです。

次の手順では、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.7-asm asm
    

Anthos Service Mesh のインストールまたはアップグレード時に機能を有効にするには、プロファイルを設定するプロファイルまたはオーバーレイ ファイルと、有効にする機能のファイルの両方を格納する必要があります。正確なコマンドは、ご使用の環境と、install_asm スクリプトまたは istioctl install コマンドのどちらを使用するかによって若干異なります。

次のすべてのコマンドは、istiod にリビジョン ラベルを設定します。リビジョン ラベルの形式は、istio.io/rev=asm-178-10 です。リビジョン ラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod のリビジョン ラベルと一致するリビジョンのラベルを付けます。

GKE On-Prem で Egress ゲートウェイを有効にする

この例では、オンプレミスへの Anthos Service Mesh のインストールガイドを、Anthos Service Mesh をインストールする手順まで実行し、さらに asm パッケージが現在の作業ディレクトリに存在することを想定しています。egressgateways.yaml ファイルには、Egress ゲートウェイを有効にする構成が含まれています。

  1. GKE on VMware に Anthos Service Mesh をインストールします。

    istioctl install \
      --set profile=asm-multicloud \
      -f asm/istio/options/egressgateways.yaml \
      --set revision=asm-178-10
    
  2. GKE on VMware インストール ガイドに戻って、新規のインストールに必要な検証 Webhook を構成してください。

Google Cloud の GKE で Egress ゲートウェイを有効にする

install_asm スクリプトを使用して、スタンドアロン クラスタまたは同じプロジェクト内の複数のクラスタを設定することをおすすめします。このスクリプトは asm-gcp プロファイルを使用し、istiod にリビジョン ラベルを設定します。この例では、GKE に Anthos Service Mesh をインストールするのガイドに沿って、Anthos Service Mesh 1.7.8 をインストールする release-1.7-asm ブランチに install_asm スクリプトのバージョンをダウンロードしていることを前提としています。

install_asm スクリプトを使用して Egress ゲートウェイをインストールするには:

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --mode install \
  --enable_apis \
  --option egressgateways

このコマンドは、新規インストール用のスクリプトを実行し、asm-gcp プロファイルを設定して、Anthos Service Mesh で必要なオプションを使用してクラスタを構成し、Mesh CA(新規インストールのデフォルト認証局)を有効にします。これにより、スクリプトは必要な Google API を有効にして、GitHub から egressgateways.yaml を取得できるようになります。

異なるプロジェクトの GKE クラスタで Egress ゲートウェイを有効にする

現在のところ、install_asm スクリプトは、asm-gcp-multiproject プロファイルを使用する Anthos Service Mesh のインストールをサポートしていません。Anthos Service Mesh 用に複数のクラスタを別のプロジェクトに構成する場合、このプロファイルが必要です。

次のコマンドラインでは、マルチ プロジェクトのインストールと移行のすべての手順を、Anthos Service Mesh をインストールするところまで実行済みで、asm パッケージが現在の作業ディレクトリに存在することを前提としています。

  1. 次のコマンドを実行して 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-178-10
    

    次のファイルは istio-operator.yaml ファイルの設定をオーバーレイします。

    • multiproject.yaml ファイルは asm-gcp-multiproject プロファイルを設定します。このファイルはプロファイルを設定するため、他のオーバーレイ ファイルの前に指定する必要があります。

    • multicluster.yaml ファイルは、マルチクラスタ構成で Anthos Service Mesh が必要とする設定を構成します。

    • egressgateways.yaml ファイルによって、Egress ゲートウェイが構成されます。

  2. マルチ プロジェクト インストール ガイドに戻って、新しいインストールに必要な検証 Webhook を構成してください。

オプション機能の YAML

以降のセクションでは、オプション機能とサポートされている機能を有効にするための 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% ですが、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

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

サイドカー プロキシは、トレーススパンを自動的に送信できますが、トレース全体を関連付けるにはなんらかの情報が必要になります。このため、プロキシがスパン情報の送信時にスパンを 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 がインストールされている環境によって異なります。また、ネットワーク ポリシーを有効にする必要があります。

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 を有効にする

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 ゲートウェイで外部証明書の管理を有効にする方法については、セキュア ゲートウェイをご覧ください。