2.3. Red Hat OpenShift Service Mesh インストールのカスタマイズ
デフォルトのサービスメッシュのカスタムリソースを変更するか、または新規のカスタムリソースを作成して、Red Hat OpenShift Service Mesh をカスタマイズできます。
前提条件
-
cluster-admin
ロールを持つアカウント。 - Red Hat OpenShift Service Mesh をインストールする準備プロセスを完了していること。
- Operator がインストール済みであること。
2.3.1. Red Hat OpenShift Service Mesh カスタムリソース
istio-system
プロジェクトは、サービスメッシュのドキュメント全体でサンプルとして使用されますが、必要に応じて他のプロジェクトを使用できます。
カスタムリソースにより、Red Hat OpenShift Service Mesh プロジェクトまたはクラスターで API を拡張することができます。サービスメッシュをデプロイすると、プロジェクトパラメーターを変更するために変更できるデフォルトの ServiceMeshControlPlane
が作成されます。
Service Mesh Operator は、ServiceMeshControlPlane
リソースタイプを追加して API を拡張します。これにより、プロジェクト内に ServiceMeshControlPlane
オブジェクトを作成できます。ServiceMeshControlPlane
オブジェクトを作成することで、Operator にサービスメッシュコントロールプレーンをプロジェクトにインストールするよう指示でき、ServiceMeshControlPlane
オブジェクトで設定したパラメーターを使用して設定できます。
この例の ServiceMeshControlPlane
の定義には、サポートされるすべてのパラメーターが含まれ、これにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift Service Mesh 1.0.10 イメージがデプロイされます。
3scale の Istio Adapter は、カスタムリソースファイルでデプロイされ、設定されます。また、稼働している 3scale アカウント (SaaS または On-Premises) が必要になります。
istio-installation.yaml の詳細例
apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane metadata: name: full-install spec: istio: global: proxy: resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 128Mi gateways: istio-egressgateway: autoscaleEnabled: false istio-ingressgateway: autoscaleEnabled: false mixer: policy: autoscaleEnabled: false telemetry: autoscaleEnabled: false resources: requests: cpu: 100m memory: 1G limits: cpu: 500m memory: 4G pilot: autoscaleEnabled: false traceSampling: 100 kiali: enabled: true grafana: enabled: true tracing: enabled: true jaeger: template: all-in-one
2.3.2. ServiceMeshControlPlane
パラメーター
以下の例は ServiceMeshControlPlane
パラメーターの使用を示し、表はサポートされているパラメーターに関する追加情報を示しています。
CPU、メモリー、Pod の数などのパラメーターを使用して Red Hat OpenShift Service Mesh に設定するリソースは、OpenShift クラスターの設定をベースとしています。現在のクラスター設定で利用可能なリソースに基づいて、これらのパラメーターを設定します。
2.3.2.1. Istio グローバルの例
以下の例は、ServiceMeshControlPlane
の Istio グローバルパラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。
3scale Istio Adapter が機能するようするには、disablePolicyChecks
は false
である必要があります。
グローバルパラメーターの例
istio: global: tag: 1.0.0 hub: registry.redhat.io/openshift-service-mesh/ proxy: resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 128Mi mtls: enabled: false disablePolicyChecks: true policyCheckFailOpen: false imagePullSecrets: - MyPullSecret
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
| このパラメーターは、ポリシーチェックを有効/無効にします。 |
|
|
| このパラメーターは、Mixer ポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します。 |
|
|
| Operator が Istio イメージをプルするために使用するタグ。 | 有効なコンテナーイメージタグです。 |
|
| Operator が Istio イメージをプルするために使用するハブ。 | 有効なイメージリポジトリーです。 |
|
| このパラメーターは、デフォルトでサービス間での Mutual Transport Layer Security (mTLS) の有効化/無効化を制御します。 |
|
|
| Istio イメージを提供するレジストリーへのアクセスがセキュアな場合、ここに imagePullSecret を一覧表示します。 | redhat-registry-pullsecret または quay-pullsecret | なし |
これらのパラメーターは、グローバルパラメーターのプロキシーサブセットに固有のものです。
タイプ | パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|---|
リソース |
| Envoy プロキシー用に要求される CPU リソースの量。 | ご使用の環境設定に基づき、コアまたはミリコア (例: 200m、0.5、1) で指定される CPU リソース。 |
|
| Envoy プロキシー用に要求されるメモリー量。 | ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。 |
| |
制限 |
| Envoy プロキシー用に要求される CPU リソースの最大量。 | ご使用の環境設定に基づき、コアまたはミリコア (例: 200m、0.5、1) で指定される CPU リソース。 |
|
| 使用が許可されているメモリー Envoy プロキシーの最大量。 | ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。 |
|
2.3.2.2. Istio ゲートウェイの設定
以下の例は、ServiceMeshControlPlane
の Istio ゲートウェイパラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。
ゲートウェイパラメーターの例
gateways: istio-egressgateway: autoscaleEnabled: false autoscaleMin: 1 autoscaleMax: 5 istio-ingressgateway: autoscaleEnabled: false autoscaleMin: 1 autoscaleMax: 5
タイプ | パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|---|
|
| このパラメーターは、自動スケーリングを有効/無効にします。 |
|
|
|
| ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。 |
| |
|
| ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。 |
| |
|
| このパラメーターは、自動スケーリングを有効/無効にします。 |
|
|
|
| ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。 |
| |
|
| ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。 |
|
2.3.2.3. Istio Mixer 設定
以下の例は、ServiceMeshControlPlane
の Mixer パラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。
Mixer パラメーターの例
mixer: enabled: true policy: autoscaleEnabled: false telemetry: autoscaleEnabled: false resources: limits: cpu: 500m memory: 4G requests: cpu: 100m memory: 1G
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
| このパラメーターは、Mixer を有効/無効にします。 |
|
|
| このパラメーターは、自動スケーリングを有効/無効にします。小規模な環境では、このパラメーターを無効にします。 |
|
|
|
| ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。 |
|
|
| ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。 |
|
タイプ | パラメーター | 説明 | 値 | デフォルト |
---|---|---|---|---|
リソース |
| Mixer Telemetry に要求される CPU リソースのパーセンテージ。 | ご使用の環境設定に基づく、ミリコア単位の CPU リソース。 |
|
| Mixer Telemetry に要求されるメモリー量。 | ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。 |
| |
制限 |
| 使用を許可された CPU リソース Mixer Telemetry の最大パーセンテージ。 | ご使用の環境設定に基づく、ミリコア単位の CPU リソース。 |
|
| 使用を許可されているメモリー Mixer Telemetry の最大量です。 | ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。 |
|
2.3.2.4. Istio Pilot 設定
以下の例は、ServiceMeshControlPlane
の Istio Pilot パラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。
Pilot パラメーターの例
pilot: resources: requests: cpu: 100m memory: 128Mi autoscaleEnabled: false traceSampling: 100
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
| Pilot に要求される CPU リソースのパーセンテージ。 | ご使用の環境設定に基づく、ミリコア単位の CPU リソース。 |
|
| Pilot に要求されるメモリー量。 | ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。 |
|
| このパラメーターは、自動スケーリングを有効/無効にします。小規模な環境では、このパラメーターを無効にします。 |
|
|
| この値は、無作為のサンプリングの発生頻度を制御します。注: 開発またはテストの場合はこの値を増やします。 | 有効なパーセンテージ。 |
|
2.3.3. Kiali の設定
Service Mesh Operator は ServiceMeshControlPlane
を作成する際に、Kiali リソースも処理します。次に Kiali Operator は Kiali インスタンスの作成時にこのオブジェクトを使用します。
ServiceMeshControlPlane
で指定されるデフォルトの Kiali パラメーターは以下のとおりです。
Kiali パラメーターの例
apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane spec: kiali: enabled: true dashboard: viewOnlyMode: false ingress: enabled: true
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
enabled | このパラメーターは、Kiali を有効/無効にします。Kiali はデフォルトで有効です。 |
|
|
dashboard viewOnlyMode | このパラメーターは、Kiali コンソールの表示専用 (view-only) モードを有効/無効にします。表示専用モードを有効にすると、ユーザーはコンソールを使用してサービスメッシュを変更できなくなります。 |
|
|
ingress enabled | このパラメーターは、Kiali の Ingress を有効/無効にします。 |
|
|
2.3.3.1. Grafana の Kiali の設定
Kiali および Grafana を Red Hat OpenShift Service Mesh の一部としてインストールする場合、Operator はデフォルトで以下を設定します。
- Grafana を Kiali の外部サービスとして有効化
- Kiali コンソールの Grafana 認証
- Kiali コンソールの Grafana URL
Kiali は Grafana URL を自動的に検出できます。ただし、Kiali で簡単に自動検出できないカスタムの Grafana インストールがある場合、ServiceMeshControlPlane
リソースの URL の値を更新する必要があります。
追加の Grafana パラメーター
spec: kiali: enabled: true dashboard: viewOnlyMode: false grafanaURL: "https://grafana-istio-system.127.0.0.1.nip.io" ingress: enabled: true
2.3.3.2. Jaeger についての Kiali の設定
Kiali および Jaeger を Red Hat OpenShift Service Mesh の一部としてインストールする場合、Operator はデフォルトで以下を設定します。
- Jaeger を Kiali の外部サービスとして有効化
- Kiali コンソールの Jaeger 認証
- Kiali コンソールの Jaeger URL
Kiali は Jaeger URL を自動的に検出できます。ただし、Kiali で簡単に自動検出できないカスタムの Jaeger インストールがある場合、ServiceMeshControlPlane
リソースの URL の値を更新する必要があります。
追加の Jaeger パラメーター
spec: kiali: enabled: true dashboard: viewOnlyMode: false jaegerURL: "http://jaeger-query-istio-system.127.0.0.1.nip.io" ingress: enabled: true
2.3.4. Jaeger の設定
Service Mesh Operator は ServiceMeshControlPlane
リソースを作成する際に、Jaeger リソースも作成します。次に Jaeger Operator は Jaeger インスタンスの作成時にこのオブジェクトを使用します。
ServiceMeshControlPlane
で指定されるデフォルトの Jaeger パラメーターは以下のとおりです。
デフォルトのall-in-one
Jaeger パラメーター
apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane spec: istio: tracing: enabled: true jaeger: template: all-in-one
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
tracing enabled | このパラメーターは、サービスメッシュでトレースを有効/無効にします。Jaeger がデフォルトでインストールされます。 |
|
|
jaeger template | このパラメーターは、使用する Jaeger デプロイメントストラテジーを指定します。 |
|
|
ServiceMeshControlPlane
リソースのデフォルトのテンプレートは、インメモリーストレージを使用するall-in-one
のデプロイメントストラテジーです。実稼働環境では、サポートされている唯一のストレージオプションが Elasticsearch であるため、実稼働環境内にサービスメッシュをデプロイする際には、production-elasticsearch
テンプレートを要求するように ServiceMeshControlPlane
を設定する必要があります。
2.3.4.1. Elasticsearch の設定
デフォルトの Jaeger デプロイメントストラテジーでは、all-in-one
テンプレートを使用するため、最小のリソースでインストールを完了できます。ただし、all-in-one
テンプレートはインメモリーストレージを使用するので、開発、デモまたはテスト目的での使用を推奨しています。実稼働環境には使用しないでください。
実稼働環境でサービスメッシュおよび Jaeger をデプロイする場合、テンプレートを production-elasticsearch
テンプレートに変更する必要があります。これは Jaeger のストレージのニーズに対応するために Elasticsearch を使用します。
Elasticsearch はメモリー集約型アプリケーションです。デフォルトの OpenShift Container Platform インストールで指定されたノードの初期セットは、Elasticsearch クラスターをサポートするのに十分な大きさではない場合があります。デフォルトの Elasticsearch 設定は、ユースケースと OpenShift Container Platform インストール用に必要とするリソースに一致するように変更する必要があります。resources ブロックを有効な CPU 値およびメモリー値で変更することにより、各コンポーネントの CPU およびメモリーの制限の両方を調整することができます。推奨容量 (以上) のメモリーを使用して実行する場合は、追加のノードをクラスターに追加する必要があります。OpenShift Container Platform インストールに必要となるリソースを超えていないことを確認してください。
デフォルトの production-elasticsearch
パラメーター
apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane spec: istio: tracing: enabled: true ingress: enabled: true jaeger: template: production-elasticsearch elasticsearch: nodeCount: 3 redundancyPolicy: resources: requests: cpu: "1" memory: "16Gi" limits: cpu: "1" memory: "16Gi"
パラメーター | 説明 | 値 | デフォルト値 | 例 |
---|---|---|---|---|
tracing: enabled | このパラメーターは、サービスメッシュでトレースを有効/無効にします。Jaeger がデフォルトでインストールされます。 |
|
| |
ingress: enabled | このパラメーターは、Jaeger の Ingress を有効/無効にします。 |
|
| |
jaeger template | このパラメーターは、使用する Jaeger デプロイメントストラテジーを指定します。 |
|
| |
elasticsearch: nodeCount | 作成する Elasticsearch ノードの数。 | 整数値。 | 1 | 概念実証 = 1、最小デプロイメント = 3 |
requests: cpu | ご使用の環境設定に基づく、要求に対する中央処理単位の数。 | コアまたはミリコアで指定されます (例: 200m、0.5、1)。 | 1Gi | 概念実証 = 500m、最小デプロイメント = 1 |
requests: memory | ご使用の環境設定に基づく、要求に使用できるメモリー。 | バイト単位で指定されます (例: 200Ki、50Mi、5Gi)。 | 500m | 概念実証 = 1Gi、最小デプロイメント = 16Gi* |
limits: cpu | ご使用の環境設定に基づく、中央処理単位数の制限。 | コアまたはミリコアで指定されます (例: 200m、0.5、1)。 | 概念実証 = 500m、最小デプロイメント = 1 | |
limits: memory | ご使用の環境設定に基づく、利用可能なメモリー制限。 | バイト単位で指定されます (例: 200Ki、50Mi、5Gi)。 | 概念実証 = 1Gi、最小デプロイメント = 16Gi* | |
* 各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境でのデプロイメントには推奨されません。実稼働環境で使用する場合、デフォルトで各 Pod に割り当てる設定を 16Gi 未満にすることはできず、Pod ごとに最大 64Gi を割り当てることを推奨します。 |
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 -
Catalogs
Installed Operators に移動します。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- Istio Service Mesh Control Plane タブをクリックします。
-
コントロールプレーンのファイル名 (
basic-install
など) をクリックします。 - YAML タブをクリックします。
-
Jaeger パラメーターを編集し、デフォルトの
all-in-one
テンプレートをproduction-elasticsearch
テンプレートのパラメーターに置き換え、ユースケースに合わせて変更します。インデントが正しいことを確認します。 - Save をクリックします。
- Reload をクリックします。OpenShift Container Platform は Jaeger を再デプロイし、指定されたパラメーターに基づいて Elasticsearch リソースを作成します。
Elasticsearch を OpenShift Container Platform で設定する方法については、「Elasticsearch の設定」を参照してください。
2.3.5. 3scale の設定
以下の例は、Red Hat OpenShift Service Mesh カスタムリソースの 3scale Istio Adapter パラメーターと、適切な値を持つ利用可能なパラメーターの説明を示しています。
3scale パラメーターの例
threeScale: enabled: false PARAM_THREESCALE_LISTEN_ADDR: 3333 PARAM_THREESCALE_LOG_LEVEL: info PARAM_THREESCALE_LOG_JSON: true PARAM_THREESCALE_LOG_GRPC: false PARAM_THREESCALE_REPORT_METRICS: true PARAM_THREESCALE_METRICS_PORT: 8080 PARAM_THREESCALE_CACHE_TTL_SECONDS: 300 PARAM_THREESCALE_CACHE_REFRESH_SECONDS: 180 PARAM_THREESCALE_CACHE_ENTRIES_MAX: 1000 PARAM_THREESCALE_CACHE_REFRESH_RETRIES: 1 PARAM_THREESCALE_ALLOW_INSECURE_CONN: false PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS: 10 PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS: 60
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
| 3scale アダプターを使用するかどうか |
|
|
| gRPC サーバーのリッスンアドレスを設定します。 | 有効なポート番号 |
|
| ログ出力の最小レベルを設定します。 |
|
|
| ログが JSON としてフォーマットされるかどうかを制御します。 |
|
|
| ログに gRPC 情報を含むかどうかを制御します。 |
|
|
| 3scale システムおよびバックエンドメトリクスが収集され、Prometheus に報告されるかどうかを制御します。 |
|
|
|
3scale | 有効なポート番号 |
|
| キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)。 | 時間 (秒単位) |
|
| キャッシュ要素の更新を試行する場合の期限 | 時間 (秒単位) |
|
|
キャッシュにいつでも保存できるアイテムの最大数。キャッシュを無効にするには | 有効な数字 |
|
| キャッシュ更新ループ時に到達できないホストが再試行される回数 | 有効な数字 |
|
|
|
|
|
| 3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します。 | 時間 (秒単位) |
|
| 接続を閉じるまでの最大秒数 (+/-10% のジッター) を設定します。 | 時間 (秒単位) | 60 |
次のステップ
- Red Hat OpenShift Service Mesh でアプリケーションをデプロイする準備をします。