×

您可以通过修改默认的ServiceMeshControlPlane (SMCP) 资源或创建完全自定义的 SMCP 资源来自定义您的 Red Hat OpenShift 服务网格。本参考部分介绍了 SMCP 资源可用的配置选项。

服务网格控制平面参数

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

表 1. ServiceMeshControlPlane 资源参数
名称 描述 类型

apiVersion

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

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

kind

Kind 是一个字符串值,表示此对象表示的 REST 资源。

对于 ServiceMeshControlPlane,ServiceMeshControlPlane 是唯一有效的值。

metadata

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

字符串

spec

ServiceMeshControlPlane 的期望状态的规范。这包括构成 Service Mesh 控制平面的所有组件的配置选项。

更多信息,请参见表 2。

status

ServiceMeshControlPlane 及其包含的 Service Mesh 控制平面组件的当前状态。

更多信息,请参见表 3。

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

表 2. ServiceMeshControlPlane 资源规范
名称 描述 可配置参数

addons

addons 参数配置除了核心 Service Mesh 控制平面组件之外的其他功能,例如可视化或指标存储。

3scalegrafanajaegerkialiprometheus

cluster

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

meshExpansionmultiClusternamenetwork

gateways

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

enabledadditionalEgressadditionalIngressegressingressopenshiftRoute

general

general 参数表示不适合其他任何位置的常规 Service Mesh 控制平面配置。

loggingvalidationMessages

policy

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

mixerremotetypetype 可以设置为 IstiodMixerNone

profiles

您可以使用 profiles 参数选择要用于默认值的 ServiceMeshControlPlane 配置文件。

默认

proxy

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

accessLoggingadminPortconcurrencyenvoyMetricsService

runtime

您可以使用 runtime 参数配置 Service Mesh 控制平面组件。

componentsdefaults

security

security 参数允许您配置 Service Mesh 控制平面的安全方面。

certificateAuthoritycontrolPlaneidentitydataPlanetrust

techPreview

techPreview 参数启用对技术预览版功能的早期访问。

N/A

telemetry

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

mixerremotetypetype 可以设置为 IstiodMixerNone

tracing

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

samplingtypetype 可以设置为 JaegerNone

version

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

字符串

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

表 3. ServiceMeshControlPlane 资源 ControlPlaneStatus
名称 描述 类型

annotations

annotations 参数存储其他通常是冗余的状态信息,例如 ServiceMeshControlPlane 部署的组件数量。这些状态由命令行工具 oc 使用,该工具尚不允许在 JSONPath 表达式中计数对象。

不可配置

conditions

表示对对象当前状态的最新可用观察结果。Reconciled 指示操作员是否已完成将已部署组件的实际状态与 ServiceMeshControlPlane 资源中的配置进行协调。Installed 指示 Service Mesh 控制平面是否已安装。Ready 指示所有 Service Mesh 控制平面组件是否已准备好。

字符串

components

显示每个已部署的 Service Mesh 控制平面组件的状态。

字符串

appliedSpec

应用所有配置文件后配置选项的结果规范。

ControlPlaneSpec

appliedValues

用于生成图表的结果 values.yaml。

ControlPlaneSpec

chartVersion

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

字符串

observedGeneration

控制器在最近一次协调期间观察到的世代。状态中的信息与对象的此特定世代相关。如果 status.observedGeneration 字段与 metadata.generation 不匹配,则 status.conditions 不会更新。

整数

operatorVersion

最后处理此资源的操作员的版本。

字符串

readiness

组件和自有资源的准备就绪状态。

字符串

此示例 ServiceMeshControlPlane 定义包含所有受支持的参数。

示例 ServiceMeshControlPlane 资源
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  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: {}

spec 参数

常规参数

以下是一个示例,它说明了 ServiceMeshControlPlane 对象的 spec.general 参数以及可用参数的说明和适当的值。

示例常规参数
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  general:
    logging:
      componentLevels: {}
          # misc: error
      logAsJSON: false
    validationMessages: true
表 4. Istio 常规参数
参数 描述 默认值
logging:

用于配置 Service Mesh 控制平面组件的日志记录。

N/A

logging:
 componentLevels:

用于指定组件日志记录级别。

可能的值:debuginfowarnerrorfatal

N/A

logging:
 logAsJSON:

用于启用或禁用 JSON 日志记录。

true/false

N/A

validationMessages:

用于启用或禁用 Istio.io 资源状态字段的验证消息。这对于检测资源中的配置错误很有用。

true/false

N/A

profiles 参数

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

以下示例说明了ServiceMeshControlPlane 对象的spec.profiles 参数

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

有关创建配置文件的信息,请参阅创建控制平面配置文件

有关安全配置的更详细示例,请参阅相互传输层安全性 (mTLS)

tracing 参数

以下示例说明了ServiceMeshControlPlane 对象的spec.tracing 参数,以及可用参数及其相应值的描述。

示例 tracing 参数
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 100
    type: Jaeger
表 5. Istio tracing 参数
参数 描述 默认值
tracing:
 sampling:

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

介于 0 和 10000 之间的整数,表示 0.01% 的增量(0% 到 100%)。例如,将值设置为10 会采样 0.1% 的请求,将值设置为100 将采样 1% 的请求,将值设置为500 会采样 5% 的请求,而设置为10000 会采样 100% 的请求。

10000(100% 的跟踪)

tracing:
 type:

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

NoneJaeger

Jaeger

version 参数

Red Hat OpenShift Service Mesh Operator 支持安装不同版本的ServiceMeshControlPlane。您可以使用 version 参数指定要安装的服务网格控制平面的版本。如果您在创建 SMCP 时未指定 version 参数,则 Operator 将值设置为最新版本:(2.6)。在升级 Operator 期间,现有的ServiceMeshControlPlane 对象会保留其 version 设置。

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
# ...
表 6. 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

status 参数

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

表 7. Istio status 参数
名称 描述 类型

observedGeneration

控制器在最近一次协调期间观察到的世代。状态中的信息与对象的此特定世代相关。如果 status.observedGeneration 字段与 metadata.generation 不匹配,则 status.conditions 不会更新。

整数

annotations

annotations 参数存储其他通常是冗余的状态信息,例如ServiceMeshControlPlane 对象部署的组件数量。这些状态由命令行工具oc 使用,该工具尚不支持在 JSONPath 表达式中计数对象。

不可配置

readiness

组件和所属资源的准备就绪状态。

字符串

operatorVersion

上次处理此资源的 Operator 版本。

字符串

components

显示每个已部署的 Service Mesh 控制平面组件的状态。

字符串

appliedSpec

应用所有配置文件后配置选项的结果规范。

ControlPlaneSpec

conditions

表示对象当前状态的最新可用观察结果。Reconciled 表示 Operator 已完成将部署组件的实际状态与ServiceMeshControlPlane 资源中的配置进行协调。Installed 表示服务网格控制平面已安装。Ready 表示所有服务网格控制平面组件都已准备就绪。

字符串

chartVersion

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

字符串

appliedValues

用于生成图表的结果values.yaml 文件。

ControlPlaneSpec

其他资源