このガイドでは、複数の GKE on VMware とベアメタル版 Anthos クラスタを使用して Anthos Service Mesh を設定する方法について説明します。このプロセスを拡張することで、任意の数のクラスタをメッシュに組み込むことができます。
このガイドは、オンプレミスへの Anthos Service Mesh のインストールで説明されている手順を使用して、すでに GKE on VMware またはベアメタル版 Anthos クラスタがインストールされていることを前提としています。以前のバージョンの Anthos Service Mesh がインストールされている場合は、オンプレミスでの Anthos Service Mesh のアップグレードをご覧ください。このガイドでは、クラスタは network1
では cluster1
、network2
では cluster2
を指します。また、環境変数を使用して、CTX_CLUSTER1
と CTX_CLUSTER2
としてクラスタ コンテキストを定義します。
マルチクラスタの Anthos Service Mesh 構成を使用すると、大規模な組織で重要な課題(スケール、ロケーション、分離など)を解決できます。詳細については、マルチクラスタのユースケースをご覧ください。また、サービス メッシュを最大限活用するため、アプリケーションを最適化する必要があります。詳細については、Anthos Service Mesh 用のアプリケーションの準備をご覧ください。
要件
このガイドは、Anthos Service Mesh オンプレミスのインストールで示される手順を使用して作成された、新規または既存のクラスタを使用していることを前提としています。
Anthos Service Mesh オンプレミスのインストールにある要件の他に、このガイドの要件を満たす必要があります。
クラスタに Anthos Service Mesh をインストールする際に使用した構成パッケージが必要です。別のコピーが必要な場合は、次のコマンドを使用してダウンロードできます。
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
east-west ゲートウェイのインストール
east-west トラフィック専用のゲートウェイを cluster1 にインストールします。デフォルトでは、このゲートウェイはインターネット上で公開されます。本番環境のシステムでは、外部からの攻撃を防ぐため、追加のアクセス制限(ファイアウォール ルールなど)が必要になる場合があります。
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh mesh1 --cluster cluster1 --network network1 --revision asm-1118-4 | \ istioctl --context="${CTX_CLUSTER1}" install -y -f -
cluster1 用の east-west トラフィック専用のゲートウェイを cluster2 にインストールします。
/asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh mesh1 --cluster cluster2 --network network2 | \ istioctl --context="${CTX_CLUSTER2}" install -y -f -
サービスの公開
クラスタは別々のネットワーク上にあるため、すべてのサービス(*.local
)を両方のクラスタの east-west ゲートウェイ上で公開する必要があります。このゲートウェイはインターネットで一般公開されますが、その背後にあるサービスは、信頼できる mTLS 証明書とワークロード ID を持つサービスのみが、両者が同じネットワーク上にあるかのように、アクセスできます。
cluster1 用の east-west ゲートウェイ経由でサービスを公開します。
kubectl --context="${CTX_CLUSTER1}" apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
cluster2 用の east-west ゲートウェイ経由でサービスを公開します。
kubectl --context="${CTX_CLUSTER2}" apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
エンドポイント検出の有効化
cluster1 の API サーバーへのアクセスを提供するリモート シークレットを cluster2 にインストールします。
istioctl x create-remote-secret \ --context="${CTX_CLUSTER1}" \ --name=cluster1 | \ kubectl apply -f - --context="${CTX_CLUSTER2}"
cluster2 の API サーバーへのアクセスを提供するリモート シークレットを cluster1 にインストールします。
istioctl x create-remote-secret \ --context="${CTX_CLUSTER2}" \ --name=cluster2 | \ kubectl apply -f - --context="${CTX_CLUSTER1}"