2.10. カスタムリソース

警告

こちらは、サポートされなくなった Red Hat OpenShift Service Mesh リリースのドキュメントです。

Service Mesh バージョン 1.0 および 1.1 コントロールプレーンはサポートされなくなりました。Service Mesh コントロールプレーンのアップグレードについては、Service Mesh の アップグレード を参照してください。

特定の Red Hat Service Mesh リリースのサポートステータスについては、製品ライフサイクルページ を参照してください。

デフォルトの Service Mesh のカスタムリソースを変更するか、または新規のカスタムリソースを作成して、Red Hat OpenShift Service Mesh をカスタマイズできます。

2.10.1. 前提条件

2.10.2. Red Hat OpenShift Service Mesh カスタムリソース

注記

istio-system プロジェクトは、Service Mesh のドキュメント全体でサンプルとして使用されますが、必要に応じて他のプロジェクトを使用できます。

カスタムリソース により、Red Hat OpenShift Service Mesh プロジェクトまたはクラスターで API を拡張することができます。Service Mesh をデプロイすると、プロジェクトパラメーターを変更するために変更できるデフォルトの ServiceMeshControlPlane が作成されます。

Service Mesh Operator は、ServiceMeshControlPlane リソースタイプを追加して API を拡張します。これにより、プロジェクト内に ServiceMeshControlPlane オブジェクトを作成できます。ServiceMeshControlPlane オブジェクトを作成することで、Operator にService Mesh コントロールプレーンをプロジェクトにインストールするよう指示でき、ServiceMeshControlPlane オブジェクトで設定したパラメーターを使用して設定できます。

この例の ServiceMeshControlPlane の定義には、サポートされるすべてのパラメーターが含まれ、これにより Red Hat Enterprise Linux (RHEL) をベースとした Red Hat OpenShift Service Mesh 1.1.18.2 イメージがデプロイされます。

重要

3scale の Istio Adapter は、カスタムリソースファイルでデプロイされ、設定されます。また、稼働している 3scale アカウント (SaaS または On-Premises) が必要になります。

istio-installation.yaml の詳細例

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
  name: basic-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
        ior_enabled: 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.10.3. ServiceMeshControlPlane パラメーター

以下の例は ServiceMeshControlPlane パラメーターの使用を示し、表はサポートされているパラメーターに関する追加情報を示しています。

重要

CPU、メモリー、Pod の数などのパラメーターを使用して Red Hat OpenShift Service Mesh に設定するリソースは、OpenShift Container Platform クラスターの設定をベースとしています。現在のクラスター設定で利用可能なリソースに基づいて、これらのパラメーターを設定します。

2.10.3.1. Istio グローバルの例

以下の例は、ServiceMeshControlPlane の Istio グローバルパラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。

注記

3scale Istio Adapter が機能するようするには、disablePolicyChecksfalse である必要があります。

グローバルパラメーターの例

  istio:
    global:
      tag: 1.1.0
      hub: registry.redhat.io/openshift-service-mesh/
      proxy:
        resources:
          requests:
            cpu: 10m
            memory: 128Mi
          limits:
      mtls:
        enabled: false
      disablePolicyChecks: true
      policyCheckFailOpen: false
      imagePullSecrets:
        - MyPullSecret

表2.4 グローバルパラメーター

パラメーター説明デフォルト値

disablePolicyChecks

このパラメーターは、ポリシーチェックを有効/無効にします。

true/false

true

policyCheckFailOpen

このパラメーターは、Mixer ポリシーサービスに到達できない場合にトラフィックを Envoy サイドカーコンテナーに通過させることができるかどうかを指定します。

true/false

false

tag

Operator が Istio イメージをプルするために使用するタグ。

有効なコンテナーイメージタグです。

1.1.0

hub

Operator が Istio イメージをプルするために使用するハブ。

有効なイメージリポジトリーです。

maistra/ または registry.redhat.io/openshift-service-mesh/

mtls

このパラメーターは、デフォルトでサービス間での Mutual Transport Layer Security (mTLS) の有効化/無効化を制御します。

true/false

false

imagePullSecrets

Istio イメージを提供するレジストリーへのアクセスがセキュアな場合、ここに imagePullSecret を一覧表示します。

redhat-registry-pullsecret または quay-pullsecret

なし

これらのパラメーターは、グローバルパラメーターのプロキシーサブセットに固有のものです。

表2.5 プロキシーパラメーター

タイプパラメーター説明デフォルト値

requests

cpu

Envoy プロキシー用に要求される CPU リソースの量。

ご使用の環境設定に基づき、コアまたはミリコア (例: 200m、0.5、1) で指定される CPU リソース。

10m

 

memory

Envoy プロキシー用に要求されるメモリー量。

ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。

128Mi

limits

cpu

Envoy プロキシー用に要求される CPU リソースの最大量。

ご使用の環境設定に基づき、コアまたはミリコア (例: 200m、0.5、1) で指定される CPU リソース。

2000m

 

memory

使用が許可されているメモリー Envoy プロキシーの最大量。

ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。

1024Mi

2.10.3.2. Istio ゲートウェイの設定

以下の例は、ServiceMeshControlPlane の Istio ゲートウェイパラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。

ゲートウェイパラメーターの例

  gateways:
    egress:
      enabled: true
      runtime:
        deployment:
          autoScaling:
            enabled: true
            maxReplicas: 5
            minReplicas: 1
    enabled: true
    ingress:
      enabled: true
      runtime:
        deployment:
          autoScaling:
            enabled: true
            maxReplicas: 5
            minReplicas: 1

表2.6 Istio ゲートウェイパラメーター

パラメーター説明デフォルト値

gateways.egress.runtime.deployment.autoScaling.enabled

このパラメーターは、自動スケーリングを有効/無効にします。

true/false

true

gateways.egress.runtime.deployment.autoScaling.minReplicas

autoscaleEnabled 設定に基づいて Egress ゲートウェイにデプロイする Pod の最小数。

ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。

1

gateways.egress.runtime.deployment.autoScaling.maxReplicas

autoscaleEnabled 設定に基づいて Egress ゲートウェイにデプロイする Pod の最大数。

ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。

5

gateways.ingress.runtime.deployment.autoScaling.enabled

このパラメーターは、自動スケーリングを有効/無効にします。

true/false

true

gateways.ingress.runtime.deployment.autoScaling.minReplicas

autoscaleEnabled 設定に基づいて Ingress ゲートウェイにデプロイする Pod の最小数。

ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。

1

gateways.ingress.runtime.deployment.autoScaling.maxReplicas

autoscaleEnabled 設定に基づいて Ingress ゲートウェイにデプロイする Pod の最大数。

ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。

5

クラスター管理者は、サブドメインを有効にする方法について、ワイルドカードルートの使用 を参照できます。

2.10.3.3. Istio Mixer 設定

以下の例は、ServiceMeshControlPlane の Mixer パラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。

Mixer パラメーターの例

mixer:
  enabled: true
  policy:
    autoscaleEnabled: false
  telemetry:
    autoscaleEnabled: false
    resources:
    requests:
      cpu: 10m
      memory: 128Mi
      limits:

表2.7 Istio Mixer ポリシーパラメーター

パラメーター説明デフォルト値

enabled

このパラメーターは、Mixer を有効/無効にします。

true/false

true

autoscaleEnabled

このパラメーターは、自動スケーリングを有効/無効にします。小規模な環境では、このパラメーターを無効にします。

true/false

true

autoscaleMin

autoscaleEnabled 設定に基づいてデプロイする Pod の最小数。

ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。

1

autoscaleMax

autoscaleEnabled 設定に基づいてデプロイする Pod の最大数。

ご使用の環境設定に基づく、有効な割り当て可能な Pod 数。

5

表2.8 Istio Mixer Telemetry パラメーター

タイプパラメーター説明デフォルト

requests

cpu

Mixer Telemetry に要求される CPU リソースのパーセンテージ。

ご使用の環境設定に基づく、ミリコア単位の CPU リソース。

10m

 

memory

Mixer Telemetry に要求されるメモリー量。

ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。

128Mi

limits

cpu

使用を許可された CPU リソース Mixer Telemetry の最大パーセンテージ。

ご使用の環境設定に基づく、ミリコア単位の CPU リソース。

4800m

 

memory

使用を許可されているメモリー Mixer Telemetry の最大量です。

ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。

4G

2.10.3.4. Istio Pilot 設定

Pilot を、リソース割り当てのスケジュールまたはその制限を設定するように設定できます。以下の例は、ServiceMeshControlPlane の Pilot パラメーターと適切な値を持つ利用可能なパラメーターの説明を示しています。

Pilot パラメーターの例

spec:
  runtime:
    components:
      pilot:
        deployment:
          autoScaling:
            enabled: true
            minReplicas: 1
            maxReplicas: 5
            targetCPUUtilizationPercentage: 85
        pod:
          tolerations:
          - key: node.kubernetes.io/unreachable
            operator: Exists
            effect: NoExecute
            tolerationSeconds: 60
          affinity:
            podAntiAffinity:
              requiredDuringScheduling:
              - key: istio
                topologyKey: kubernetes.io/hostname
                operator: In
                values:
                - pilot
        container:
          resources:
            limits:
              cpu: 100m
              memory: 128M

表2.9 Istio Pilot パラメーター

パラメーター説明デフォルト値

cpu

Pilot に要求される CPU リソースのパーセンテージ。

ご使用の環境設定に基づく、ミリコア単位の CPU リソース。

10m

memory

Pilot に要求されるメモリー量。

ご使用の環境設定に基づく、利用可能なバイト単位のメモリー (例: 200Ki、50Mi、5Gi)。

128Mi

autoscaleEnabled

このパラメーターは、自動スケーリングを有効/無効にします。小規模な環境では、このパラメーターを無効にします。

true/false

true

traceSampling

この値は、無作為のサンプリングの発生頻度を制御します。注: 開発またはテストの場合はこの値を増やします。

有効なパーセンテージ。

1.0

2.10.4. 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

表2.10 Kiali パラメーター

パラメーター説明デフォルト値
enabled

このパラメーターは、Kiali を有効/無効にします。Kiali はデフォルトで有効です。

true/false

true

dashboard
   viewOnlyMode

このパラメーターは、Kiali コンソールの表示専用 (view-only) モードを有効/無効にします。表示専用モードを有効にすると、ユーザーはコンソールを使用して Service Mesh を変更できなくなります。

true/false

false

ingress
   enabled

このパラメーターは、Kiali の Ingress を有効/無効にします。

true/false

true

2.10.4.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.10.4.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.10.5. Jaeger の設定

Service Mesh Operator は ServiceMeshControlPlane リソースを作成する際に、分散トレースのリソースも作成することができます。Service Mesh は分散トレースに Jaeger を使用します。

Jaeger 設定は、以下の 2 つの方法のいずれかで指定できます。

  • ServiceMeshControlPlane リソースで Jaeger を設定します。この方法にはいくつかの制限があります。
  • Jaeger をカスタム Jaeger リソースに設定し、ServiceMeshControlPlane リソースでその Jaeger インスタンスを参照します。name の値に一致する Jaeger リソースが存在する場合、コントロールプレーンは既存のインストールを使用します。この方法では、Jaeger 設定を完全にカスタマイズできます。

ServiceMeshControlPlane で指定されるデフォルトの Jaeger パラメーターは以下のとおりです。

デフォルトの all-in-one Jaeger パラメーター

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  version: v1.1
  istio:
    tracing:
      enabled: true
      jaeger:
        template: all-in-one

表2.11 Jaeger パラメーター

パラメーター説明デフォルト値
tracing:
   enabled:

このパラメーターは、Service Mesh Operator によるトレースのインストールおよびデプロイを有効/無効にします。Jaeger のインストールはデフォルトで有効にされます。既存の Jaeger デプロイメントを使用するには、この値を false に設定します。

true/false

true

jaeger:
   template:

このパラメーターは、使用する Jaeger デプロイメントストラテジーを指定します。

  • all-in-one: 開発、テスト、デモおよび概念実証用。
  • production-elasticsearch: 実稼働環境での使用。

all-in-one

注記

ServiceMeshControlPlane リソースのデフォルトのテンプレートは、インメモリーストレージを使用する all-in-one のデプロイメントストラテジーです。実稼働環境では、サポートされている唯一のストレージオプションが Elasticsearch であるため、実稼働環境内に Service Mesh をデプロイする際には、production-elasticsearch テンプレートを要求するように ServiceMeshControlPlane を設定する必要があります。

2.10.5.1. Elasticsearch の設定

デフォルトの Jaeger デプロイメントストラテジーでは、all-in-one テンプレートを使用するため、最小のリソースでインストールを完了できます。ただし、all-in-one テンプレートはインメモリーストレージを使用するので、開発、デモまたはテスト目的での使用を推奨しています。実稼働環境には使用しないでください。

実稼働環境で Service Mesh および Jaeger をデプロイする場合、テンプレートを production-elasticsearch テンプレートに変更する必要があります。これは Jaeger のストレージのニーズに対応するために Elasticsearch を使用します。

Elasticsearch はメモリー集約型アプリケーションです。デフォルトの OpenShift Container Platform インストールで指定されたノードの初期セットは、Elasticsearch クラスターをサポートするのに十分な大きさではない場合があります。デフォルトの Elasticsearch 設定は、ユースケースと OpenShift Container Platform インストール用に必要とするリソースに一致するように変更する必要があります。resources ブロックを有効な CPU 値およびメモリー値で変更することにより、各コンポーネントの CPU およびメモリーの制限の両方を調整することができます。推奨容量 (以上) のメモリーを使用して実行する場合は、追加のノードをクラスターに追加する必要があります。OpenShift Container Platform インストールに必要となるリソースを超えていないことを確認してください。

Elasticsearch を使用したデフォルトの実稼働 Jaeger パラメーター

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"

表2.12 Elasticsearch パラメーター

パラメーター説明デフォルト値
tracing:
  enabled:

このパラメーターは、Service Mesh でトレースを有効/無効にします。Jaeger がデフォルトでインストールされます。

true/false

true

 
ingress:
  enabled:

このパラメーターは、Jaeger の Ingress を有効/無効にします。

true/false

true

 
jaeger:
   template:

このパラメーターは、使用する Jaeger デプロイメントストラテジーを指定します。

all-in-one/production-elasticsearch

all-in-one

 
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 を割り当てることを推奨します。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Red Hat OpenShift Service Mesh Operator をクリックします。
  4. Istio Service Mesh Control Plane タブをクリックします。
  5. コントロールプレーンのファイル名 (basic-install など) をクリックします。
  6. YAML タブをクリックします。
  7. Jaeger パラメーターを編集し、デフォルトの all-in-one テンプレートを production-elasticsearch テンプレートのパラメーターに置き換え、ユースケースに合わせて変更します。インデントが正しいことを確認します。
  8. Save をクリックします。
  9. Reload をクリックします。OpenShift Container Platform は Jaeger を再デプロイし、指定されたパラメーターに基づいて Elasticsearch リソースを作成します。

2.10.5.2. 既存の Jaeger インスタンスへの接続

SMCP が既存の Jaeger インスタンスに接続できるようにするには、以下が true である必要があります。

  • Jaeger インスタンスは、コントロールプレーンと同じ namespace にデプロイされます (例: istio-system namespace)。
  • サービス間でのセキュアな通信を有効にするには、Jaeger インスタンスとの通信のセキュリティーを保護する oauth-proxy を有効にし、シークレットが Jaeger インスタンスにマウントされ、Kiali がこれと通信できるようにする必要があります。
  • カスタムまたは既存の Jaeger インスタンスを使用するには、spec.istio.tracing.enabled を false に設定し、Jaeger インスタンスのデプロイメントを無効にします。
  • spec.istio.global.tracer.zipkin.address を jaeger-collector を jaeger-collector サービスのホスト名およびポートに設定して、正しい jaeger-collector エンドポイントを Mixer に指定します。通常、サービスのホスト名は <jaeger-instance-name>-collector.<namespace>.svc.cluster.local です。
  • spec.istio.kiali.jaegerInClusterURL を jaeger-query サービスのホスト名に設定し、トレースを収集するために正しい jaeger-query エンドポイントを Kiali に指定します。ポートは、デフォルトで 443 を使用するため、通常は不要です。通常、サービスのホスト名は <jaeger-instance-name>-query.<namespace>.svc.cluster.local です。
  • Jaeger インスタンスのダッシュボード URL を Kiali に指定し、Kiali コンソールから Jaeger にアクセスできるようにします。Jaeger Operator によって作成される OpenShift ルートから URL を取得できます。Jaeger リソースが external-jaeger で、istio-system プロジェクトにある場合は、以下のコマンドを使用してルートを取得できます。

    $ oc get route -n istio-system external-jaeger

    出力例

    NAME                   HOST/PORT                                     PATH   SERVICES               [...]
    external-jaeger        external-jaeger-istio-system.apps.test        external-jaeger-query  [...]

    HOST/PORT の値は、Jaeger ダッシュボードの外部アクセス可能な URL です。

例: Jaeger リソース

apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
  name: "external-jaeger"
  # Deploy to the Control Plane Namespace
  namespace: istio-system
spec:
  # Set Up Authentication
  ingress:
    enabled: true
    security: oauth-proxy
    openshift:
      # This limits user access to the Jaeger instance to users who have access
      # to the control plane namespace. Make sure to set the correct namespace here
      sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
      htpasswdFile: /etc/proxy/htpasswd/auth

  volumeMounts:
  - name: secret-htpasswd
    mountPath: /etc/proxy/htpasswd
  volumes:
  - name: secret-htpasswd
    secret:
      secretName: htpasswd

以下の ServiceMeshControlPlane の例では、Jaeger Operator および Jaeger リソースのサンプルを使用して Jaeger をデプロイしていることを前提としています。

外部 Jaeger を使用した ServiceMeshControlPlane の例

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
  name: external-jaeger
  namespace: istio-system
spec:
  version: v1.1
  istio:
    tracing:
      # Disable Jaeger deployment by service mesh operator
      enabled: false
    global:
      tracer:
        zipkin:
          # Set Endpoint for Trace Collection
          address: external-jaeger-collector.istio-system.svc.cluster.local:9411
    kiali:
      # Set Jaeger dashboard URL
      dashboard:
        jaegerURL: https://external-jaeger-istio-system.apps.test
      # Set Endpoint for Trace Querying
      jaegerInClusterURL: external-jaeger-query.istio-system.svc.cluster.local

2.10.5.3. Elasticsearch の設定

デフォルトの Jaeger デプロイメントストラテジーでは、all-in-one テンプレートを使用するため、最小のリソースでインストールを完了できます。ただし、all-in-one テンプレートはインメモリーストレージを使用するので、開発、デモまたはテスト目的での使用を推奨しています。実稼働環境には使用しないでください。

実稼働環境で Service Mesh および Jaeger をデプロイする場合、テンプレートを production-elasticsearch テンプレートに変更する必要があります。これは Jaeger のストレージのニーズに対応するために Elasticsearch を使用します。

Elasticsearch はメモリー集約型アプリケーションです。デフォルトの OpenShift Container Platform インストールで指定されたノードの初期セットは、Elasticsearch クラスターをサポートするのに十分な大きさではない場合があります。デフォルトの Elasticsearch 設定は、ユースケースと OpenShift Container Platform インストール用に必要とするリソースに一致するように変更する必要があります。resources ブロックを有効な CPU 値およびメモリー値で変更することにより、各コンポーネントの CPU およびメモリーの制限の両方を調整することができます。推奨容量 (以上) のメモリーを使用して実行する場合は、追加のノードをクラスターに追加する必要があります。OpenShift Container Platform インストールに必要となるリソースを超えていないことを確認してください。

Elasticsearch を使用したデフォルトの実稼働 Jaeger パラメーター

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"

表2.13 Elasticsearch パラメーター

パラメーター説明デフォルト値
tracing:
  enabled:

このパラメーターは、Service Mesh でトレースを有効/無効にします。Jaeger がデフォルトでインストールされます。

true/false

true

 
ingress:
  enabled:

このパラメーターは、Jaeger の Ingress を有効/無効にします。

true/false

true

 
jaeger:
   template:

このパラメーターは、使用する Jaeger デプロイメントストラテジーを指定します。

all-in-one/production-elasticsearch

all-in-one

 
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 を割り当てることを推奨します。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Red Hat OpenShift Service Mesh Operator をクリックします。
  4. Istio Service Mesh Control Plane タブをクリックします。
  5. コントロールプレーンのファイル名 (basic-install など) をクリックします。
  6. YAML タブをクリックします。
  7. Jaeger パラメーターを編集し、デフォルトの all-in-one テンプレートを production-elasticsearch テンプレートのパラメーターに置き換え、ユースケースに合わせて変更します。インデントが正しいことを確認します。
  8. Save をクリックします。
  9. Reload をクリックします。OpenShift Container Platform は Jaeger を再デプロイし、指定されたパラメーターに基づいて Elasticsearch リソースを作成します。

2.10.5.4. Elasticsearch インデックスクリーナージョブの設定

Service Mesh Operator は ServiceMeshControlPlane を作成した際に Jaeger のカスタムリソース (CR) も作成します。次に、Red Hat OpenShift 分散トレースプラットフォーム Operator は Jaeger インスタンスの作成時にこの CR を使用します。

Elasticsearch ストレージを使用する場合、デフォルトでジョブが作成され、古いトレースをストレージからクリーンアップします。このジョブのオプションを設定するには、Jaeger カスタムリソース (CR) を編集して、ユースケースに合わせてカスタマイズします。関連するオプションを以下に示します。

  apiVersion: jaegertracing.io/v1
  kind: Jaeger
  spec:
    strategy: production
    storage:
      type: elasticsearch
      esIndexCleaner:
        enabled: false
        numberOfDays: 7
        schedule: "55 23 * * *"

表2.14 Elasticsearch インデックスクリーナーのパラメーター

パラメーター説明

enabled

true/ false

インデックスクリーナージョブを有効または無効にします。

numberOfDays

整数値

インデックスの削除を待機する日数。

schedule

"55 23 * * *"

実行するジョブの cron 式

Elasticsearch を OpenShift Container Platform で設定する方法については、ログストアの設定 を参照してください。

2.10.6. 3scale の設定

以下の表では、ServiceMeshControlPlane リソースの 3scale Istio アダプターのパラメーターについて説明しています。

3scale パラメーターの例

spec:
  addons:
    3Scale:
      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
      PARAM_USE_CACHED_BACKEND: false
      PARAM_BACKEND_CACHE_FLUSH_INTERVAL_SECONDS: 15
      PARAM_BACKEND_CACHE_POLICY_FAIL_CLOSED: true

表2.15 3scale パラメーター

パラメーター説明デフォルト値

enabled

3scale アダプターを使用するかどうか

true/false

false

PARAM_THREESCALE_LISTEN_ADDR

gRPC サーバーのリッスンアドレスを設定します。

有効なポート番号

3333

PARAM_THREESCALE_LOG_LEVEL

ログ出力の最小レベルを設定します。

debuginfowarnerror、または none

info

PARAM_THREESCALE_LOG_JSON

ログが JSON としてフォーマットされるかどうかを制御します。

true/false

true

PARAM_THREESCALE_LOG_GRPC

ログに gRPC 情報を含むかどうかを制御します。

true/false

true

PARAM_THREESCALE_REPORT_METRICS

3scale システムおよびバックエンドメトリクスが収集され、Prometheus に報告されるかどうかを制御します。

true/false

true

PARAM_THREESCALE_METRICS_PORT

3scale /metrics エンドポイントをスクラップできるポートを設定します。

有効なポート番号

8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

キャッシュから期限切れのアイテムを消去するまで待機する時間 (秒単位)。

時間 (秒単位)

300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

キャッシュ要素の更新を試行する場合の期限

時間 (秒単位)

180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

キャッシュにいつでも保存できるアイテムの最大数。キャッシュを無効にするには 0 に設定します。

有効な数字

1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

キャッシュ更新ループ時に到達できないホストが再試行される回数

有効な数字

1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API 呼び出し時の証明書の検証を省略できるようにします。この有効化は推奨されていません。

true/false

false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale システムおよびバックエンドへの要求を終了するまで待機する秒数を設定します。

時間 (秒単位)

10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

接続を閉じるまでの最大秒数 (+/-10% のジッター) を設定します。

時間 (秒単位)

60

PARAM_USE_CACHE_BACKEND

true の場合、承認要求のインメモリー apisonator キャッシュの作成を試行します。

true/false

false

PARAM_BACKEND_CACHE_FLUSH_INTERVAL_SECONDS

バックエンドキャッシュが有効な場合には、3scale に対してキャッシュをフラッシュする間隔を秒単位で設定します。

時間 (秒単位)

15

PARAM_BACKEND_CACHE_POLICY_FAIL_CLOSED

バックエンドキャッシュが承認データを取得できない場合は常に、要求を拒否する (クローズする) か、許可する (オープンする) かどうか。

true/false

true