このトピックでは、ASMリモートコントロールプレーン機能を使用した後に、クラスター間の相互アクセスを実現する方法について説明します。
前提条件
「ASM のリモートコントロールプレーンを使用してプッシュレイテンシーを削減する」のすべてのステップを完了していること。このトピックでは、cluster-1 は ASM のマネージドコントロールプレーンによって管理される Alibaba Cloud Container Service for Kubernetes (ACK) クラスターを表し、cluster-2 は ASM のリモートコントロールプレーンによって管理される非 ACK クラスターを表します。
このトピックのステップでは、kubeconfig ファイルを切り替える必要があります。cluster-1 と cluster-2 の kubeconfig ファイルを同じ設定ファイルに追加し、
kubectl config use-contextコマンドを使用してクラスターを切り替えます。また、kubecm または kubectx を使用して、複数のクラスターの kubeconfig ファイルを管理することもできます。クラスターネットワークと East-West ゲートウェイを設定し、cluster-1 と cluster-2 の両方に httpbin および sleep アプリケーションをデプロイしていること。詳細については、「ASM East-West ゲートウェイを使用してマルチクラスターのクロスネットワーク相互接続を実現する」をご参照ください。
ステップ 1: cluster-1 から cluster-2 へのアクセスのテスト
cluster-1 の kubeconfig ファイルを使用して、次のコマンドを実行します。このコマンドは、テスト目的で cluster-1 の httpbin アプリケーションを 0 レプリカにスケールします。
kubectl scale deployment httpbin --replicas 0cluster-1 の kubeconfig ファイルを使用して、次のコマンドを実行し、cluster-1 の sleep アプリケーションから httpbin アプリケーションにアクセスします。
kubectl exec deployment/sleep -it -- curl httpbin:8000/status/418期待される出力:
-=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`出力は、アクセスが成功したことを示します。リクエストは cluster-2 の httpbin アプリケーションによって処理され、通信は相互 Transport Layer Security (mTLS) を使用して暗号化されます。
ステップ 2:cluster-2 から cluster-1 へのアクセスをテストする
次の YAML ファイルを使用して、cluster-1 に ClusterRole および ClusterRoleBinding リソースを作成します。cluster-2 のリモートコントロールプレーンは、この ClusterRole を使用して cluster-1 からサービス情報を取得します。
kubectl コンテキストを設定していることを確認します。cluster-1 のコンテキストは cluster-1 という名前で、cluster-2 のコンテキストは cluster-2 という名前でなければなりません。
istioctl ツールをインストールします。istioctl のバージョンが ASM のバージョンと互換性があることを確認してください。作業ディレクトリを解凍した istio フォルダに切り替えて、次のコマンドを実行します。
# <YOUR_CLUSTER1_ID> を cluster-1 の ID に置き換えます。 bin/istioctl create-remote-secret \ --context=cluster-1 \ --name=<YOUR_CLUSTER1_ID> | \ kubectl apply -f - --context=cluster-2このステップを完了すると、cluster-2 の istio-system 名前空間にシークレットが生成されます。このシークレットには、cluster-1 への接続に使用されるアクセス資格情報が含まれています。このシークレットが漏洩しないように、権限を管理してください。
cluster-1 の kubeconfig ファイルを使用して、次のコマンドを実行し、httpbin アプリケーションのレプリカ数を 1 に変更します。
kubectl scale deployment httpbin --replicas 1cluster-2 の kubeconfig ファイルを使用して、次のコマンドを実行し、httpbin アプリケーションのレプリカ数を 0 に変更します。
kubectl scale deployment httpbin --replicas 0cluster-2 の kubeconfig ファイルを使用して、次のコマンドを実行し、cluster-2 から cluster-1 の httpbin アプリケーションへのアクセスをテストします。
kubectl exec deployment/sleep -it -- curl httpbin:8000/status/418期待される出力:
-=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`