×

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

Service Mesh控制平面参数

下表列出了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资源spec
名称 描述 可配置参数

addons

addons 参数用于配置核心服务网格控制平面组件之外的附加功能,例如可视化或指标存储。

3scalegrafanajaegerkialiprometheus

集群

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

meshExpansionmultiClusternamenetwork

网关

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

enabledadditionalEgressadditionalIngressegressingressopenshiftRoute

常规

general 参数表示不适合其他任何位置的常规服务网格控制平面配置。

loggingvalidationMessages

策略

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

mixerremotetypetype 可以设置为 IstiodMixerNone

配置文件

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

默认

代理

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

accessLoggingadminPortconcurrencyenvoyMetricsService

运行时

您可以使用 runtime 参数配置服务网格控制平面组件。

componentsdefaults

安全

security 参数允许您配置服务网格控制平面的安全方面。

certificateAuthoritycontrolPlaneidentitydataPlanetrust

技术预览

techPreview 参数启用对处于技术预览阶段的功能的抢先访问。

N/A

遥测

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

mixerremotetypetype 可以设置为 IstiodMixerNone

追踪

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

samplingtypetype 可以设置为 JaegerNone

版本

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

字符串

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

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

注释

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

不可配置

条件

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

字符串

组件

显示每个已部署的服务网格控制平面组件的状态。

字符串

应用规范

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

ControlPlaneSpec

应用值

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

ControlPlaneSpec

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

图表版本

字符串

观察到的世代

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

整数

操作符版本

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

字符串

就绪状态

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

字符串

此示例 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:

用于配置服务网格控制平面组件的日志记录。

N/A

logging:
 componentLevels:

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

可能的值:debuginfowarnerrorfatal

N/A

logging:
 logAsJSON:

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

true/false

N/A

validationMessages:

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

true/false

N/A

配置文件参数

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

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

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

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

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

技术预览参数

spec.techPreview 参数启用对处于技术预览阶段的功能的抢先访问。

技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

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

追踪参数

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

示例跟踪参数
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 100
    type: Jaeger
表 5. Istio 跟踪参数
参数 描述 默认值
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

版本参数

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

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参数描述了服务网格的当前状态。此信息由 Operator 生成,并且是只读的。

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

观察到的世代

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

整数

注释

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

不可配置

就绪状态

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

字符串

操作符版本

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

字符串

组件

显示每个已部署的服务网格控制平面组件的状态。

字符串

应用规范

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

ControlPlaneSpec

条件

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

字符串

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

图表版本

字符串

应用值

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

ControlPlaneSpec

其他资源