1.8. ServiceMeshControlPlane の作成
1.8.1. About ServiceMeshControlPlane
コントロールプレーンには、Istiod、Ingress および Egress Gateway、Kiali や Jaeger などのその他コンポーネントが含まれます。コントロールプレーンは、Service Mesh Operator やデータプレーンアプリケーションおよびサービスとは別の namespace にデプロイする必要があります。Red Hat OpenShift Service on AWS Web コンソールを使用するか、oc
クライアントツールを使用してコマンドラインから ServiceMeshControlPlane
(SMCP) の基本的なインストールをデプロイできます。
この基本インストールは、デフォルトの Red Hat OpenShift Service on AWS 設定に基づいて設定されており、本番環境での使用を目的として設計されていません。このデフォルトのインストールを使用してインストールを確認し、環境に合わせて ServiceMeshControlPlane
設定を設定します。
Red Hat OpenShift Service on AWS で使用するためにコントロールプレーンをデプロイしている場合は、新しいプロジェクトの追加と Pod の開始を説明している Red Hat ナレッジベースの記事 OpenShift service mesh operator Istio basic not starting due to authentication errors を参照してください。
1.8.1.1. Web コンソールからの Service Mesh コントロールプレーンのデプロイ
Web コンソールを使用して基本的な ServiceMeshControlPlane
をデプロイできます。この例では、istio-system
が Service Mesh コントロールプレーンプロジェクトの名前となります。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
-
Red Hat OpenShift Service on AWS Web コンソールに、
dedicated-admin
ロールを持つユーザーとしてログインしている。
手順
-
cluster-admin
ロールを持つユーザーとして Red Hat OpenShift Service on AWS Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合)dedicated-admin
ロールがあるアカウント。 istio-system
という名前のプロジェクトを作成します。-
Home
Projects に移動します。 - Create Project をクリックします。
-
Name
フィールドに istio-system と入力します。ServiceMeshControlPlane
リソースは、マイクロサービスおよび Operator とは別に、istio-system
プロジェクトにインストールする必要があります。 - Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 - Red Hat OpenShift Service Mesh Operator をクリックした後に、Istio Service Mesh Control Plane をクリックします。
Istio Service Mesh Control Plane タブで Create ServiceMeshControlPlane をクリックします。
- 製品の最新バージョンで使用できる機能を利用するには、デフォルトの Service Mesh コントロールプレーンバージョンを受け入れます。コントロールプレーンのバージョンは、Operator のバージョンに関係なく利用可能な機能を判別します。
-
Red Hat OpenShift Service on AWS に必要な
spec.security.identity.type.ThirdParty
フィールドを追加します。 - Create をクリックします。
Operator は、設定パラメーターに基づいて Pod、サービス、Service Mesh コントロールプレーンのコンポーネントを作成します。
ServiceMeshControlPlane
設定は後で設定できます。
検証
Istio Service Mesh Control Plane タブをクリックしてコントロールプレーンが正常にインストールされることを確認します。
- 新規コントロールプレーンの名前をクリックします。
- Resources タブをクリックして、Red Hat OpenShift Service Mesh コントロールプレーンリソース (Operator が作成し、設定したもの) を表示します。
1.8.1.2. CLI を使用した Service Mesh コントロールプレーンのデプロイ
コマンドラインから基本的な ServiceMeshControlPlane
をデプロイできます。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
-
OpenShift CLI (
oc
) へのアクセスがある。 -
Red Hat OpenShift Service on AWS に、
dedicated-admin
ロールを持つユーザーとしてログインしている。
手順
istio-system
という名前のプロジェクトを作成します。$ oc new-project istio-system
ServiceMeshControlPlane
リソースは、マイクロサービスおよび Operator とは別に、istio-system
プロジェクトにインストールする必要があります。以下の例を使用して
istio-installation.yaml
という名前のServiceMeshControlPlane
ファイルを作成します。Service Mesh コントロールプレーンのバージョンは、Operator のバージョンに関係なく利用可能な機能を判別します。ServiceMeshControlPlane
リソースの例apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic namespace: istio-system spec: version: v2.6 security: identity: type: ThirdParty 1 tracing: type: None sampling: 10000 policy: type: Istiod addons: grafana: enabled: true kiali: enabled: true prometheus: enabled: true telemetry: type: Istiod
- 1
- Red Hat OpenShift Service on AWS に必要な設定を指定します。
以下のコマンドを実行して Service Mesh コントロールプレーンをデプロイします。ここで、
<istio_installation.yaml>
にはファイルへの完全パスが含まれます。$ oc create -n istio-system -f <istio_installation.yaml>
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 kiali-6476c7656c-x5msp 1/1 Running 0 43m prometheus-58954b8d6b-m5std 2/2 Running 0 66m
1.8.1.3. CLI を使用した SMCP インストールの検証
コマンドラインから ServiceMeshControlPlane
の作成を検証できます。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
-
OpenShift CLI (
oc
) へのアクセスがある。 -
Red Hat OpenShift Service on AWS に、
dedicated-admin
ロールを持つユーザーとしてログインしている。
手順
次のコマンドを実行して、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.6.4 66m
1.8.2. コントロールプレーンとクラスター全体のデプロイメントについて
クラスター全体のデプロイメントには、クラスター全体のリソースを監視する Service Mesh Control Plane が含まれます。クラスター全体のリソースのモニタリングは、コントロールプレーンがすべての namespace にわたって単一のクエリーを使用して Istio および Kubernetes リソースを監視するという点で、Istio の機能によく似ています。その結果、クラスター全体のデプロイメントにより、API サーバーに送信されるリクエストの数が減少します。
Red Hat OpenShift Service on AWS Web コンソールまたは CLI を使用して、クラスター全体のデプロイメント用に Service Mesh コントロールプレーンを設定できます。
1.8.2.1. Web コンソールを使用したクラスター全体のデプロイメント用のコントロールプレーンの設定
Red Hat OpenShift Service on AWS Web コンソールを使用して、クラスター全体のデプロイメント用に ServiceMeshControlPlane
リソースを設定できます。この例では、istio-system
が Service Mesh コントロールプレーンプロジェクトの名前となります。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
-
Red Hat OpenShift Service on AWS に、
dedicated-admin
ロールを持つユーザーとしてログインしている。
手順
istio-system
という名前のプロジェクトを作成します。-
Home
Projects に移動します。 - Create Project をクリックします。
Name
フィールドに istio-system と入力します。ServiceMeshControlPlane
リソースは、マイクロサービスおよび Operator とは異なるプロジェクトにインストールする必要があります。これらの手順では、
istio-system
をサンプルとして使用します。Service Mesh コントロールプレーンは、サービスが含まれるプロジェクトから分離されている限り、任意のプロジェクトにデプロイできます。- Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 - Red Hat OpenShift Service Mesh Operator をクリックした後に、Istio Service Mesh Control Plane をクリックします。
- Istio Service Mesh Control Plane タブで Create ServiceMeshControlPlane をクリックします。
- YAML view をクリックします。Service Mesh コントロールプレーンのバージョンは、Operator のバージョンに関係なく利用可能な機能を判別します。
spec.mode
フィールドを変更し、spec.security.identity.type.ThirdParty
フィールドを追加します。ServiceMeshControlPlane
リソースの例apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic namespace: istio-system spec: version: v2.6 mode: ClusterWide 1 security: identity: type: ThirdParty 2 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
-
Create をクリックします。Operator は、設定パラメーターに基づいて Pod、サービス、Service Mesh コントロールプレーンのコンポーネントを作成します。
ServiceMeshMemberRoll
がデフォルト設定の一部として存在しない場合、Operator はそれも作成します。
検証
コントロールプレーンが正しくインストールされていることを確認するには、次の手順を実行します。
- Istio Service Mesh Control Plane タブをクリックします。
-
新しい
ServiceMeshControlPlane
オブジェクトの名前をクリックします。 - Resources タブをクリックして、Red Hat OpenShift Service Mesh コントロールプレーンリソース (Operator が作成し、設定したもの) を表示します。
1.8.2.2. CLI を使用したクラスター全体のデプロイメント用のコントロールプレーンの設定
CLI を使用して、クラスター全体のデプロイメント用に ServiceMeshControlPlane
リソースを設定できます。この例では、istio-system
は Service Mesh コントロールプレーンの namespace の名前です。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
-
OpenShift CLI (
oc
) にアクセスできる。 -
Red Hat OpenShift Service on AWS に、
dedicated-admin
ロールを持つユーザーとしてログインしている。
手順
istio-system
という名前のプロジェクトを作成します。$ oc new-project istio-system
以下の例を使用して
istio-installation.yaml
という名前のServiceMeshControlPlane
ファイルを作成します。ServiceMeshControlPlane
リソースの例apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic namespace: istio-system spec: version: v2.6 mode: ClusterWide 1 security: identity: type: ThirdParty 2
次のコマンドを実行して、Service Mesh コントロールプレーンをデプロイします。
$ oc create -n istio-system -f <istio_installation.yaml>
ここでは、以下のようになります。
- <istio_installation.yaml>
- ファイルへの完全パスを指定します。
検証
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.2.3. クラスター全体のメッシュのメンバーロールのカスタマイズ
クラスター全体モードでは、ServiceMeshControlPlane
リソースを作成すると、ServiceMeshMemberRoll
リソースも作成されます。ServiceMeshMemberRoll
リソースは、作成後に変更できます。リソースを変更すると、Service Mesh オペレーターはそのリソースを変更しなくなります。Red Hat OpenShift Service on AWS Web コンソールを使用して ServiceMeshMemberRoll
リソースを変更する場合は、変更を上書きするプロンプトを受け入れます。
または、ServiceMeshControlPlane
リソースをデプロイする前に ServiceMeshMemberRoll
リソースを作成することもできます。ServiceMeshControlPlane
リソースを作成するとき、Service Mesh Operator は ServiceMeshMemberRoll
を変更しません。
ServiceMeshMemberRoll
リソース名には、default
という名前を付け、ServiceMeshControlPlane
リソースと同じプロジェクト namespace に作成する必要があります。
メッシュに namespace を追加するには 2 つの方法があります。spec.members
リストで名前を指定して namespace を追加することも、ラベルに基づいて namespace を含めるか除外するように一連の namespace ラベルセレクターを設定することもできます。
ServiceMeshMemberRoll
リソースでメンバーがどのように指定されているかに関係なく、各 namespace に ServiceMeshMember
リソースを作成してメッシュにメンバーを追加することもできます。
1.8.3. Kiali を使用した SMCP インストールの検証
Kiali コンソールを使用して、Service Mesh のインストールを検証できます。Kiali コンソールには、Service Mesh コンポーネントが適切にデプロイおよび設定されていることを検証する方法がいくつかあります。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
-
OpenShift CLI (
oc
) へのアクセスがある。 -
Red Hat OpenShift Service on AWS に、
dedicated-admin
ロールを持つユーザーとしてログインしている。
手順
-
Red Hat OpenShift Service on AWS Web コンソールで、Networking
Routes に移動します。 Routes ページで、Namespace メニューから Service Mesh コントロールプレーンプロジェクトを選択します (例:
istio-system
)。Location 列には、各ルートのリンク先アドレスが表示されます。
- 必要に応じて、フィルターを使用して Kiali コンソールのルートを見つけます。ルートの Location をクリックしてコンソールを起動します。
Log In With OpenShift をクリックします。
初回の Kiali コンソールへのログイン時に、表示するパーミッションを持つ Service Mesh 内のすべての namespace を表示する Overview ページが表示されます。概要 ページに複数の namespace が表示されている場合は、Kiali は最初に正常性または検証に問題がある namespace を表示します。
図1.1 Kiali の概要ページ
各 namespace のタイルには、ラベルの数、Istio Config の状態、アプリケーション の状態と数、namespace の トラフィック が表示されます。コンソールのインストールを検証中で、namespace がまだメッシュに追加されていないと、
istio-system
以外のデータは表示されない可能性があります。Kiali には、Service Mesh コントロールプレーンがインストールされている namespace 専用のダッシュボードが 4 つあります。これらのダッシュボードを表示するには、オプション メニューをクリックします コントロールプレーン namespace のタイル (例:
istio-system
) で、次のいずれかのオプションを選択します。- Istio メッシュダッシュボード
- Istio コントロールプレーンダッシュボード
- Istio パフォーマンスダッシュボード
Istio Wasm Exetension ダッシュボード
図1.2 Grafana Istio コントロールプレーンダッシュボード
Kiali は、Grafana ホームページ から入手できる追加の Grafana ダッシュボード 2 つもインストールします。
- Istio ワークロードダッシュボード
- Istio サービスダッシュボード
Service Mesh コントロールプレーンノードを表示するには、グラフ ページをクリックし、メニューから
ServiceMeshControlPlane
をインストールした Namespace を選択します (例:istio-system
)。- 必要に応じて、Display idle nodes をクリックします。
- グラフ ページの詳細は、グラフツアー リンクをクリックしてください。
- メッシュトポロジーを表示するには、namespace メニューの Service Mesh メンバーロールから追加の namespace を 1 つまたは複数選択します。
istio-system
namespace 内のアプリケーションのリストを表示するには、アプリケーション ページをクリックします。Kiali は、アプリケーションの状態を表示します。- 情報アイコンの上にマウスをかざすと、詳細 列に記載されている追加情報が表示されます。
istio-system
namespace のワークロードのリストを表示するには、ワークロード ページをクリックします。Kiali は、ワークロードの状態を表示します。- 情報アイコンの上にマウスをかざすと、詳細 列に記載されている追加情報が表示されます。
istio-system
namespace のサービスのリストを表示するには、サービス ページをクリックします。Kiali は、サービスと設定の状態を表示します。- 情報アイコンの上にマウスをかざすと、詳細 列に記載されている追加情報が表示されます。
istio-system
namespace の Istio 設定オブジェクトのリストを表示するには、Istio Config ページをクリックします。Kiali は、設定の正常性を表示します。- 設定エラーがある場合は、行をクリックすると、Kiali が設定ファイルを開き、エラーが強調表示されます。
1.8.4. 関連情報
Red Hat OpenShift Service Mesh はクラスター内で複数の独立したコントロールプレーンをサポートします。ServiceMeshControlPlane
プロファイルを使用すると、再利用可能な設定を作成ができます。詳細は、コントロールプレーンプロファイルの作成 を参照してください。
1.8.5. 次のステップ
- プロジェクトを Service Mesh に追加してアプリケーションを利用可能にします。詳細は、Service Mesh へのサービスの追加 を参照してください。