2.10. 自定义资源

警告

查看不再支持的 Red Hat OpenShift Service Mesh 发行版本的文档。

Service Mesh 版本 1.0 和 1.1 control plane 不再被支持。有关升级服务网格 control plane 的详情,请参阅 升级 Service Mesh

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

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

2.10.1. 先决条件

2.10.2. Red Hat OpenShift Service Mesh 自定义资源

注意

在整个 Service Mesh 文档中,使用 istio-system 项目作为一个示例,您可以根据需要使用其他项目。

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

Service Mesh operator 可以通过添加 ServiceMeshControlPlane 资源类型来扩展 API,这可让您在项目中创建 ServiceMeshControlPlane 对象。通过创建一个 ServiceMeshControlPlane 对象,指示 Operator 将一个 Service Mesh control plane 安装到项目中,并使用在 ServiceMeshControlPlane 中设置的参数。

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

重要

3scale Istio 适配器在自定义资源文件中被部署并配置。它还需要一个可以正常工作的 3scale 帐户(SaaSOn-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 参数,并提供了有关支持参数的附加信息。

重要

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

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

表 2.4. 全局参数

参数描述默认值

disablePolicyChecks

启用/禁用策略检查。

true/false

true

policyCheckFailOpen

指定在 Mixer 策略服务无法访问时,是否允许流量传递给 Envoy sidecar。

true/false

false

tag

Operator 用来抓取 Istio 镜像的 tag。

有效的容器镜像 tag。

1.1.0

hub

Operator 用来抓取 Istio 镜像的中心。

有效的镜像仓库。

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

mtls

控制是否默认在服务间启用/禁用传输层安全 (mTLS) 。

true/false

false

imagePullSecrets

如果对提供 Istio 镜像的 registry 的访问是安全的,在这里列出一个 imagePullSecret

redhat-registry-pullSecret 或 quay-pullSecret

这些参数专用于全局参数的代理子集。

表 2.5. 代理参数

类型参数描述默认值

requests

cpu

为 Envoy proxy 要求的 CPU 资源量。

基于环境配置的 CPU 资源,以 cores 或 millicores 为单位(例如,200m 、0.5 、1)指定。

10m

 

memory

Envoy proxy 内存量请求

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

128Mi

limits

cpu

为 Envoy proxy 请求的最大 CPU 资源量。

基于环境配置的 CPU 资源,以 cores 或 millicores 为单位(例如,200m 、0.5 、1)指定。

2000m

 

memory

Envoy proxy 允许使用的最大内存数量。

可用内存,以字节为单位(例如: 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,为出站网关部署的最少的 pod 数量。

基于环境配置的可分配 pods 的有效数量。

1

gateways.egress.runtime.deployment.autoScaling.maxReplicas

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

基于环境配置的可分配 pods 的有效数量。

5

gateways.ingress.runtime.deployment.autoScaling.enabled

启用/禁用自动扩展。

true/false

true

gateways.ingress.runtime.deployment.autoScaling.minReplicas

根据 autoscaleEnabled,为入站网关部署的最少的 pod 数量。

基于环境配置的可分配 pods 的有效数量。

1

gateways.ingress.runtime.deployment.autoScaling.maxReplicas

根据 autoscaleEnabled,为入站网关部署的最大的 pod 数量。

基于环境配置的可分配 pods 的有效数量。

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 数量。

基于环境配置的可分配 pods 的有效数量。

1

autoscaleMax

根据 autoscaleEnabled,部署的最大的 pod 数量。

基于环境配置的可分配 pods 的有效数量。

5

表 2.8. Istio Mixer 遥测参数

类型参数描述Default(默认)

requests

cpu

Mixer 遥测所需的 CPU 资源百分比。

基于环境配置的 CPU 资源(以毫秒为单位)。

10m

 

memory

Mixer 遥测所需的内存量。

可用内存,以字节为单位(例如: 200Ki, 50Mi, 5Gi),根据您的环境配置而定。

128Mi

limits

cpu

Mixer 遥测可以使用的 CPU 资源的最大百分比。

基于环境配置的 CPU 资源(以毫秒为单位)。

4800m

 

memory

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

可用内存,以字节为单位(例如: 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 控制台启用/禁用只读视图模式。启用只读视图模式时,用户无法使用控制台来更改 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 配置:

  • ServiceMeshControlPlane 资源中配置 Jaeger。这个方法有一些限制。
  • 在自定义 Jaeger 资源中配置 Jaeger,然后在 ServiceMeshControlPlane 资源中引用 Jaeger 实例。如果存在与名称值匹配的 Jaeger 资源,control plane 将使用现有安装。这种方法可让您完全自定义 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 部署策略,它使用 in-memory 存储。对于生产环境,唯一支持的存储选项是 Elasticsearch,因此您必须配置 ServiceMeshControlPlane 来在生产环境中部署 Service Mesh 时请求 production-elasticsearch 模板。

2.10.5.1. 配置 Elasticsearch

默认的 Jaeger 部署策略使用 all-in-one 模板,以便可使用最小资源完成安装。但是,因为 all-in-one模板使用 in-memory 存储,所以只建议用于开发、演示或者测试目的。在生产环境中不应该使用它。

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

elasticsearch 是一个需要消耗大量内存的应用程序。在默认的 OpenShift Container Platform 安装中指定的初始节点可能不足以支持 Elasticsearch 集群。您应该修改默认的 Elasticsearch 配置,使其与您的用例和为 OpenShift Container Platform 安装请求的资源相匹配。您可以使用有效的 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:

根据您的环境配置,请求的 CPU 数量。

以 core 或者 millicores 指定(例如: 200m, 0.5, 1)。

1Gi

概念证明 = 500m, 最小部署 =1

requests:
  memory:

根据您的环境配置,可用于请求的内存。

以字节为单位指定(例如: 200Ki, 50Mi, 5Gi)。

500m

概念证明 = 1Gi, 最小部署 = 16Gi*

limits:
  cpu:

根据您的环境配置,CPU 数量的限值。

以 core 或者 millicores 指定(例如: 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. 点 control plane 文件的名称,例如 basic-install
  6. YAML 标签。
  7. 编辑 Jaeger 参数,根据您的具体用例,使用 production-elasticsearch 模板参数替换默认的 all-in-one 模板。确定缩进格式正确。
  8. Save
  9. Reload。OpenShift Container Platform 重新部署 Jaeger,并根据指定的参数创建 Elasticsearch 资源。

2.10.5.2. 连接至现有的 Jaeger 实例

要让 SMCP 连接到现有的 Jaeger 实例,您必须满足以下条件:

  • Jaeger 实例与 control plane 部署到同一个命名空间中,例如,部署到 istio-system 命名空间中。
  • 要启用服务间的安全通信,您应该启用 oauth-proxy,以保护与 Jaeger 实例的通信,并确保 secret 挂载到 Jaeger 实例,以便 Kiali 与其通信。
  • 要使用自定义或已存在的 Jaeger 实例,请将 spec.istio.tracing.enabled 设置为 "false" 来禁用 Jaeger 实例的部署。
  • 通过将 spec.istio.global.tracer.zipkin.address 设置为 jaeger-collector 服务的主机名和端口,为 Mixer 提供正确的 jaeger-collector 端点。该服务的主机名通常为 <jaeger-instance-name>-collector.<namespace>.svc.cluster.local
  • 通过将 spec.istio.kiali.jaegerInClusterURL 设置为您的 jaeger-query 服务的主机名(端口通常不需要,它会使用默认的 443 端口),向 Kiali 提供正确的 jaeger-query 端点来收集 trace。该服务的主机名通常为 <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

2.10.5.3. 配置 Elasticsearch

默认的 Jaeger 部署策略使用 all-in-one 模板,以便可使用最小资源完成安装。但是,因为 all-in-one模板使用 in-memory 存储,所以只建议用于开发、演示或者测试目的。在生产环境中不应该使用它。

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

elasticsearch 是一个需要消耗大量内存的应用程序。在默认的 OpenShift Container Platform 安装中指定的初始节点可能不足以支持 Elasticsearch 集群。您应该修改默认的 Elasticsearch 配置,使其与您的用例和为 OpenShift Container Platform 安装请求的资源相匹配。您可以使用有效的 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:

根据您的环境配置,请求的 CPU 数量。

以 core 或者 millicores 指定(例如: 200m, 0.5, 1)。

1Gi

概念证明 = 500m, 最小部署 =1

requests:
  memory:

根据您的环境配置,可用于请求的内存。

以字节为单位指定(例如: 200Ki, 50Mi, 5Gi)。

500m

概念证明 = 1Gi, 最小部署 = 16Gi*

limits:
  cpu:

根据您的环境配置,CPU 数量的限值。

以 core 或者 millicores 指定(例如: 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. 点 control plane 文件的名称,例如 basic-install
  6. YAML 标签。
  7. 编辑 Jaeger 参数,根据您的具体用例,使用 production-elasticsearch 模板参数替换默认的 all-in-one 模板。确定缩进格式正确。
  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 存储时,默认会创建一个任务来清理旧的 trace。要配置这个任务的选项,请编辑 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 索引清理参数

参数描述

已启用:

true/ false

启用或者禁用索引清理任务。

numberOfDays:

整数值

删除索引前等待的天数。

schedule:

"55 23 * * *"

运行任务的 cron 设置

有关在 OpenShift Container Platform 中配置 Elasticsearch 的详情,请参考配置日志存储

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

设置最小日志输出级别。

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

每当后端缓存无法检索授权数据时,无论是拒绝(已关闭)还是允许(打开)请求

true/false

true