5.3. マルチプライマリーマルチネットワークメッシュのインストール


2 つの OpenShift Container Platform クラスターのマルチプライマリーマルチネットワークトポロジーに Istio をインストールします。

注記

この手順では、CLUSTER1 は East クラスター、CLUSTER2 は West クラスターです。

これらの手順は、2 つ以上のクラスターにまたがるメッシュに適応できます。

前提条件

  • メッシュを構成するすべてのクラスターに OpenShift Service Mesh 3 Operator をインストールした。
  • 「マルチクラスターメッシュの証明書の作成」を完了した。
  • 「マルチクラスタートポロジーへの証明書の適用」を完了した。
  • Istio Container Network Interface (CNI) リソースを作成した。
  • この手順を実行するために使用できるノートパソコンに istioctl をインストールした。

手順

  1. 以下のコマンドを実行して、インストールする Istio バージョンを定義する ISTIO_VERSION 環境変数を作成します。

    $ export ISTIO_VERSION=1.24.3
    Copy to Clipboard Toggle word wrap
  2. Istio を East クラスターにインストールします。

    1. 次のコマンドを実行して、East クラスターに Istio リソースを作成します。

      $ cat <<EOF | oc --context "${CTX_CLUSTER1}" apply -f -
      apiVersion: sailoperator.io/v1
      kind: Istio
      metadata:
        name: default
      spec:
        version: v${ISTIO_VERSION}
        namespace: istio-system
        values:
          global:
            meshID: mesh1
            multiCluster:
              clusterName: cluster1
            network: network1
      EOF
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、コントロールプレーンが Ready ステータス条件を返すまで待機します。

      $ oc --context "${CTX_CLUSTER1}" wait --for condition=Ready istio/default --timeout=3m
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、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
      Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、ゲートウェイを介してサービスを公開します。

      $ 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 Toggle word wrap
  3. Istio を West クラスターにインストールします。

    1. 次のコマンドを実行して、West クラスターに Istio リソースを作成します。

      $ cat <<EOF | oc --context "${CTX_CLUSTER2}" apply -f -
      apiVersion: sailoperator.io/v1
      kind: Istio
      metadata:
        name: default
      spec:
        version: v${ISTIO_VERSION}
        namespace: istio-system
        values:
          global:
            meshID: mesh1
            multiCluster:
              clusterName: cluster2
            network: network2
      EOF
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、コントロールプレーンが Ready ステータス条件を返すまで待機します。

      $ oc --context "${CTX_CLUSTER2}" wait --for condition=Ready istio/default --timeout=3m
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、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
      Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、ゲートウェイを介してサービスを公開します。

      $ 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 Toggle word wrap
  4. 次のコマンドを実行して、East クラスターの istio-reader-service-account サービスアカウントを作成します。

    $ oc --context="${CTX_CLUSTER1}" create serviceaccount istio-reader-service-account -n istio-system
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、West クラスターの istio-reader-service-account サービスアカウントを作成します。

    $ oc --context="${CTX_CLUSTER2}" create serviceaccount istio-reader-service-account -n istio-system
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、East クラスターに cluster-reader ロールを追加します。

    $ oc --context="${CTX_CLUSTER1}" adm policy add-cluster-role-to-user cluster-reader -z istio-reader-service-account -n istio-system
    Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して、West クラスターに cluster-reader ロールを追加します。

    $ oc --context="${CTX_CLUSTER2}" adm policy add-cluster-role-to-user cluster-reader -z istio-reader-service-account -n istio-system
    Copy to Clipboard Toggle word wrap
  8. 次のコマンドを実行して、West クラスターの API サーバーへのアクセスを提供するリモートシークレットを、East クラスターにインストールします。

    $ istioctl create-remote-secret \
      --context="${CTX_CLUSTER2}" \
      --name=cluster2 \
      --create-service-account=false | \
      oc --context="${CTX_CLUSTER1}" apply -f -
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、East クラスターの API サーバーへのアクセスを提供するリモートシークレットを、West クラスターにインストールします。

    $ istioctl create-remote-secret \
      --context="${CTX_CLUSTER1}" \
      --name=cluster1 \
      --create-service-account=false | \
      oc --context="${CTX_CLUSTER2}" apply -f -
    Copy to Clipboard Toggle word wrap

5.3.1. マルチクラスタートポロジーの確認

サンプルアプリケーションをデプロイし、2 つの OpenShift Container Platform クラスターのマルチクラスタートポロジーでトラフィックを確認します。

注記

この手順では、CLUSTER1 は East クラスター、CLUSTER2 は West クラスターです。

前提条件

  • メッシュを構成するすべてのクラスターに OpenShift Service Mesh Operator をインストールした。
  • 「マルチクラスターメッシュの証明書の作成」を完了した。
  • 「マルチクラスタートポロジーへの証明書の適用」を完了した。
  • Istio Container Network Interface (CNI) リソースを作成した。
  • この手順を実行するために使用するノートパソコンに istioctl をインストールした。
  • マルチクラスタートポロジーをインストールした。

手順

  1. East クラスターにサンプルアプリケーションをデプロイします。

    1. 次のコマンドを実行して、East クラスター上にサンプルアプリケーション namespace を作成します。

      $ oc --context "${CTX_CLUSTER1}" get project sample || oc --context="${CTX_CLUSTER1}" new-project sample
      Copy to Clipboard Toggle word wrap
    2. 以下のコマンドを実行して、サイドカーインジェクションをサポートするようにアプリケーション namespace にラベルを付けます。

      $ oc --context="${CTX_CLUSTER1}" label namespace sample istio-injection=enabled
      Copy to Clipboard Toggle word wrap
    3. helloworld アプリケーションをデプロイします。

      1. 以下のコマンドを実行して 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
        Copy to Clipboard Toggle word wrap
      2. 以下のコマンドを実行して 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
        Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、sleep アプリケーションをデプロイします。

      $ 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 Toggle word wrap
    5. 次のコマンドを実行して、East クラスターの helloworld アプリケーションが Ready ステータス条件を返すまで待機します。

      $ oc --context="${CTX_CLUSTER1}" wait --for condition=available -n sample deployment/helloworld-v1
      Copy to Clipboard Toggle word wrap
    6. 次のコマンドを実行して、East クラスターの sleep アプリケーションが Ready ステータス条件を返すまで待機します。

      $ oc --context="${CTX_CLUSTER1}" wait --for condition=available -n sample deployment/sleep
      Copy to Clipboard Toggle word wrap
  2. West クラスターにサンプルアプリケーションをデプロイします。

    1. 次のコマンドを実行して、West クラスターにサンプルアプリケーション namespace を作成します。

      $ oc --context "${CTX_CLUSTER2}" get project sample || oc --context="${CTX_CLUSTER2}" new-project sample
      Copy to Clipboard Toggle word wrap
    2. 以下のコマンドを実行して、サイドカーインジェクションをサポートするようにアプリケーション namespace にラベルを付けます。

      $ oc --context="${CTX_CLUSTER2}" label namespace sample istio-injection=enabled
      Copy to Clipboard Toggle word wrap
    3. helloworld アプリケーションをデプロイします。

      1. 以下のコマンドを実行して 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
        Copy to Clipboard Toggle word wrap
      2. 以下のコマンドを実行して、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
        Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、sleep アプリケーションをデプロイします。

      $ 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 Toggle word wrap
    5. 次のコマンドを実行して、West クラスターの helloworld アプリケーションが Ready ステータス条件を返すまで待機します。

      $ oc --context="${CTX_CLUSTER2}" wait --for condition=available -n sample deployment/helloworld-v2
      Copy to Clipboard Toggle word wrap
    6. 次のコマンドを実行して、West クラスターの sleep アプリケーションが Ready ステータス条件を返すまで待機します。

      $ oc --context="${CTX_CLUSTER2}" wait --for condition=available -n sample deployment/sleep
      Copy to Clipboard Toggle word wrap

クラスター間のトラフィックフローの確認

  1. 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
    Copy to Clipboard Toggle word wrap

    両方のクラスターからの応答が表示されていることを確認します。つまり、サービスのバージョン 1 とバージョン 2 が応答で確認できます。

  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
    Copy to Clipboard Toggle word wrap

    両方のクラスターからの応答が表示されていることを確認します。つまり、サービスのバージョン 1 とバージョン 2 が応答で確認できます。

5.3.2. 開発環境からのマルチクラスタートポロジーの削除

開発環境でマルチクラスター機能を試した後、すべてのクラスターからマルチクラスタートポロジーを削除します。

注記

この手順では、CLUSTER1 は East クラスター、CLUSTER2 は West クラスターです。

前提条件

  • マルチクラスタートポロジーをインストールした。

手順

  1. 次のコマンドを実行して、Istio とサンプルアプリケーションを開発環境の East クラスターから削除します。

    $ oc --context="${CTX_CLUSTER1}" delete istio/default ns/istio-system ns/sample ns/istio-cni
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、Istio とサンプルアプリケーションを開発環境の West クラスターから削除します。

    $ oc --context="${CTX_CLUSTER2}" delete istio/default ns/istio-system ns/sample ns/istio-cni
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat