×

您正在查看不再受支持的Red Hat OpenShift Service Mesh版本的文档。

Service Mesh版本1.0和1.1控制平面不再受支持。有关升级服务网格控制平面的信息,请参阅升级服务网格

有关特定Red Hat OpenShift Service Mesh版本的支持状态信息,请参阅产品生命周期页面

您可以通过修改默认的服务网格自定义资源或创建新的自定义资源来自定义Red Hat OpenShift Service Mesh。

先决条件

Red Hat OpenShift Service Mesh自定义资源

在整个服务网格文档中,istio-system项目用作示例,但您可以根据需要使用其他项目。

自定义资源允许您扩展Red Hat OpenShift Service Mesh项目或集群中的API。部署服务网格时,它会创建一个默认的ServiceMeshControlPlane,您可以修改它来更改项目参数。

服务网格操作符通过添加ServiceMeshControlPlane资源类型来扩展API,这使您能够在项目中创建ServiceMeshControlPlane对象。通过创建ServiceMeshControlPlane对象,您可以指示操作符在项目中安装服务网格控制平面,并使用您在ServiceMeshControlPlane对象中设置的参数进行配置。

此示例ServiceMeshControlPlane定义包含所有受支持的参数,并基于Red Hat Enterprise Linux (RHEL)部署Red Hat OpenShift Service Mesh 1.1.18.2镜像。

3scale Istio适配器已部署并在自定义资源文件中配置。它还需要一个有效的3scale帐户(SaaS本地部署)。

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

ServiceMeshControlPlane参数

以下示例说明了ServiceMeshControlPlane参数的使用,表格提供了有关受支持参数的更多信息。

您使用这些参数为Red Hat OpenShift Service Mesh配置的资源(包括CPU、内存和Pod数量)基于OpenShift Container Platform集群的配置。请根据当前集群配置中可用的资源配置这些参数。

Istio全局示例

这是一个示例,它说明了ServiceMeshControlPlane的Istio全局参数以及具有相应值的可用参数的描述。

为了使3scale Istio适配器正常工作,disablePolicyChecks必须为false

全局参数示例
  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
表1. 全局参数
参数 描述 默认值

disablePolicyChecks

此参数启用/禁用策略检查。

true/false

true

policyCheckFailOpen

此参数指示当无法访问 Mixer 策略服务时,是否允许流量通过 Envoy sidecar。

true/false

false

tag

操作员用于拉取 Istio 镜像的标签。

有效的容器镜像标签。

1.1.0

hub

操作员用于拉取 Istio 镜像的仓库。

有效的镜像仓库。

maistra/registry.redhat.io/openshift-service-mesh/

mtls

此参数控制是否默认启用/禁用服务之间的相互传输层安全 (mTLS)。

true/false

false

imagePullSecrets

如果访问提供 Istio 镜像的注册表是安全的,请在此处列出imagePullSecret

redhat-registry-pullsecret 或 quay-pullsecret

这些参数特定于全局参数的代理子集。

表 2. 代理参数
类型 参数 描述 默认值

请求

cpu

Envoy 代理请求的 CPU 资源量。

CPU 资源,以核心或毫核心指定(例如,200m、0.5、1),具体取决于您环境的配置。

10m

内存

Envoy 代理请求的内存量

可用内存,以字节为单位(例如,200Ki、50Mi、5Gi),具体取决于您环境的配置。

128Mi

限制

cpu

Envoy 代理请求的 CPU 资源最大量。

CPU 资源,以核心或毫核心指定(例如,200m、0.5、1),具体取决于您环境的配置。

2000m

内存

Envoy 代理允许使用的最大内存量。

可用内存,以字节为单位(例如,200Ki、50Mi、5Gi),具体取决于您环境的配置。

1024Mi

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
表 3. Istio 网关参数
参数 描述 默认值

gateways.egress.runtime.deployment.autoScaling.enabled

此参数启用/禁用自动缩放。

true/false

true

gateways.egress.runtime.deployment.autoScaling.minReplicas

根据autoscaleEnabled设置,为出站网关部署的最小 Pod 数。

基于您环境配置的有效可分配 Pod 数。

1

gateways.egress.runtime.deployment.autoScaling.maxReplicas

根据autoscaleEnabled设置,为出站网关部署的最大 Pod 数。

基于您环境配置的有效可分配 Pod 数。

5

gateways.ingress.runtime.deployment.autoScaling.enabled

此参数启用/禁用自动缩放。

true/false

true

gateways.ingress.runtime.deployment.autoScaling.minReplicas

根据autoscaleEnabled设置,为入站网关部署的最小 Pod 数。

基于您环境配置的有效可分配 Pod 数。

1

gateways.ingress.runtime.deployment.autoScaling.maxReplicas

根据autoscaleEnabled设置,为入站网关部署的最大 Pod 数。

基于您环境配置的有效可分配 Pod 数。

5

集群管理员可以参考 OpenShift Container Platform 中的Ingress 运算符中的“使用通配符路由”以获取有关如何启用子域的说明。

Istio Mixer 配置

这是一个示例,说明了ServiceMeshControlPlane 的 Mixer 参数以及可用参数及其相应值的描述。

示例 Mixer 参数
mixer:
  enabled: true
  policy:
    autoscaleEnabled: false
  telemetry:
    autoscaleEnabled: false
    resources:
    requests:
      cpu: 10m
      memory: 128Mi
      limits:
表 4. Istio Mixer 策略参数
参数 描述 默认值

enabled

此参数启用/禁用 Mixer。

true/false

true

autoscaleEnabled

此参数启用/禁用自动缩放。对于小型环境,请禁用此功能。

true/false

true

autoscaleMin

根据autoscaleEnabled设置,要部署的最小 Pod 数。

基于您环境配置的有效可分配 Pod 数。

1

autoscaleMax

根据autoscaleEnabled设置,要部署的最大 Pod 数。

基于您环境配置的有效可分配 Pod 数。

5

表 5. Istio Mixer 遥测参数
类型 参数 描述 默认

请求

cpu

Mixer 遥测请求的 CPU 资源百分比。

基于您环境配置的以毫核心为单位的 CPU 资源。

10m

内存

Mixer 遥测请求的内存量。

可用内存,以字节为单位(例如,200Ki、50Mi、5Gi),具体取决于您环境的配置。

128Mi

限制

cpu

Mixer 遥测允许使用的 CPU 资源最大百分比。

基于您环境配置的以毫核心为单位的 CPU 资源。

4800m

内存

Mixer 遥测允许使用的最大内存量。

可用内存,以字节为单位(例如,200Ki、50Mi、5Gi),具体取决于您环境的配置。

4G

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
表 6. Istio Pilot 参数
参数 描述 默认值

cpu

Pilot 请求的 CPU 资源百分比。

基于您环境配置的以毫核心为单位的 CPU 资源。

10m

内存

Pilot 请求的内存量。

可用内存,以字节为单位(例如,200Ki、50Mi、5Gi),具体取决于您环境的配置。

128Mi

autoscaleEnabled

此参数启用/禁用自动缩放。对于小型环境,请禁用此功能。

true/false

true

traceSampling

此值控制随机采样的频率。**注意:**开发或测试时请增加此值。

有效的百分比。

1.0

配置 Kiali

当服务网格运算符创建ServiceMeshControlPlane时,它还会处理 Kiali 资源。然后,Kiali 运算符在创建 Kiali 实例时使用此对象。

ServiceMeshControlPlane中指定的默认 Kiali 参数如下所示

示例 Kiali 参数
apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
    kiali:
      enabled: true
      dashboard:
        viewOnlyMode: false
      ingress:
        enabled: true
表 7. Kiali 参数
参数 描述 默认值
enabled

此参数启用/禁用 Kiali。Kiali 默认启用。

true/false

true

dashboard
   viewOnlyMode

此参数启用/禁用 Kiali 控制台的只读模式。启用只读模式后,用户无法使用控制台更改服务网格。

true/false

false

ingress
   enabled

此参数启用/禁用 Kiali 的入口。

true/false

true

为 Grafana 配置 Kiali

当您将 Kiali 和 Grafana 作为 Red Hat OpenShift Service Mesh 的一部分安装时,运算符会默认配置以下内容:

  • 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

为 Jaeger 配置 Kiali

当您将 Kiali 和 Jaeger 作为 Red Hat OpenShift Service Mesh 的一部分安装时,运算符会默认配置以下内容:

  • 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

配置 Jaeger

当服务网格运算符创建ServiceMeshControlPlane资源时,它还可以创建分布式跟踪的资源。服务网格使用 Jaeger 进行分布式跟踪。

您可以通过以下两种方式之一指定您的 Jaeger 配置:

  • 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
表 8. Jaeger 参数
参数 描述 默认值
tracing:
   enabled:

此参数启用/禁用服务网格运算符安装和部署跟踪。默认情况下启用安装 Jaeger。要使用现有的 Jaeger 部署,请将此值设置为false

true/false

true

jaeger:
   template:

此参数指定要使用的 Jaeger 部署策略。

  • all-in-one - 用于开发、测试、演示和概念验证。

  • production-elasticsearch - 用于生产环境。

all-in-one

ServiceMeshControlPlane 资源中的默认模板是使用内存存储的 all-in-one 部署策略。对于生产环境,唯一支持的存储选项是 Elasticsearch,因此在生产环境中部署 Service Mesh 时,必须将 ServiceMeshControlPlane 配置为请求 production-elasticsearch 模板。

配置 Elasticsearch

默认的 Jaeger 部署策略使用 all-in-one 模板,以便可以使用最少的资源完成安装。但是,由于 all-in-one 模板使用内存存储,因此仅推荐用于开发、演示或测试目的,不应用于生产环境。

如果要在生产环境中部署 Service Mesh 和 Jaeger,则必须将模板更改为 production-elasticsearch 模板,该模板使用 Elasticsearch 来满足 Jaeger 的存储需求。

Elasticsearch 是一个内存密集型应用程序。默认的 OpenShift Container Platform 安装中指定的初始节点集可能不足以支持 Elasticsearch 集群。应修改默认的 Elasticsearch 配置以匹配您的用例和您为 OpenShift Container Platform 安装请求的资源。您可以通过使用有效的 CPU 和内存值修改 resources 块来调整每个组件的 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"
表 9. Elasticsearch 参数
参数 描述 默认值 示例
tracing:
  enabled:

此参数启用/禁用 Service Mesh 中的跟踪。Jaeger 默认安装。

true/false

true

ingress:
  enabled:

此参数启用/禁用 Jaeger 的入口。

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. 导航到**运算符**→**已安装的运算符**。

  3. 单击 Red Hat OpenShift Service Mesh 运算符。

  4. 单击**Istio Service Mesh 控制平面**选项卡。

  5. 单击控制平面文件的名称,例如 basic-install

  6. 单击**YAML**选项卡。

  7. 编辑 Jaeger 参数,将默认的 all-in-one 模板替换为您用例修改的 production-elasticsearch 模板的参数。确保缩进正确。

  8. 单击**保存**。

  9. 单击**重新加载**。OpenShift Container Platform 将重新部署 Jaeger 并根据指定的参数创建 Elasticsearch 资源。

连接到现有的 Jaeger 实例

为了使 SMCP 连接到现有的 Jaeger 实例,必须满足以下条件:

  • Jaeger 实例部署在与控制平面相同的命名空间中,例如,部署到 istio-system 命名空间。

  • 为了启用服务之间的安全通信,您应该启用 oauth-proxy,它可以保护与您的 Jaeger 实例的通信,并确保将密钥挂载到您的 Jaeger 实例中,以便 Kiali 可以与之通信。

  • 要使用自定义或已有的 Jaeger 实例,请将 spec.istio.tracing.enabled 设置为“false”以禁用 Jaeger 实例的部署。

  • 通过将 spec.istio.global.tracer.zipkin.address 设置为 jaeger-collector 服务的主机名和端口,向 Mixer 提供正确的 jaeger-collector 端点。服务的 hostname 通常为 <jaeger-instance-name>-collector.<namespace>.svc.cluster.local

  • 通过将 spec.istio.kiali.jaegerInClusterURL 设置为您的 jaeger-query 服务的主机名,向 Kiali 提供正确的 jaeger-query 端点以收集跟踪——通常不需要端口,因为它默认使用 443。服务的 hostname 通常为 <jaeger-instance-name>-query.<namespace>.svc.cluster.local

  • 向 Kiali 提供 Jaeger 实例的仪表板 URL,以便通过 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

配置 Elasticsearch

默认的 Jaeger 部署策略使用 all-in-one 模板,以便可以使用最少的资源完成安装。但是,由于 all-in-one 模板使用内存存储,因此仅推荐用于开发、演示或测试目的,不应用于生产环境。

如果要在生产环境中部署 Service Mesh 和 Jaeger,则必须将模板更改为 production-elasticsearch 模板,该模板使用 Elasticsearch 来满足 Jaeger 的存储需求。

Elasticsearch 是一个内存密集型应用程序。默认的 OpenShift Container Platform 安装中指定的初始节点集可能不足以支持 Elasticsearch 集群。应修改默认的 Elasticsearch 配置以匹配您的用例和您为 OpenShift Container Platform 安装请求的资源。您可以通过使用有效的 CPU 和内存值修改 resources 块来调整每个组件的 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"
表 10. Elasticsearch 参数
参数 描述 默认值 示例
tracing:
  enabled:

此参数启用/禁用 Service Mesh 中的跟踪。Jaeger 默认安装。

true/false

true

ingress:
  enabled:

此参数启用/禁用 Jaeger 的入口。

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. 导航到**运算符**→**已安装的运算符**。

  3. 单击 Red Hat OpenShift Service Mesh 运算符。

  4. 单击**Istio Service Mesh 控制平面**选项卡。

  5. 单击控制平面文件的名称,例如 basic-install

  6. 单击**YAML**选项卡。

  7. 编辑 Jaeger 参数,将默认的 all-in-one 模板替换为您用例修改的 production-elasticsearch 模板的参数。确保缩进正确。

  8. 单击**保存**。

  9. 单击**重新加载**。OpenShift Container Platform 将重新部署 Jaeger 并根据指定的参数创建 Elasticsearch 资源。

配置 Elasticsearch 索引清理作业

当 Service Mesh Operator 创建 ServiceMeshControlPlane 时,它还会创建 Jaeger 的自定义资源 (CR)。然后,Red Hat OpenShift 分布式跟踪平台 (Jaeger) 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 * * *"
表 11. Elasticsearch 索引清理参数
参数 描述

enabled

true/false

启用或禁用索引清理作业。

numberOfDays

整数值

删除索引之前要等待的天数。

schedule

"55 23 * * *"

作业运行的 Cron 表达式

有关使用 OpenShift Container Platform 配置 Elasticsearch 的更多信息,请参阅 xref :../../observability/logging/log_storage/logging-config-es-store.adoc#logging-config-es-store[配置 Elasticsearch 日志存储]。

3scale 配置

下表解释了 ServiceMeshControlPlane 资源中 3scale Istio 适配器的参数。

示例 3scale 参数
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
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
# ...
表 12. 3scale 参数
参数 描述 默认值

enabled

是否使用 3scale 适配器

true/false

false

PARAM_THREESCALE_LISTEN_ADDR

设置 gRPC 服务器的监听地址

有效的端口号

3333

PARAM_THREESCALE_LOG_LEVEL

设置最低日志输出级别。

debuginfowarnerrornone

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

每当后端缓存无法检索授权数据时,是拒绝 (closed) 请求还是允许 (open) 请求

true/false

true