×

您可以通过修改默认的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 实例的元数据。您可以为您的服务网格控制平面安装提供名称以跟踪您的工作,例如basic

字符串

spec

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

更多信息,请参见表 2。

status

ServiceMeshControlPlane 和构成服务网格控制平面的组件的当前状态。

更多信息,请参见表 3。

下表列出了ServiceMeshControlPlane 资源的规范。更改这些参数会配置 Red Hat OpenShift 服务网格组件。

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

addons

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

3scalegrafanajaegerkialiprometheus

cluster

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)

跟踪参数

以下示例说明了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)。在升级Operator期间,现有的ServiceMeshControlPlane对象将保留其版本设置。

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字段与metadata.generation不匹配,则status.conditions不会是最新的。

整数

注释

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

不可配置

就绪状态

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

字符串

操作符版本

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

字符串

组件

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

字符串

应用规范

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

ControlPlaneSpec

条件

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

字符串

图表版本

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

字符串

应用值

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

ControlPlaneSpec

其他资源