1.27. Service Mesh control plane 配置参考
您可以通过修改默认的 ServiceMeshControlPlane
(SMCP) 资源或创建完全自定义 SMCP 资源来自定义 Red Hat OpenShift Service Mesh。本参考部分记录了可用于 SMCP 资源的配置选项。
1.27.1. Service Mesh Control plane 参数
下表列出了 ServiceMeshControlPlane
资源的顶级参数。
名称 | 描述 | 类型 |
---|---|---|
|
APIVersion 定义对象的这个表示法的版本化的 schema。服务器将识别的模式转换为最新的内部值,并可拒绝未识别的值。 |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。 |
|
|
关于这个 | 字符串 |
|
此 | 如需更多信息,请参阅表 2。 |
|
此 | 如需更多信息,请参阅表 3。 |
下表列出了 ServiceMeshControlPlane
资源规格。更改这些参数配置 Red Hat OpenShift Service Mesh 组件。
名称 | 描述 | 可配置参数 |
---|---|---|
|
|
|
|
|
|
|
您可以使用 |
|
|
|
|
|
您可以使用 |
|
|
您可以使用 |
|
|
您可以使用 |
|
|
您可以使用 |
|
|
|
|
|
| N/A |
|
如果 |
|
|
您可以使用 |
|
|
您可以使用 | 字符串 |
ControlPlaneStatus
代表服务网格的当前状态。
名称 | 描述 | 类型 |
---|---|---|
|
| 无法配置 |
|
代表对象当前状态的最新可用影响。 | 字符串 |
| 显示每个部署的 Service Mesh control plane 组件的状态。 | 字符串 |
| 应用所有配置集后生成的配置选项规格。 |
|
| 用于生成 chart 的 values.yaml。 |
|
| 最后一次为此资源处理的图表版本。 | 字符串 |
|
控制器在最新协调期间观察到的生成。状态中的信息与对象的特定生成有关。如果 | 整数 |
| 最后处理此资源的 operator 版本。 | 字符串 |
| 组件和拥有资源的就绪状态。 | 字符串 |
这个示例 ServiceMeshControlPlane
定义包含所有支持的参数。
ServiceMeshControlPlane
资源示例
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: version: v2.5 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: {}
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.5
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.27.2. spec 参数
1.27.2.1. 常规参数
下面是一个示例,它演示了 ServiceMeshControlPlane
对象的 spec.general
参数,以及可用参数和值的信息。
常规参数示例
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: general: logging: componentLevels: {} # misc: error logAsJSON: false validationMessages: true
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
general:
logging:
componentLevels: {}
# misc: error
logAsJSON: false
validationMessages: true
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
logging:
| 用于为 Service Mesh control plane 组件配置日志记录。 | N/A | |
logging: componentLevels:
| 用于指定组件日志级别。 |
可能的值包括: | N/A |
logging: logAsJSON:
| 用于启用或禁用 JSON 日志。 |
| N/A |
validationMessages:
| 用于在 istio.io 资源的状态字段中启用或禁用验证信息。这对于检测资源中的配置错误非常有用。 |
| N/A |
1.27.2.2. 配置集参数
您可以使用 ServiceMeshControlPlane
对象配置集创建可重复使用的配置。如果没有配置 profile
设置,Red Hat OpenShift Service Mesh 将使用默认配置集。
下面是一个示例,它演示了 ServiceMeshControlPlane
对象的 spec.profiles
参数:
配置集参数示例
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: profiles: - YourProfileName
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
profiles:
- YourProfileName
有关创建配置集的详情,请参阅创建 control plane 配置集。
有关安全配置的详情,请参阅 Mutual Transport Layer Security(mTLS)。
1.27.2.3. techPreview 参数
spec.techPreview
参数允许早期访问技术预览的功能。
技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
1.27.2.4. 追踪参数
以下示例演示了 ServiceMeshControlPlane
对象的 spec.tracing
参数,以及可用参数和值的信息。
追踪参数示例
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: version: v2.5 tracing: sampling: 100 type: Jaeger
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
spec:
version: v2.5
tracing:
sampling: 100
type: Jaeger
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
tracing: sampling:
| 抽样率决定了 Envoy 代理生成 trace 的频率。您可以使用抽样率来控制向追踪系统报告的请求百分比。 |
0 到 10000 之间的整数值,代表 0.01% 的增长(0 到 100%)。例如,将值设置为 |
|
tracing: type:
|
目前 |
|
|
1.27.2.5. version 参数
Red Hat OpenShift Service Mesh Operator 支持安装不同版本的 ServiceMeshControlPlane
。您可以使用 version 参数指定要安装的 Service Mesh control plane 版本。如果您在创建 SMCP 时没有指定 version 参数,Operator 会将值设为最新版本:(2.5)。现有 ServiceMeshControlPlane
对象会在 Operator 升级过程中保留其版本设置。
1.27.2.6. 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 # ...
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
# ...
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
| 是否使用 3scale 适配器 |
|
|
| 为 gRPC 服务器设定侦听地址 | 有效端口号 |
|
| 设置最小日志输出级别。 |
|
|
| 是否将日志格式转化为 JSON |
|
|
| 日志是否包含 gRPC 信息 |
|
|
| 是否收集 3scale 系统和后端的指标数据并报告给 Prometheus |
|
|
|
设置 3scale | 有效端口号 |
|
| 在从缓存中移除过期项目前等待的时间(以秒为单位) | 时间间隔(以秒为单位) |
|
| 尝试刷新缓存元素的过期时间 | 时间间隔(以秒为单位) |
|
|
在任何时间可以保存在缓存中的最大项目数。设为 | 有效数量 |
|
| 在缓存更新循环中检索无法访问的主机的次数 | 有效数量 |
|
|
在调用 |
|
|
| 终止到 3scale 系统和后端请求前等待的秒数 | 时间间隔(以秒为单位) |
|
| 在连接关闭前设置连接的最大秒数(+/-10% 抖动) | 时间间隔(以秒为单位) | 60 |
| 如果为 true,则尝试为授权请求创建一个内存 apisonator 缓存 |
|
|
| 如果启用了后端缓存,这会在 3scale 中设置刷新缓存的时间间隔(以秒为单位) | 时间间隔(以秒为单位) | 15 |
| 每当后端缓存无法检索授权数据时,无论是拒绝(已关闭)还是允许(打开)请求 |
|
|
1.27.3. 状态参数
status
参数描述了服务网格的当前状态。这些信息由 Operator 生成,且为只读。
名称 | 描述 | 类型 |
---|---|---|
|
控制器在最新协调期间观察到的生成。状态中的信息与对象的特定生成有关。如果 | 整数 |
|
| 无法配置 |
| 组件和拥有资源的就绪状态。 | 字符串 |
| 最后处理此资源的 Operator 版本。 | 字符串 |
| 显示每个部署的 Service Mesh control plane 组件的状态。 | 字符串 |
| 应用所有配置集后生成的配置选项规格。 |
|
|
代表对象当前状态的最新可用影响。 | 字符串 |
| 最后一次为此资源处理的图表版本。 | 字符串 |
|
生成的 |
|