×

您可以通过修改 `KnativeEventing` 自定义资源 (CR) 中的 `workloads` 规范来覆盖某些特定部署的默认配置。目前,覆盖默认配置设置支持 `eventing-controller`、`eventing-webhook` 和 `imc-controller` 字段,以及探针的 `readiness` 和 `liveness` 字段。

`replicas` 规范不能覆盖使用水平 Pod 自动缩放器 (HPA) 的部署的副本数量,并且不适用于 `eventing-webhook` 部署。

您只能覆盖默认情况下在部署中定义的探针。

覆盖部署配置

目前,覆盖默认配置设置支持 `eventing-controller`、`eventing-webhook` 和 `imc-controller` 字段,以及探针的 `readiness` 和 `liveness` 字段。

`replicas` 规范不能覆盖使用水平 Pod 自动缩放器 (HPA) 的部署的副本数量,并且不适用于 `eventing-webhook` 部署。

在下面的示例中,`KnativeEventing` CR 覆盖了 `eventing-controller` 部署,以便

  • `readiness` 探针超时 `eventing-controller` 设置为 10 秒。

  • 部署指定了 CPU 和内存资源限制。

  • 部署有 3 个副本。

  • 添加了 `example-label: label` 标签。

  • 添加了 `example-annotation: annotation` 注解。

  • 将 `nodeSelector` 字段设置为选择具有 `disktype: hdd` 标签的节点。

KnativeEventing CR 示例
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  workloads:
  - name: eventing-controller
    readinessProbes: (1)
      - container: controller
        timeoutSeconds: 10
    resources:
    - container: eventing-controller
      requests:
        cpu: 300m
        memory: 100Mi
      limits:
        cpu: 1000m
        memory: 250Mi
    replicas: 3
    labels:
      example-label: label
    annotations:
      example-annotation: annotation
    nodeSelector:
      disktype: hdd
1 您可以使用 `readiness` 和 `liveness` 探针覆盖来覆盖部署容器中探针的所有字段,如 Kubernetes API 中所指定,但与探针处理程序相关的字段除外:`exec`、`grpc`、`httpGet` 和 `tcpSocket`。

`KnativeEventing` CR 标签和注释设置会覆盖部署本身及其生成的 Pod 的标签和注释。

修改消费者组 ID 和主题名称

您可以更改用于生成触发器、代理和通道使用的消费者组 ID 和主题名称的模板。

前提条件
  • 您在 OpenShift Container Platform 上拥有集群或专用管理员权限。

  • OpenShift Serverless Operator、Knative Eventing 和 `KnativeKafka` 自定义资源 (CR) 已安装在您的 OpenShift Container Platform 集群上。

  • 您已创建项目或有权访问具有在 OpenShift Container Platform 中创建应用程序和其他工作负载的适当角色和权限的项目。

  • 您已安装 OpenShift CLI ( `oc` )。

步骤
  1. 要更改用于生成触发器、代理和通道使用的消费者组 ID 和主题名称的模板,请修改 `KnativeKafka` 资源

    apiVersion: v1
    kind: KnativeKafka
    metadata:
      name: knative-kafka
      namespace: knative-eventing
    # ...
    spec:
      config:
        config-kafka-features:
          triggers.consumergroup.template: <template> (1)
          brokers.topic.template: <template> (2)
          channels.topic.template: <template> (3)
    1 触发器使用的消费者组 ID 生成模板。使用有效的 Go `text/template` 值。默认为 `"knative-trigger-{{ .Namespace }}-{{ .Name }}"`。
    2 代理使用的 Kafka 主题名称生成模板。使用有效的 Go `text/template` 值。默认为 `"knative-broker-{{ .Namespace }}-{{ .Name }}"`。
    3 通道使用的 Kafka 主题名称生成模板。使用有效的 Go `text/template` 值。默认为 `"messaging-kafka.{{ .Namespace }}.{{ .Name }}"`。
    示例模板配置
    apiVersion: v1
    kind: KnativeKafka
    metadata:
      name: knative-kafka
      namespace: knative-eventing
    # ...
    spec:
      config:
        config-kafka-features:
          triggers.consumergroup.template: "{% raw %}"knative-trigger-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}"
          brokers.topic.template: "{% raw %}"knative-broker-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}"
          channels.topic.template: "{% raw %}"messaging-kafka.{{ .Namespace }}.{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}"
  2. 应用 `KnativeKafka` YAML 文件

    $ oc apply -f <knative_kafka_filename>