5.3. マルチプライマリーマルチネットワークメッシュのインストール
2 つの OpenShift Container Platform クラスターのマルチプライマリーマルチネットワークトポロジーに Istio をインストールします。
この手順では、CLUSTER1
は East クラスター、CLUSTER2
は West クラスターです。
これらの手順は、2 つ以上のクラスターにまたがるメッシュに適応できます。
前提条件
- メッシュを構成するすべてのクラスターに OpenShift Service Mesh 3 Operator をインストールした。
- 「マルチクラスターメッシュの証明書の作成」を完了した。
- 「マルチクラスタートポロジーへの証明書の適用」を完了した。
- Istio Container Network Interface (CNI) リソースを作成した。
-
この手順を実行するために使用できるノートパソコンに
istioctl
をインストールした。
手順
以下のコマンドを実行して、インストールする Istio バージョンを定義する
ISTIO_VERSION
環境変数を作成します。export ISTIO_VERSION=1.24.3
$ export ISTIO_VERSION=1.24.3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Istio を East クラスターにインストールします。
次のコマンドを実行して、East クラスターに
Istio
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コントロールプレーンが
Ready
ステータス条件を返すまで待機します。oc --context "${CTX_CLUSTER1}" wait --for condition=Ready istio/default --timeout=3m
$ oc --context "${CTX_CLUSTER1}" wait --for condition=Ready istio/default --timeout=3m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、East クラスターに East-West ゲートウェイを作成します。
oc --context "${CTX_CLUSTER1}" apply -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net1.yaml
$ oc --context "${CTX_CLUSTER1}" apply -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ゲートウェイを介してサービスを公開します。
oc --context "${CTX_CLUSTER1}" apply -n istio-system -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/expose-services.yaml
$ oc --context "${CTX_CLUSTER1}" apply -n istio-system -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/expose-services.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Istio を West クラスターにインストールします。
次のコマンドを実行して、West クラスターに
Istio
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コントロールプレーンが
Ready
ステータス条件を返すまで待機します。oc --context "${CTX_CLUSTER2}" wait --for condition=Ready istio/default --timeout=3m
$ oc --context "${CTX_CLUSTER2}" wait --for condition=Ready istio/default --timeout=3m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、West クラスターに East-West ゲートウェイを作成します。
oc --context "${CTX_CLUSTER2}" apply -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net2.yaml
$ oc --context "${CTX_CLUSTER2}" apply -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ゲートウェイを介してサービスを公開します。
oc --context "${CTX_CLUSTER2}" apply -n istio-system -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/expose-services.yaml
$ oc --context "${CTX_CLUSTER2}" apply -n istio-system -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/docs/deployment-models/resources/expose-services.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、East クラスターの
istio-reader-service-account
サービスアカウントを作成します。oc --context="${CTX_CLUSTER1}" create serviceaccount istio-reader-service-account -n istio-system
$ oc --context="${CTX_CLUSTER1}" create serviceaccount istio-reader-service-account -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、West クラスターの
istio-reader-service-account
サービスアカウントを作成します。oc --context="${CTX_CLUSTER2}" create serviceaccount istio-reader-service-account -n istio-system
$ oc --context="${CTX_CLUSTER2}" create serviceaccount istio-reader-service-account -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、East クラスターに
cluster-reader
ロールを追加します。oc --context="${CTX_CLUSTER1}" adm policy add-cluster-role-to-user cluster-reader -z istio-reader-service-account -n istio-system
$ oc --context="${CTX_CLUSTER1}" adm policy add-cluster-role-to-user cluster-reader -z istio-reader-service-account -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、West クラスターに
cluster-reader
ロールを追加します。oc --context="${CTX_CLUSTER2}" adm policy add-cluster-role-to-user cluster-reader -z istio-reader-service-account -n istio-system
$ oc --context="${CTX_CLUSTER2}" adm policy add-cluster-role-to-user cluster-reader -z istio-reader-service-account -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、West クラスターの API サーバーへのアクセスを提供するリモートシークレットを、East クラスターにインストールします。
istioctl create-remote-secret \ --context="${CTX_CLUSTER2}" \ --name=cluster2 \ --create-service-account=false | \ oc --context="${CTX_CLUSTER1}" apply -f -
$ istioctl create-remote-secret \ --context="${CTX_CLUSTER2}" \ --name=cluster2 \ --create-service-account=false | \ oc --context="${CTX_CLUSTER1}" apply -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、East クラスターの API サーバーへのアクセスを提供するリモートシークレットを、West クラスターにインストールします。
istioctl create-remote-secret \ --context="${CTX_CLUSTER1}" \ --name=cluster1 \ --create-service-account=false | \ oc --context="${CTX_CLUSTER2}" apply -f -
$ istioctl create-remote-secret \ --context="${CTX_CLUSTER1}" \ --name=cluster1 \ --create-service-account=false | \ oc --context="${CTX_CLUSTER2}" apply -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.1. マルチクラスタートポロジーの確認 リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションをデプロイし、2 つの OpenShift Container Platform クラスターのマルチクラスタートポロジーでトラフィックを確認します。
この手順では、CLUSTER1
は East クラスター、CLUSTER2
は West クラスターです。
前提条件
- メッシュを構成するすべてのクラスターに OpenShift Service Mesh Operator をインストールした。
- 「マルチクラスターメッシュの証明書の作成」を完了した。
- 「マルチクラスタートポロジーへの証明書の適用」を完了した。
- Istio Container Network Interface (CNI) リソースを作成した。
-
この手順を実行するために使用するノートパソコンに
istioctl
をインストールした。 - マルチクラスタートポロジーをインストールした。
手順
East クラスターにサンプルアプリケーションをデプロイします。
次のコマンドを実行して、East クラスター上にサンプルアプリケーション namespace を作成します。
oc --context "${CTX_CLUSTER1}" get project sample || oc --context="${CTX_CLUSTER1}" new-project sample
$ oc --context "${CTX_CLUSTER1}" get project sample || oc --context="${CTX_CLUSTER1}" new-project sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、サイドカーインジェクションをサポートするようにアプリケーション namespace にラベルを付けます。
oc --context="${CTX_CLUSTER1}" label namespace sample istio-injection=enabled
$ oc --context="${CTX_CLUSTER1}" label namespace sample istio-injection=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow helloworld
アプリケーションをデプロイします。以下のコマンドを実行して
helloworld
サービスを作成します。oc --context="${CTX_CLUSTER1}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l service=helloworld -n sample
$ oc --context="${CTX_CLUSTER1}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l service=helloworld -n sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
helloworld-v1
デプロイメントを作成します。oc --context="${CTX_CLUSTER1}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l version=v1 -n sample
$ oc --context="${CTX_CLUSTER1}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l version=v1 -n sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、
sleep
アプリケーションをデプロイします。oc --context="${CTX_CLUSTER1}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml -n sample
$ oc --context="${CTX_CLUSTER1}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml -n sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、East クラスターの
helloworld
アプリケーションがReady
ステータス条件を返すまで待機します。oc --context="${CTX_CLUSTER1}" wait --for condition=available -n sample deployment/helloworld-v1
$ oc --context="${CTX_CLUSTER1}" wait --for condition=available -n sample deployment/helloworld-v1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、East クラスターの
sleep
アプリケーションがReady
ステータス条件を返すまで待機します。oc --context="${CTX_CLUSTER1}" wait --for condition=available -n sample deployment/sleep
$ oc --context="${CTX_CLUSTER1}" wait --for condition=available -n sample deployment/sleep
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
West クラスターにサンプルアプリケーションをデプロイします。
次のコマンドを実行して、West クラスターにサンプルアプリケーション namespace を作成します。
oc --context "${CTX_CLUSTER2}" get project sample || oc --context="${CTX_CLUSTER2}" new-project sample
$ oc --context "${CTX_CLUSTER2}" get project sample || oc --context="${CTX_CLUSTER2}" new-project sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、サイドカーインジェクションをサポートするようにアプリケーション namespace にラベルを付けます。
oc --context="${CTX_CLUSTER2}" label namespace sample istio-injection=enabled
$ oc --context="${CTX_CLUSTER2}" label namespace sample istio-injection=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow helloworld
アプリケーションをデプロイします。以下のコマンドを実行して
helloworld
サービスを作成します。oc --context="${CTX_CLUSTER2}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l service=helloworld -n sample
$ oc --context="${CTX_CLUSTER2}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l service=helloworld -n sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
helloworld-v2
デプロイメントを作成します。oc --context="${CTX_CLUSTER2}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l version=v2 -n sample
$ oc --context="${CTX_CLUSTER2}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/helloworld/helloworld.yaml \ -l version=v2 -n sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、
sleep
アプリケーションをデプロイします。oc --context="${CTX_CLUSTER2}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml -n sample
$ oc --context="${CTX_CLUSTER2}" apply \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml -n sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、West クラスターの
helloworld
アプリケーションがReady
ステータス条件を返すまで待機します。oc --context="${CTX_CLUSTER2}" wait --for condition=available -n sample deployment/helloworld-v2
$ oc --context="${CTX_CLUSTER2}" wait --for condition=available -n sample deployment/helloworld-v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、West クラスターの
sleep
アプリケーションがReady
ステータス条件を返すまで待機します。oc --context="${CTX_CLUSTER2}" wait --for condition=available -n sample deployment/sleep
$ oc --context="${CTX_CLUSTER2}" wait --for condition=available -n sample deployment/sleep
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
クラスター間のトラフィックフローの確認
East クラスターの場合は、次のコマンドを実行して、
helloworld
サービスに 10 個のリクエストを送信します。for i in {0..9}; do \ oc --context="${CTX_CLUSTER1}" exec -n sample deploy/sleep -c sleep -- curl -sS helloworld.sample:5000/hello; \ done
$ for i in {0..9}; do \ oc --context="${CTX_CLUSTER1}" exec -n sample deploy/sleep -c sleep -- curl -sS helloworld.sample:5000/hello; \ done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 両方のクラスターからの応答が表示されていることを確認します。つまり、サービスのバージョン 1 とバージョン 2 が応答で確認できます。
West クラスターの場合は、
helloworld
サービスに 10 個のリクエストを送信します。for i in {0..9}; do \ oc --context="${CTX_CLUSTER2}" exec -n sample deploy/sleep -c sleep -- curl -sS helloworld.sample:5000/hello; \ done
$ for i in {0..9}; do \ oc --context="${CTX_CLUSTER2}" exec -n sample deploy/sleep -c sleep -- curl -sS helloworld.sample:5000/hello; \ done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 両方のクラスターからの応答が表示されていることを確認します。つまり、サービスのバージョン 1 とバージョン 2 が応答で確認できます。
5.3.2. 開発環境からのマルチクラスタートポロジーの削除 リンクのコピーリンクがクリップボードにコピーされました!
開発環境でマルチクラスター機能を試した後、すべてのクラスターからマルチクラスタートポロジーを削除します。
この手順では、CLUSTER1
は East クラスター、CLUSTER2
は West クラスターです。
前提条件
- マルチクラスタートポロジーをインストールした。
手順
次のコマンドを実行して、Istio とサンプルアプリケーションを開発環境の East クラスターから削除します。
oc --context="${CTX_CLUSTER1}" delete istio/default ns/istio-system ns/sample ns/istio-cni
$ oc --context="${CTX_CLUSTER1}" delete istio/default ns/istio-system ns/sample ns/istio-cni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Istio とサンプルアプリケーションを開発環境の West クラスターから削除します。
oc --context="${CTX_CLUSTER2}" delete istio/default ns/istio-system ns/sample ns/istio-cni
$ oc --context="${CTX_CLUSTER2}" delete istio/default ns/istio-system ns/sample ns/istio-cni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow