1.8. ServiceMeshControlPlane の作成

1.8.1. About ServiceMeshControlPlane

コントロールプレーンには、Istiod、Ingress および Egress Gateway、Kiali や Jaeger などのその他コンポーネントが含まれます。コントロールプレーンは、Service Mesh Operator やデータプレーンアプリケーションおよびサービスとは別の namespace にデプロイする必要があります。OpenShift Container Platform Web コンソールまたはコマンドラインから oc クライアントツールを使用して、ServiceMeshControlPlane (SMCP) の基本的なインストールをデプロイできます。

注記

この基本インストールは、デフォルトの OpenShift Container Platform 設定に基づいて設定されており、実稼働環境での使用を目的として設計されていません。このデフォルトのインストールを使用してインストールを確認し、環境に合わせて ServiceMeshControlPlane 設定を設定します。

注記

Red Hat OpenShift Service on AWS (ROSA) では、リソースを作成できる場所に関して追加の制限が適用されるので、デフォルトのデプロイメントは機能しません。ROSA 環境に SMCP をデプロイメントする前の追加要件は、「Red Hat OpenShift Service on AWS へのサービスメッシュのインストール」を参照してください。

注記

Service Mesh に関するドキュメントは istio-system をサンプルプロジェクトとして使用しますが、サービスメッシュを任意のプロジェクトにデプロイできます。

1.8.1.1. Web コンソールからの Service Mesh コントロールプレーンのデプロイ

Web コンソールを使用して基本的な ServiceMeshControlPlane をデプロイできます。この例では、istio-system が Service Mesh コントロールプレーンプロジェクトの名前となります。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされている必要がある。
  • cluster-admin ロールを持つアカウントがある。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。
  2. istio-system という名前のプロジェクトを作成します。

    1. HomeProjects に移動します。
    2. Create Project をクリックします。
    3. Name フィールドに istio-system と入力します。ServiceMeshControlPlane リソースは、マイクロサービスおよび Operator とは異なるプロジェクトにインストールする必要があります。

      これらのステップは istio-system を例として使用しますが、サービスが含まれるプロジェクトから分離されない限り、Service Mesh コントロールプレーンを任意のプロジェクトにデプロイできます。

    4. Create をクリックします。
  3. OperatorsInstalled Operators に移動します。
  4. Red Hat OpenShift Service Mesh Operator をクリックした後に、Istio Service Mesh Control Plane をクリックします。
  5. Istio Service Mesh Control Plane タブで Create ServiceMeshControlPlane をクリックします。
  6. Create ServiceMeshControlPlane ページで、デフォルトの Service Mesh コントロールプレーンバージョンを受け入れて、製品の最新バージョンで利用可能な機能を活用します。コントロールプレーンのバージョンは、Operator のバージョンに関係なく利用可能な機能を判別します。

    1. Create をクリックします。Operator は、設定パラメーターに基づいて Pod、サービス、Service Mesh コントロールプレーンのコンポーネントを作成します。ServiceMeshControlPlane 設定は後で設定できます。
  7. Istio Service Mesh Control Plane タブをクリックしてコントロールプレーンが正常にインストールされることを確認します。

    1. 新規コントロールプレーンの名前をクリックします。
    2. Resources タブをクリックして、Red Hat OpenShift Service Mesh コントロールプレーンリソース (Operator が作成し、設定したもの) を表示します。

1.8.1.2. CLI を使用した Service Mesh コントロールプレーンのデプロイ

コマンドラインから基本的な ServiceMeshControlPlane をデプロイできます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされている必要がある。
  • OpenShift CLI (oc) へのアクセスがある。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. istio-system という名前のプロジェクトを作成します。

    $ oc new-project istio-system
  3. 以下の例を使用して istio-installation.yaml という名前の ServiceMeshControlPlane ファイルを作成します。Service Mesh コントロールプレーンのバージョンは、Operator のバージョンに関係なく利用可能な機能を判別します。

    バージョン 2.4 istio-installation.yaml の例

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.4
      tracing:
        type: Jaeger
        sampling: 10000
      addons:
        jaeger:
          name: jaeger
          install:
            storage:
              type: Memory
        kiali:
          enabled: true
          name: kiali
        grafana:
          enabled: true

  4. 以下のコマンドを実行して Service Mesh コントロールプレーンをデプロイします。ここで、<istio_installation.yaml> にはファイルへの完全パスが含まれます。

    $ oc create -n istio-system -f <istio_installation.yaml>
  5. Pod のデプロイメントの進行状況を監視するには、次のコマンドを実行します。

    $ oc get pods -n istio-system -w

    以下のような出力が表示されるはずです。

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

1.8.1.3. CLI を使用した SMCP インストールの検証

コマンドラインから ServiceMeshControlPlane の作成を検証できます。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。

    $ oc login https://<HOSTNAME>:6443
  2. 次のコマンドを実行して、Service Mesh コントロールプレーンのインストールを確認します。istio-system は、Service Mesh コントロールプレーンをインストールした namespace です。

    $ oc get smcp -n istio-system

    STATUS 列が ComponentsReady の場合は、インストールが正常に終了しています。

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.1.1     66m

1.8.2. コントロールプレーンコンポーネントとインフラストラクチャーノードについて

インフラストラクチャーノードは、次の 2 つの主な目的のためにインフラストラクチャーのワークロードを分離する方法を提供します。

  • サブスクリプション数に対する請求コストの発生を防ぐため
  • インフラストラクチャーのワークロードの保守と管理を分離するため

サービスメッシュコントロールプレーンコンポーネントの一部またはすべてをインフラストラクチャーノード上で実行するように設定できます。

1.8.2.1. Web コンソールを使用してインフラストラクチャーノード上で実行されるようにすべてのコントロールプレーンコンポーネントを設定する

サービスメッシュコントロールプレーンによってデプロイされたすべてのコンポーネントがインフラストラクチャーノードで実行される場合は、このタスクを実行します。これらのデプロイされたコンポーネントには、Istiod、Ingress Gateway、Egress Gateway、および Prometheus、Grafana、Distributed Tracing などのオプションのアプリケーションが含まれます。

コントロールプレーンをワーカーノード上で実行する場合は、このタスクを省略してください。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • cluster-admin ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin ロールを持つユーザーとしてログインします。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Red Hat OpenShift Service Mesh Operator をクリックし、次に Istio Service Mesh Control Plane をクリックします。
  4. コントロールプレーンリソースの名前をクリックします。たとえば、basic です。
  5. YAML をクリックします。
  6. 次の例に示すように、nodeSelector フィールドと tolerations フィールドを ServiceMeshControlPlane リソースの spec.runtime.defaults.pod 仕様に追加します。

    spec:
      runtime:
        defaults:
          pod:
            nodeSelector: 1
              node-role.kubernetes.io/infra: ""
            tolerations: 2
            - effect: NoSchedule
              key: node-role.kubernetes.io/infra
              value: reserved
            - effect: NoExecute
              key: node-role.kubernetes.io/infra
              value: reserved
    1
    ServiceMeshControlPlane Pod がインフラストラクチャーノード上でのみスケジュールされるようにします。
    2
    Pod が実行のためにインフラストラクチャーノードによって受け入れられることを確認します。
  7. Save をクリックします。
  8. Reload をクリックします。

1.8.2.2. Web コンソールを使用してインフラストラクチャーノード上で実行されるように個別のコントロールプレーンコンポーネントを設定する

サービスメッシュコントロールプレーンによってデプロイされた個々のコンポーネントがインフラストラクチャーノードで実行される場合は、このタスクを実行します。これらのデプロイされたコンポーネントには、Istiod、Ingress Gateway、および Egress Gateway が含まれます。

コントロールプレーンをワーカーノード上で実行する場合は、このタスクを省略してください。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • cluster-admin ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin ロールを持つユーザーとしてログインします。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Red Hat OpenShift Service Mesh Operator をクリックし、次に Istio Service Mesh Control Plane をクリックします。
  4. コントロールプレーンリソースの名前をクリックします。たとえば、basic です。
  5. YAML をクリックします。
  6. 次の例に示すように、nodeSelector フィールドtolerations フィールドを ServiceMeshControlPlane リソースの spec.runtime.components.pilot.pod 仕様に追加します。

    spec:
      runtime:
        components:
          pilot:
            pod:
              nodeSelector: 1
                node-role.kubernetes.io/infra: ""
              tolerations: 2
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    1
    Istiod Pod がインフラストラクチャーノード上でのみスケジュールされることを確認します。
    2
    Pod が実行のためにインフラストラクチャーノードによって受け入れられることを確認します。
  7. 次の例に示すように、nodeSelector フィールドと tolerations フィールドを ServiceMeshControlPlane リソースの spec.gateways.ingress.runtime.pod および spec.gateways.egress.runtime.pod 仕様に追加します。

    spec:
      gateways:
        ingress:
          runtime:
            pod:
              nodeSelector: 1
                node-role.kubernetes.io/infra: ""
              tolerations: 2
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
        egress:
          runtime:
            pod:
              nodeSelector: 3
                node-role.kubernetes.io/infra: ""
              tolerations: 4
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    1 3
    ゲートウェイ Pod がインフラストラクチャーノード上でのみスケジュールされることを確認します
    2 4
    Pod が実行のためにインフラストラクチャーノードによって受け入れられることを確認します。
  8. Save をクリックします。
  9. Reload をクリックします。

1.8.2.3. CLI を使用してインフラストラクチャーノード上で実行されるようにすべてのコントロールプレーンコンポーネントを設定する

サービスメッシュコントロールプレーンによってデプロイされたすべてのコンポーネントがインフラストラクチャーノードで実行される場合は、このタスクを実行します。これらのデプロイされたコンポーネントには、Istiod、Ingress Gateway、Egress Gateway、および Prometheus、Grafana、Distributed Tracing などのオプションのアプリケーションが含まれます。

コントロールプレーンをワーカーノード上で実行する場合は、このタスクを省略してください。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • cluster-admin ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin ロールを持つユーザーとしてログインします。

手順

  1. ServiceMeshControlPlane リソースを YAML ファイルとして開きます。

    $ oc -n istio-system edit smcp <name> 1
    1
    <name> は、ServiceMeshControlPlane リソースの名前を表します。
  2. ServiceMeshControlPlane によってデプロイされたすべての Service Mesh コンポーネントをインフラストラクチャーノードで実行するには、ServiceMeshControlPlane リソースの spec.runtime.defaults.pod 仕様に nodeSelector フィールドと tolerations フィールドを追加します。

    spec:
      runtime:
        defaults:
          pod:
            nodeSelector: 1
              node-role.kubernetes.io/infra: ""
            tolerations: 2
            - effect: NoSchedule
              key: node-role.kubernetes.io/infra
              value: reserved
            - effect: NoExecute
              key: node-role.kubernetes.io/infra
              value: reserved
    1
    SMCP Pod がインフラストラクチャーノード上でのみスケジュールされることを確認します。
    2
    インフラストラクチャーノードが Pod を受け入れることを確認します。

1.8.2.4. CLI を使用してインフラストラクチャーノード上で実行されるように個別のコントロールプレーンコンポーネントを設定する

サービスメッシュコントロールプレーンによってデプロイされた個々のコンポーネントがインフラストラクチャーノードで実行される場合は、このタスクを実行します。これらのデプロイされたコンポーネントには、Istiod、Ingress Gateway、および Egress Gateway が含まれます。

コントロールプレーンをワーカーノード上で実行する場合は、このタスクを省略してください。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • cluster-admin ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin ロールを持つユーザーとしてログインします。

手順

  1. ServiceMeshControlPlane リソースを YAML ファイルとして開きます。

    $ oc -n istio-system edit smcp <name> 1
    1
    <name> は、ServiceMeshControlPlane リソースの名前を表します。
  2. インフラストラクチャーノードで Istiod コンポーネントを実行するには、ServiceMeshControlPlane リソースの spec.runtime.components.pilot.pod 仕様に nodeSelector フィールドと tolerations フィールドを追加します。

    spec:
      runtime:
        components:
          pilot:
            pod:
              nodeSelector: 1
                node-role.kubernetes.io/infra: ""
              tolerations: 2
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    1
    Istiod Pod がインフラストラクチャーノード上でのみスケジュールされることを確認します。
    2
    インフラストラクチャーノードが Pod を受け入れるか確認します。
  3. Ingress Gateway と Egress Gateway をインフラストラクチャーノードで実行する場合は、ServiceMeshControlPlane リソースの spec.gateways.ingress.runtime.pod 仕様と spec.gateways.egress.runtime.pod 仕様に、nodeSelector フィールドと tolerations フィールドを追加します。

    spec:
      gateways:
        ingress:
          runtime:
            pod:
              nodeSelector: 1
                node-role.kubernetes.io/infra: ""
              tolerations: 2
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
        egress:
          runtime:
            pod:
              nodeSelector: 3
                node-role.kubernetes.io/infra: ""
              tolerations: 4
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    1 3
    ゲートウェイ Pod がインフラストラクチャーノード上でのみスケジュールされることを確認します
    2 4
    インフラストラクチャーノードが Pod を受け入れるか確認します。

1.8.2.5. Service Mesh コントロールプレーンがインフラストラクチャーノードで実行されていることの検証

手順

  • Istiod、Ingress Gateway、Egress Gateway Pod に関連付けられたノードがインフラストラクチャーノードであることを確認します。

    $ oc -n istio-system get pods -owide

1.8.3. コントロールプレーンとクラスター全体のデプロイメントについて

クラスター全体のデプロイメントには、クラスター全体のリソースを監視する Service Mesh Control Plane が含まれます。クラスター全体のリソースの監視は、コントロールプレーンがすべての名前空間にわたって単一のクエリーを使用して Istio および Kubernetes リソースを監視するという点で、Istio の機能によく似ています。その結果、クラスター全体のデプロイメントにより、API サーバーに送信されるリクエストの数が減少します。

OpenShift Container Platform Web コンソールまたは CLI を使用して、クラスター全体のデプロイメント用に Service Mesh コントロールプレーンを設定できます。

1.8.3.1. Web コンソールを使用したクラスター全体のデプロイメント用のコントロールプレーンの設定

OpenShift Container Platform Web コンソールを使用して、クラスター全体のデプロイメント用に ServiceMeshControlPlane リソースを設定できます。この例では、istio-system が Service Mesh コントロールプレーンプロジェクトの名前となります。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • cluster-admin ロールを持つアカウントを使用してログインしているか、Red Hat OpenShift Dedicated を dedicated-admin ロールを持つアカウントを使用してログインしています。

手順

  1. istio-system という名前のプロジェクトを作成します。

    1. HomeProjects に移動します。
    2. Create Project をクリックします。
    3. Name フィールドに istio-system と入力します。ServiceMeshControlPlane リソースは、マイクロサービスおよび Operator とは異なるプロジェクトにインストールする必要があります。

      これらの手順では、istio-system をサンプルとして使用します。Service Mesh コントロールプレーンは、サービスが含まれるプロジェクトから分離されている限り、任意のプロジェクトにデプロイできます。

    4. Create をクリックします。
  2. OperatorsInstalled Operators に移動します。
  3. Red Hat OpenShift Service Mesh Operator をクリックした後に、Istio Service Mesh Control Plane をクリックします。
  4. Istio Service Mesh Control Plane タブで Create ServiceMeshControlPlane をクリックします。
  5. YAML view をクリックします。Service Mesh コントロールプレーンのバージョンは、Operator のバージョンに関係なく利用可能な機能を判別します。
  6. YAML ファイルの spec.mode フィールドを変更して、Clusterwide を指定します。

    バージョン 2.4 istio-installation.yaml の例

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.4
      mode: ClusterWide

  7. Create をクリックします。Operator は、設定パラメーターに基づいて Pod、サービス、Service Mesh コントロールプレーンのコンポーネントを作成します。ServiceMeshMemberRoll がデフォルト設定の一部として存在しないと、オペレーターは ServiceMeshMemberRoll も作成します。
  8. Istio Service Mesh Control Plane タブをクリックしてコントロールプレーンが正常にインストールされることを確認します。

    1. 新しい ServiceMeshControlPlane オブジェクトの名前をクリックします。
    2. Resources タブをクリックして、Red Hat OpenShift Service Mesh コントロールプレーンリソース (Operator が作成し、設定したもの) を表示します。

このモジュールは次のアセンブリに含まれています: * service_mesh/v2x/ossm-create-smcp.adoc :_content-type: PROCEDURE

1.8.3.2. CLI を使用したクラスター全体のデプロイメント用のコントロールプレーンの設定

CLI を使用して、クラスター全体のデプロイメント用に ServiceMeshControlPlane リソースを設定できます。この例では、istio-system はサービスメッシュコントロールプレーンの名前空間の名前です。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • OpenShift CLI (oc) にアクセスできる。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. istio-system という名前のプロジェクトを作成します。

    $ oc new-project istio-system
  3. 以下の例を使用して istio-installation.yaml という名前の ServiceMeshControlPlane ファイルを作成します。

    バージョン 2.4 istio-installation.yaml の例

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.4
      mode: ClusterWide

  4. 以下のコマンドを実行して Service Mesh コントロールプレーンをデプロイします。ここで、<istio_installation.yaml> にはファイルへの完全パスが含まれます。

    $ oc create -n istio-system -f <istio_installation.yaml>
  5. Pod のデプロイの進行状況を監視するには、次のコマンドを実行します。

    $ oc get pods -n istio-system -w

    次の例のような出力が表示されるはずです。

    出力例

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

このモジュールは次のアセンブリに含まれています: * service_mesh/v2x/ossm-create-smcp.adoc

1.8.3.3. クラスター全体のメッシュのメンバーロールのカスタマイズ

クラスター全体モードでは、ServiceMeshControlPlane リソースを作成すると、ServiceMeshMemberRoll リソースも作成されます。ServiceMeshMemberRoll リソースは、作成後に変更できます。リソースを変更すると、Service Mesh オペレーターはそのリソースを変更しなくなります。OpenShift Container Platform Web コンソールを使用して ServiceMeshMemberRoll リソースを変更する場合は、変更を上書きするプロンプトを受け入れます。

または、ServiceMeshControlPlane リソースをデプロイする前に ServiceMeshMemberRoll リソースを作成することもできます。ServiceMeshControlPlane リソースを作成するとき、Service Mesh Operator は ServiceMeshMemberRoll を変更しません。

注記

ServiceMeshMemberRoll リソース名には、default という名前を付け、ServiceMeshControlPlane リソースと同じプロジェクト名前空間に作成する必要があります。

メッシュに名前空間を追加するには 2 つの方法があります。spec.members リストで名前を指定して名前空間を追加することも、ラベルに基づいて名前空間を含めるか除外するように一連の名前空間ラベルセレクターを設定することもできます。

注記

ServiceMeshMemberRoll リソースでメンバーがどのように指定されているかに関係なく、各名前空間に ServiceMeshMember リソースを作成してメッシュにメンバーを追加することもできます。

1.8.4. Kiali を使用した SMCP インストールの検証

Kiali コンソールを使用して、Service Mesh のインストールを検証できます。Kiali コンソールには、Service Mesh コンポーネントが適切にデプロイおよび設定されていることを検証する方法がいくつかあります。

手順

  1. cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。
  2. NetworkingRoutes に移動します。
  3. Routes ページで、Namespace メニューから Service Mesh コントロールプレーンプロジェクトを選択します (例: istio-system)。

    Location 列には、各ルートのリンク先アドレスが表示されます。

  4. 必要に応じて、フィルターを使用して Kiali コンソールのルートを見つけます。ルートの Location をクリックしてコンソールを起動します。
  5. Log In With OpenShift をクリックします。

    初回の Kiali コンソールへのログイン時に、表示するパーミッションを持つサービスメッシュ内のすべての namespace を表示する Overview ページが表示されます。概要 ページに複数の namespace が表示されている場合は、Kiali は最初に正常性または検証に問題がある namespace を表示します。

    図1.1 Kiali の概要ページ

    istio-system を示す Kiali の概要ページ

    各 namespace のタイルには、ラベルの数、Istio Config の状態、アプリケーション の状態と数、namespace の トラフィック が表示されます。コンソールのインストールを検証中で、namespace がまだメッシュに追加されていないと、istio-system 以外のデータは表示されない可能性があります。

  6. Kiali には、Service Mesh コントロールプレーンがインストールされている namespace 専用のダッシュボードが 4 つあります。これらのダッシュボードを表示するには、オプション メニューをクリックします kebab コントロールプレーン namespace のタイル (例: istio-system) で、次のいずれかのオプションを選択します。

    • Istio メッシュダッシュボード
    • Istio コントロールプレーンダッシュボード
    • Istio パフォーマンスダッシュボード
    • Istio Wasm Exetension ダッシュボード

      図1.2 GrafanaIstio コントロールプレーンダッシュボード

      info サンプルプロジェクトのデータを表示する Istio コントロールプレーンダッシュボード

      Kiali は、Grafana ホームページ から入手できる追加の Grafana ダッシュボード 2 つもインストールします。

    • Istio ワークロードダッシュボード
    • Istio サービスダッシュボード
  7. Service Mesh コントロールプレーンノードを表示するには、グラフ ページをクリックし、メニューから ServiceMeshControlPlane をインストールした Namespace を選択します (例 :istio-system)。

    1. 必要に応じて、Display idle nodes をクリックします。
    2. グラフ ページの詳細は、グラフツアー リンクをクリックしてください。
    3. メッシュトポロジーを表示するには、namespace メニューの Service Mesh メンバーロールから追加の namespace を 1 つまたは複数選択します。
  8. istio-system namespace 内のアプリケーションのリストを表示するには、アプリケーション ページをクリックします。Kiali は、アプリケーションの状態を表示します。

    1. 情報アイコンの上にマウスをかざすと、詳細 列に記載されている追加情報が表示されます。
  9. istio-system namespace のワークロードのリストを表示するには、ワークロード ページをクリックします。Kiali は、ワークロードの状態を表示します。

    1. 情報アイコンの上にマウスをかざすと、詳細 列に記載されている追加情報が表示されます。
  10. istio-system namespace のサービスのリストを表示するには、サービス ページをクリックします。Kiali は、サービスと設定の状態を表示します。

    1. 情報アイコンの上にマウスをかざすと、詳細 列に記載されている追加情報が表示されます。
  11. istio-system namespace の Istio 設定オブジェクトのリストを表示するには、Istio Config ページをクリックします。Kiali は、設定の正常性を表示します。

    1. 設定エラーがある場合は、行をクリックすると、Kiali が設定ファイルを開き、エラーが強調表示されます。

1.8.5. Red Hat OpenShift Service on AWS (ROSA) へのインストール

バージョン 2.2 以降、Red Hat OpenShift Service Mesh は Red Hat OpenShift Service on AWS (ROSA) へのインストールがサポートされます。このセクションでは、このプラットフォームに Service Mesh をインストールする際の追加の要件を説明します。

1.8.5.1. インストールの場所

Red Hat OpenShift Service Mesh をインストールし、ServiceMeshControlPlane を作成する際に、istio-system などの新規 namespace を作成する必要があります。

1.8.5.2. 必要な Service Mesh コントロールプレーンの設定

ServiceMeshControlPlane ファイルのデフォルト設定は ROSA クラスターでは機能しません。Red Hat OpenShift Service on AWS にインストールする場合は、デフォルトの SMCP を変更し、spec.security.identity.type=ThirdParty を設定する必要があります。

ROSA 用の ServiceMeshControlPlane リソースの例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
  namespace: istio-system
spec:
  version: v2.4
  security:
    identity:
      type: ThirdParty  #required setting for ROSA
  tracing:
    type: Jaeger
    sampling: 10000
  policy:
    type: Istiod
  addons:
    grafana:
      enabled: true
    jaeger:
      install:
        storage:
          type: Memory
    kiali:
      enabled: true
    prometheus:
      enabled: true
  telemetry:
    type: Istiod

1.8.5.3. Kiali 設定の制限

Red Hat OpenShift Service on AWS では、リソースを作成できる場所に関して追加の制限が適用され、Red Hat 管理の namespace に Kiali リソースを作成することはできません。

つまり、ROSA クラスターでは、spec.deployment.accessible_namespaces の以下の共通設定は許可されません。

  • ['**'] (すべての namespaces)
  • default
  • codeready-*
  • openshift-*
  • redhat-*

検証エラーメッセージでは、制限されたすべての namespace の完全なリストが提供されます。

ROSA 用の Kiali リソースの例

apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
  name: kiali
  namespace: istio-system
spec:
  auth:
    strategy: openshift
  deployment:
    accessible_namespaces:   #restricted setting for ROSA
      - istio-system
    image_pull_policy: ''
    ingress_enabled: true
    namespace: istio-system

1.8.6. 関連情報

Red Hat OpenShift Service Mesh はクラスター内で複数の独立したコントロールプレーンをサポートします。ServiceMeshControlPlane プロファイルを使用すると、再利用可能な設定を作成ができます。詳細は、コントロールプレーンプロファイルの作成 を参照してください。

1.8.7. 次のステップ