このガイドでは、次のプラットフォーム向けにマルチクラスタ メッシュを設定する方法について説明します。
- GKE on VMware
- Google Distributed Cloud Virtual for Bare Metal
- GKE on AWS
- Amazon EKS
このガイドでは 2 つのクラスタを設定する方法について説明しますが、このプロセスを拡張して任意の数のクラスタをメッシュに組み込むこともできます。
始める前に
このガイドでは、asmcli install
を使用して Anthos Service Mesh がインストールされていることを前提としています。asmcli
と、asmcli install
の実行時に --output_dir
で指定したディレクトリに asmcli
がダウンロードする構成パッケージが必要です。設定が必要な場合は、スタートガイドの手順に沿ってください。
メッシュで設定するすべてのクラスタの kubeconfig ファイルにアクセスする必要があります。
環境変数とプレースホルダを設定する
east-west ゲートウェイをインストールするには、次の環境変数が必要です。
プロジェクト番号の環境変数を作成します。次のコマンドで、FLEET_PROJECT_ID をフリート ホスト プロジェクトのプロジェクト ID に置き換えます。
export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
メッシュ ID の環境変数を作成します。
export MESH_ID="proj-${PROJECT_NUMBER}"
クラスタ名の環境変数を、
asmcli
に必要な形式で作成します。export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1" export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
east-west ゲートウェイをインストールする
次のコマンドで、
CLUSTER_NAME_1
とCLUSTER_NAME_2
をクラスタの名前に置き換えます。PATH_TO_KUBECONFIG_1
とPATH_TO_KUBECONFIG_2
をクラスタの kubeconfig ファイルに置き換えます。
Mesh CA
east-west トラフィック専用の cluster1 内のゲートウェイを
$CLUSTER_2
にインストールします。デフォルトでは、このゲートウェイはインターネット上で公開されます。本番環境のシステムでは、外部からの攻撃を防ぐため、追加のアクセス制限(ファイアウォール ルールなど)が必要になる場合があります。asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_1} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
$CLUSTER_1
用の east-west トラフィック専用の$CLUSTER_2
内のゲートウェイをインストールします。asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_2} \ --network default \ --revision asm-1118-4 | \ istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
Istio CA
east-west トラフィック専用の cluster1 内のゲートウェイを
$CLUSTER_2
にインストールします。デフォルトでは、このゲートウェイはインターネット上で公開されます。本番環境のシステムでは、外部からの攻撃を防ぐため、追加のアクセス制限(ファイアウォール ルールなど)が必要になる場合があります。asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_1} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
$CLUSTER_1
用の east-west トラフィック専用の$CLUSTER_2
内のゲートウェイをインストールします。asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_2} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
サービスの公開
クラスタは別々のネットワーク上にあるため、すべてのサービス(*.local
)を両方のクラスタの east-west ゲートウェイ上で公開する必要があります。このゲートウェイはインターネットで一般公開されますが、その背後にあるサービスは、信頼できる mTLS 証明書とワークロード ID を持つサービスのみが、両者が同じネットワーク上にあるかのように、アクセスできます。
CLUSTER_NAME_1
用の east-west ゲートウェイ経由でサービスを公開します。kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
CLUSTER_NAME_2
用の east-west ゲートウェイ経由でサービスを公開します。kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
エンドポイント ディスカバリを有効にする
asmcli create-mesh
コマンドを実行して、エンドポイント ディスカバリを有効にします。この例では 2 つのクラスタのみが示されていますが、このコマンドを実行して、フリートに追加できるクラスタの最大数の制限対象となる追加のクラスタで、エンドポイントの検出を有効にできます。
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2