1.24. Service Mesh control plane 配置参考

您可以通过修改默认的 ServiceMeshControlPlane (SMCP) 资源或创建完全自定义 SMCP 资源来自定义 Red Hat OpenShift Service Mesh。本参考部分记录了可用于 SMCP 资源的配置选项。

1.24.1. Service Mesh Control plane 参数

下表列出了 ServiceMeshControlPlane 资源的顶级参数。

表 1.31. ServiceMeshControlPlane 资源参数

名称描述类型

apiVersion

APIVersion 定义对象的这个表示法的版本化的 schema。服务器将识别的模式转换为最新的内部值,并可拒绝未识别的值。ServiceMeshControlPlane 版本 2.0 的值为 maistra.io/v2

ServiceMeshControlPlane 版本 2.0 的值为 maistra.io/v2

kind

kind 是一个字符串值,代表此对象所代表的 REST 资源。

ServiceMeshControlPlane 是 ServiceMeshControlPlane 的唯一有效值。

metadata

关于这个 ServiceMeshControlPlane 实例的元数据。您可以为 Service Mesh control plane 安装提供一个名称来跟踪您的工作,例如 basic

字符串

spec

ServiceMeshControlPlane 所需状态的规格。这包括组成 Service Mesh control plane 的所有组件的配置选项。

如需更多信息,请参阅表 2。

status

ServiceMeshControlPlane 的当前状态以及组成 Service Mesh control plane 的组件。

如需更多信息,请参阅表 3。

下表列出了 ServiceMeshControlPlane 资源规格。更改这些参数配置 Red Hat OpenShift Service Mesh 组件。

表 1.32. ServiceMeshControlPlane 资源规格

名称描述可配置参数

附加组件

addons 参数配置除 Service Mesh control plane 组件之外的额外功能,如视觉化或指标存储。

3scalegrafanajaegerkialiprometheus

cluster

cluster 参数设置集群的常规配置(集群名称、网络名称、多集群、网格扩展等等)

meshExpansionmultiClustername网络

gateways

您可以使用 gateways 参数为网格配置入口和出口网关。

enabledadditionalEgressadditionalIngressegressingressopenshiftRoute

general

general 参数代表在其它任何位置都不适用的常规 Service Mesh control plane 配置。

loggingvalidationMessages

policy

您可以使用 policy 参数为 Service Mesh control plane 配置策略检查。通过将 spec.policy.enabled 设置为 true 来启用策略检查。

mixer remotetypetype 可以被设置为 IstiodMixerNone

profiles

您可以使用 profile 参数设置用于默认值的 ServiceMeshControlPlane 配置集。

default

proxy

您可以使用 proxy 参数来配置 sidecar 的默认行为。

accessLoggingadminPortconcurrencyenvoyMetricsService

runtime

您可以使用 runtime 参数配置 Service Mesh control plane 组件。

componentsdefaults

安全

security 参数允许您为 Service Mesh control plane 配置安全性方面。

certificateAuthoritycontrolPlaneidentitydataPlanetrust

techPreview

techPreview 参数允许早期访问技术预览中的功能。

N/A

Telemetry

如果 spec.mixer.telemetry.enabled 被设置为 true,则遥测会被启用。

mixer, remote, 和 type.type 可以被设置为 IstiodMixerNone

tracing

您可以使用 tracing 参数为网格启用分布式追踪。

sampling, type.type 可以被设置为 JaegerNone

version

您可以使用 version 参数指定要安装的 Service Mesh control plane 的 Maistra 版本。当使用空版本创建 ServiceMeshControlPlane 时,准入 Webhook 会将版本设置为当前版本。带有空版本的新的 ServiceMeshControlPlanes 设置为 v2.0。现有带有空版本的 ServiceMeshControlPlanes 会保留其设置。

字符串

ControlPlaneStatus 代表服务网格的当前状态。

表 1.33. ServiceMeshControlPlane 资源 ControlPlaneStatus

名称描述类型

annotations

annotations 参数存储额外的、通常多余的状态信息,如 ServiceMeshControlPlane 部署的组件数量。命令行工具 oc 使用这些状态,它还不允许在 JSONPath 表达式中计数对象。

无法配置

conditions

代表对象当前状态的最新可用影响。Recoveryd 表示 Operator 是否已完成与 ServiceMeshControlPlane 资源中的配置协调已部署组件的实际状态。Installed 显示是否安装了 Service Mesh control plane。Ready 显示是否所有 Service Mesh control plane 组件都已就绪。

字符串

components

显示每个部署的 Service Mesh control plane 组件的状态。

字符串

appliedSpec

应用所有配置集后生成的配置选项规格。

ControlPlaneSpec

appliedValues

用于生成 chart 的 values.yaml。

ControlPlaneSpec

chartVersion

最后一次为此资源处理的图表版本。

字符串

observedGeneration

控制器在最新协调期间观察到的生成。状态中的信息与对象的特定生成有关。如果 status.observedGeneration 项与 metadata.generation 不匹配,则代表 status.conditions 没有处于最新状态。

整数

operatorVersion

最后处理此资源的 operator 版本。

字符串

readiness

组件和拥有资源的就绪状态。

字符串

这个示例 ServiceMeshControlPlane 定义包含所有支持的参数。

ServiceMeshControlPlane 资源示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.3
  proxy:
    runtime:
      container:
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 128Mi
  tracing:
    type: Jaeger
  gateways:
    ingress: # istio-ingressgateway
      service:
        type: ClusterIP
        ports:
        - name: status-port
          port: 15020
        - name: http2
          port: 80
          targetPort: 8080
        - name: https
          port: 443
          targetPort: 8443
      meshExpansionPorts: []
    egress: # istio-egressgateway
      service:
        type: ClusterIP
        ports:
        - name: status-port
          port: 15020
        - name: http2
          port: 80
          targetPort: 8080
        - name: https
          port: 443
          targetPort: 8443
    additionalIngress:
      some-other-ingress-gateway: {}
    additionalEgress:
      some-other-egress-gateway: {}

  policy:
    type: Mixer
    mixer: # only applies if policy.type: Mixer
      enableChecks: true
      failOpen: false

  telemetry:
    type: Istiod # or Mixer
    mixer: # only applies if telemetry.type: Mixer, for v1 telemetry
      sessionAffinity: false
      batching:
        maxEntries: 100
        maxTime: 1s
      adapters:
        kubernetesenv: true
        stdio:
          enabled: true
          outputAsJSON: true
  addons:
    grafana:
      enabled: true
      install:
        config:
          env: {}
          envSecrets: {}
        persistence:
          enabled: true
          storageClassName: ""
          accessMode: ReadWriteOnce
          capacity:
            requests:
              storage: 5Gi
        service:
          ingress:
            contextPath: /grafana
            tls:
              termination: reencrypt
    kiali:
      name: kiali
      enabled: true
      install: # install kiali CR if not present
        dashboard:
          viewOnly: false
          enableGrafana: true
          enableTracing: true
          enablePrometheus: true
      service:
        ingress:
          contextPath: /kiali
    jaeger:
      name: jaeger
      install:
        storage:
          type: Elasticsearch # or Memory
          memory:
            maxTraces: 100000
          elasticsearch:
            nodeCount: 3
            storage: {}
            redundancyPolicy: SingleRedundancy
            indexCleaner: {}
        ingress: {} # jaeger ingress configuration
  runtime:
    components:
      pilot:
        deployment:
          replicas: 2
        pod:
          affinity: {}
        container:
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 128Mi
      grafana:
        deployment: {}
        pod: {}
      kiali:
        deployment: {}
        pod: {}

1.24.2. spec 参数

1.24.2.1. 常规参数

下面是一个示例,它演示了 ServiceMeshControlPlane 对象的 spec.general 参数,以及可用参数和值的信息。

常规参数示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  general:
    logging:
      componentLevels: {}
          # misc: error
      logAsJSON: false
    validationMessages: true

表 1.34. Istio 常规参数

参数描述默认值
logging:

用于为 Service Mesh control plane 组件配置日志记录。

 

N/A

logging:
 componentLevels:

用于指定组件日志级别。

可能的值有:tracedebuginfowarningerrorfatalpanic

N/A

logging:
 logLevels:

可能的值有:tracedebuginfowarningerrorfatalpanic

 

N/A

logging:
 logAsJSON:

用于启用或禁用 JSON 日志。

true/false

N/A

validationMessages:

用于在 istio.io 资源的状态字段中启用或禁用验证信息。这对于检测资源中的配置错误非常有用。

true/false

N/A

1.24.2.2. 配置集参数

您可以使用 ServiceMeshControlPlane 对象配置集创建可重复使用的配置。如果没有配置 profile 设置,Red Hat OpenShift Service Mesh 将使用默认配置集。

下面是一个示例,它演示了 ServiceMeshControlPlane 对象的 spec.profiles 参数:

配置集参数示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  profiles:
  - YourProfileName

有关创建配置集的详情,请参考创建 control plane 配置集

有关安全配置的详情,请参阅传输层安全 (mTLS)

1.24.2.3. techPreview 参数

spec.techPreview 参数允许早期访问技术预览的功能。

重要

技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

1.24.2.4. 追踪参数

以下示例演示了 ServiceMeshControlPlane 对象的 spec.tracing 参数,以及可用参数和值的信息。

追踪参数示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.3
  tracing:
    sampling: 100
    type: Jaeger

表 1.35. Istio 追踪参数

参数描述默认值
tracing:
 sampling:

抽样率决定了 Envoy 代理生成 trace 的频率。您可以使用抽样率来控制向追踪系统报告的请求百分比。

0 到 10000 之间的整数值,代表 0.01% 的增长(0 到 100%)。例如,将值设置为 10 会抽样 0.1% 的请求,将值设为 100 会抽样 1% 的请求,设置为 500 会抽样 5% 的请求,设置 10000 会抽样 100% 的请求。

10000 (100% trace)

tracing:
 type:

目前 Jaeger 是唯一支持的追踪类型。默认启用 Jaeger。要禁用追踪,请将 type 参数设置为 None

None, Jaeger

Jaeger

1.24.2.5. version 参数

Red Hat OpenShift Service Mesh Operator 支持安装不同版本的 ServiceMeshControlPlane。您可以使用 version 参数指定要安装的 Service Mesh control plane 版本。如果您在创建 SMCP 时没有指定 version 参数,Operator 会将值设为最新版本:(2.3)。现有 ServiceMeshControlPlane 对象会在 Operator 升级过程中保留其版本设置。

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

表 1.36. 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

1.24.3. 状态参数

status 参数描述了服务网格的当前状态。这些信息由 Operator 生成,且为只读。

表 1.37. Istio 状态参数

名称描述类型

observedGeneration

控制器在最新协调期间观察到的生成。状态中的信息与对象的特定生成有关。如果 status.observedGeneration 项与 metadata.generation 不匹配,则代表 status.conditions 没有处于最新状态。

整数

annotations

annotations 参数存储额外的、通常多余的状态信息,如由 ServiceMeshControlPlane 对象部署的组件数量。命令行工具 oc 使用这些状态,它还不允许在 JSONPath 表达式中计数对象。

无法配置

readiness

组件和拥有资源的就绪状态。

字符串

operatorVersion

最后处理此资源的 Operator 版本。

字符串

components

显示每个部署的 Service Mesh control plane 组件的状态。

字符串

appliedSpec

应用所有配置集后生成的配置选项规格。

ControlPlaneSpec

conditions

代表对象当前状态的最新可用影响。Recoveryd 表示 Operator 已完成与 ServiceMeshControlPlane 资源中的配置协调已部署组件的实际状态。Installed 表示安装了 Service Mesh control plane。Ready 表示所有 Service Mesh control plane 组件都已就绪。

字符串

chartVersion

最后一次为此资源处理的图表版本。

字符串

appliedValues

生成的 values.yaml 文件,用于生成 chart。

ControlPlaneSpec

1.24.4. 其他资源