独立版 Debezium

Debezium Operator

qianmoQqianmoQ· 更新于 2026-09-28· 阅读 157 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Debezium Operator

概述

Debezium Operator 是一个 Kubernetes 操作员,用于在 Kubernetes 和 OpenShift 平台上自动部署和管理 Debezium Server 实例。该操作员实现了标准的 Kubernetes 操作员模式,将用户定义的 DebeziumServer 自定义资源转换为正在运行的变化数据捕获(CDC)管道,从而将数据库变更流式传输到各种接收端系统。

使用 Helm 部署 Debezium Operator

Helm 是安装该操作员的首选方式。该操作员可在 Debezium Helm Chart 仓库中获取。您可以将操作员安装到已有的命名空间,也可以安装到新的命名空间。

  1. 输入以下命令创建一个专用命名空间:

    kubectl create namespace debezium
  2. 输入以下命令添加 Debezium charts 仓库并安装操作员:

    helm repo add debezium https://charts.debezium.io
    helm install my-debezium-operator debezium/debezium-operator --version 3.2.0-final -n debezium

你可以在 Debezium Helm Chart 仓库中找到 Operator 的可用版本。

跟踪 Operator 部署进度

你可以运行命令来监控部署进度并查看 Operator 日志。

操作步骤

  • 要监控部署进度,请运行以下命令:

    kubectl get pod -n debezium --watch
  • 要监控 Operator 日志,请输入以下命令:

    kubectl logs deployment/debezium-operator -n debezium -f

Operator 运行后,它会监视新增的自定义资源,并基于这些自定义资源创建 Debezium Server 实例。

DebeziumServer 自定义资源

通过在 DebeziumServer 自定义资源中声明属性,来指定 Debezium Server 实例的配置。

示例 1. Debezium Server 自定义资源的基本结构

apiVersion: debezium.io/v1alpha1
kind: DebeziumServer
metadata:
  name: my-debezium-server
spec:
  image: String
  version: String
  runtime:
    environment:
      vars:
        - name: String
          value: String
      from:  # EnvFromSource array
        - sourceName: String
          # add other EnvFromSource fields as needed
    storage:
      data:
        type: persistent | ephemeral
        claimName: String  # required if type is "persistent"
      external:  # Volume array
        - name: String
          # add other Volume fields as needed
    jmx:
      enabled: boolean
      port: int  # defaults to 1099
    metrics:
      jmxExporter:
        enabled: boolean
      openTelemetry:
        enabled: boolean
        collector:
          endpoint: String
    templates:
      container:
        resources: ResourceRequirements
        securityContext: SecurityContext
      pod:
        metadata:
          annotations:  # Map<String, String>
            key: value
          labels:  # Map<String, String>
            key: value
        imagePullSecrets:  # List
          - name: String
        affinity: Affinity
        securityContext: PodSecurityContext
  quarkus:
    config:
      # quarkus properties
      format:
        value:
          type: String
          config:
            # format properties
      key:
        type: String
        config:
          # format properties
      header:
        type: String
        config:
          # format properties
  transforms:
    - type: String
      predicate: String
      negate: Boolean
      config:
        # transformation properties
  predicates:
    name:
      type: String
      config:
        # predicate properties
  sink:
    type: String
    config:
      # sink properties
  source:
    class: String
    config:
      # source connector properties

DebeziumServer 规范

DebeziumServer 架构参考

属性类型默认值描述
specDebeziumServerSpec无默认值Debezium Server 的规范
statusDebeziumServerStatus无默认值Debezium Server 实例的状态。

表 1. DebeziumServer 属性

DebeziumServerStatus 架构参考

用于:DebeziumServer

属性类型默认值描述
conditionsList<Condition>无默认值状态条件列表
observedGenerationLong0最近一次观察到的代(generation)

表 2. DebeziumServerStatus 属性

Condition 模式参考

用于:DebeziumServerStatus

属性类型默认值描述
statusString无默认值该条件的状态,取值为 True、False 或 Unknown。
messageString无默认值描述该条件最近一次状态转换详情的可读信息。
typeString无默认值条件的唯一标识符。

表 3. Condition 属性

DebeziumServerSpec 模式参考

用于:DebeziumServer

属性类型默认值说明
imageString无默认值用于 Debezium Server 容器的镜像。此属性优先于 version。
versionString与 operator 相同要使用的 Debezium Server 版本。
sinkSink无默认值Sink 配置。
sourceSource无默认值Debezium source 连接器配置。
formatFormat无默认值消息输出格式配置。
quarkusQuarkus无默认值传递给 Debezium Server 进程的 Quarkus 配置。
runtimeRuntime无默认值指定是否可以修改 Debezium Server 运行时的各个方面。
transformsList<Transformation>无默认值此 Debezium Server 实例采用的单条消息转换(Single Message Transformations)。
predicatesMap<String, Predicate>无默认值此 Debezium Server 实例采用的谓词。

表 4. DebeziumServerSpec 属性

Sink 架构参考

用于:DebeziumServerSpec

属性类型默认值说明
typeString无默认值此 Debezium Server 实例识别的 Sink 类型。
configMap无默认值Sink 配置属性。

表 5. Sink 属性

Source 架构参考

用于:DebeziumServerSpec

属性类型默认值说明
sourceClassString无默认值源连接器 Java 类的全限定名。
offsetOffset无默认值偏移量存储配置
schemaHistorySchemaHistory无默认值模式历史存储配置
configMap无默认值源连接器配置属性。

表 6. Source 属性

格式模式参考

使用于:DebeziumServerSpec

属性类型默认值描述
keyFormatType无默认值消息键格式配置。
valueFormatType无默认值消息值格式配置。
headerFormatType无默认值消息头格式配置。

表 7. Format 属性

FormatType 架构参考

用于:Format

属性类型默认值描述
typeStringjsonDebezium Server 识别的格式类型。
configMap无默认值格式配置属性。

表 8. FormatType 属性

Quarkus 模式参考

用于:DebeziumServerSpec

属性类型默认值描述
configMap无默认值Quarkus 配置属性。

表 9. Quarkus 属性

运行时模式参考

用于:DebeziumServerSpec

属性类型默认值描述
apiRuntimeApi无默认值API 配置
storageRuntimeStorage无默认值存储配置
environmentRuntimeEnvironment无默认值此 Debezium Server 实例使用的附加环境变量。
jmxJmxConfig无默认值JMX 配置。
templatesTemplates无默认值Debezium Server 资源模板。
serviceAccountString无默认值用于运行 Debezium Server Pod 的现有服务账号
metricsMetrics无默认值指标配置

表 10. 运行时属性

RuntimeApi 模式参考

用于:Runtime

属性类型默认值说明
enabledboolean无默认值是否为该 Debezium Server 实例启用此 API
portint8080暴露该 API 的 k8s 服务所使用的端口号

表 11. RuntimeApi 属性

RuntimeStorage 模式参考

用于:Runtime

属性类型默认值描述
dataDataStorage无默认值此 Debezium Server 实例使用的文件存储配置。
externalList<Volume>无默认值挂载到 /debezium/external 的附加卷

表 12. RuntimeStorage 属性

RuntimeEnvironment 模式参考

用于:Runtime

属性类型默认值描述
varsList<ContainerEnvVar>无默认值应用于容器的环境变量。
fromList<EnvFromSource>无默认值在容器中从 ConfigMap 或 Secret 设置的额外环境变量。

表 13. RuntimeEnvironment 属性

JmxConfig 模式参考

用于:Runtime

属性类型默认值描述
enabledbooleanfalse是否为此 Debezium Server 实例启用 JMX。
portint1099JMX 端口。
authenticationJmxAuthentication无默认值JMX 认证配置。

表 14. JmxConfig 属性

JmxAuthentication 模式参考

用于:JmxConfig

属性类型默认值描述
enabledbooleanfalse是否为此 Debezium Server 实例启用 JMX 认证。
secretString无默认值提供凭据文件的 Secret
accessFileStringjmxremote.accessJMX 访问文件名与 Secret 键
passwordFileStringjmxremote.passwordJMX 密码文件名与 Secret 键

表 15. JmxAuthentication 属性

模板(Templates)模式参考

用于:Runtime

属性类型默认值说明
containerContainerTemplate无默认值容器模板
podPodTemplate无默认值Pod 模板。
volumeClaimPersistentVolumeClaimSpec无默认值数据卷的 PVC 模板,仅在未指定显式声明时使用。

表 16. Templates 属性

Metrics 架构参考

用于:Runtime

属性类型默认值说明
jmxExporterJmxExporter无默认值Prometheus JMX exporter 配置
openTelemetryOpenTelemetry无默认值OpenTelemetry 配置

表 17. Metrics 属性

JmxExporter 架构参考

用于:Metrics

属性类型默认值说明
enabledboolean无默认值启用 JMX Prometheus 导出器
configFromConfigMapKeySelector无默认值配置映射键引用,其值将用作配置文件

表 18. JmxExporter 属性

OpenTelemetry 模式参考

用于:Metrics

启用 OpenTelemetry 后,Operator 会自动为 Debezium Server 容器配置以下环境变量:

  • OTEL_ENABLED —— 激活随 Debezium Server 捆绑的 OpenTelemetry Java Agent。
  • OTEL_SDK_DISABLED —— 设置为 false 以确保 OpenTelemetry SDK 处于活动状态。
  • OTEL_EXPORTER_OTLP_ENDPOINT —— OTLP 收集器端点(默认为 http://localhost:4318)。
  • OTEL_METRICS_EXPORTER —— 指标导出器类型(默认为 otlp)。
  • OTEL_SERVICE_NAME —— 设置为 DebeziumServer 资源的名称。
  • OTEL_RESOURCE_ATTRIBUTES —— 包含 service.name 和 debezium.connector.type 属性。
  • OTEL_JMX_CONFIG —— 指向内置的 JMX 到 OpenTelemetry 指标映射配置。

你可以通过在 spec.runtime.environment.vars 中指定任意这些环境变量来覆盖它们。用户提供的环境变量优先于 Operator 管理的默认值。

属性类型默认值说明
enabledbooleanfalse启用 OpenTelemetry
collectorOtelCollector无默认值OpenTelemetry 收集器配置

表 19. OpenTelemetry 属性

OtelCollector 架构参考

用于:OpenTelemetry

属性类型默认值说明
endpointStringhttp://localhost:4318OTLP 收集器端点

表 20. OpenTelemetry 收集器属性

Transformation 架构参考

用于:DebeziumServerSpec

属性类型默认值描述
typeString无默认值实现该转换的 Java 类的完全限定名。
configMap无默认值转换特有的配置属性。
predicateString无默认值要应用于此转换的谓词的名称。
negatebooleanfalse决定是否对所应用谓词的结果取反。

表 21. 转换属性

谓词模式参考

用于:DebeziumServerSpec

属性类型默认值说明
typeString无默认值实现该谓词的 Java 类的完全限定名。
configMap无默认值谓词的配置属性。

表 22. 谓词属性

ConfigMapOffsetStore 架构参考

用于:Offset

属性类型默认值说明
nameString无默认值偏移量配置映射(ConfigMap)的名称
configMap无默认值附加的存储配置属性。

表 23. ConfigMapOffsetStore 属性

ContainerEnvVar 架构参考

用于:RuntimeEnvironment

属性类型默认值描述
name字符串无默认值环境变量的名称。
value字符串无默认值环境变量的值。

表 24. ContainerEnvVar 属性

ContainerTemplate 架构参考

用于:Templates

属性类型默认值描述
resourcesResourceRequirements无默认值CPU 和内存资源需求。
securityContextSecurityContext无默认值容器安全上下文。
probesProbes无默认值容器探针配置。
imagePullPolicyAlways,IfNotPresent,Never无默认值容器的镜像拉取策略。

表 25. ContainerTemplate 属性

CustomStore 模式参考

用于:Offset、SchemaHistory

属性类型默认值说明
typeString无默认值实现该存储的 Java 类的完全限定名。
configMap无默认值存储配置属性。

表 26. CustomStore 属性

DataStorage 模式参考

用于:RuntimeStorage

属性类型默认值说明
typeephemeral,persistentephemeral存储类型。
claimNameString无默认值持久化存储所使用的持久卷声明(PersistentVolumeClaim)的名称。

表 27. DataStorage 属性

FileOffsetStore 模式参考

用于:Offset

属性类型默认值描述
fileName字符串无默认值偏移量文件的名称(相对于数据根目录)
configMap无默认值额外的存储配置属性。

表 28. FileOffsetStore 属性

FileSchemaHistoryStore 模式参考

用于:SchemaHistory

属性类型默认值描述
fileName字符串无默认值偏移量文件的名称(相对于数据根目录)
configMap无默认值额外的存储配置属性。

表 29. FileSchemaHistoryStore 属性

InMemoryOffsetStore 模式参考

用于:Offset

属性类型默认值描述
configMap无默认值其他存储配置属性。

表 30. InMemoryOffsetStore 属性

InMemorySchemaHistoryStore 模式参考

用于:SchemaHistory

属性类型默认值描述
configMap无默认值其他存储配置属性。

表 31. InMemorySchemaHistoryStore 属性

JdbcOffsetStore 模式参考

用于:Offset

属性类型默认值描述
tableJdbcOffsetTableConfig无默认值偏移量表的配置
urlString无默认值JDBC 连接 URL
userString无默认值用于连接存储数据库的用户名
passwordString无默认值用于连接存储数据库的密码
retryDelaylong无默认值连接失败时的重试延迟(毫秒)
maxRetriesint无默认值连接失败时的最大重试次数
configMap无默认值存储的其他配置属性。

表 32. JdbcOffsetStore 属性

JdbcOffsetTableConfig 模式参考

用于:JdbcOffsetStore

属性类型默认值说明
nameString无默认值偏移量表的名称
ddlString无默认值用于创建偏移量表的 DDL 语句
selectString无默认值用于从偏移量表中查询数据的语句
insertString无默认值用于向偏移量表中插入数据的语句
deleteString无默认值用于更新偏移量表的语句

表 33. JdbcOffsetTableConfig 属性

JdbcSchemaHistoryStore 模式参考

用于:SchemaHistory

属性类型默认值描述
tableJdbcSchemaHistoryTableConfig无默认值偏移量表的配置
urlString无默认值JDBC 连接 URL
userString无默认值用于连接存储数据库的用户名
passwordString无默认值用于连接存储数据库的密码
retryDelaylong无默认值连接失败时的重试延迟(毫秒)
maxRetriesint无默认值连接失败时的最大重试次数
configMap无默认值存储的其他配置属性。

表 34. JdbcSchemaHistoryStore 属性

JdbcSchemaHistoryTableConfig 模式参考

用于:JdbcSchemaHistoryStore

属性类型默认值描述
name字符串无默认值偏移量表的名称
ddl字符串无默认值用于创建模式历史表的 DDL 语句
select字符串无默认值用于从模式历史表中查询数据的语句
insert字符串无默认值用于向模式历史表中插入数据的语句
dataExistsSelect字符串无默认值用于检查模式历史表中是否存在某些数据的语句

表 35. JdbcSchemaHistoryTableConfig 属性

KafkaOffsetStore 模式参考

用于:Offset

属性类型默认值描述
propsMap无默认值附加的 Kafka 客户端属性。
bootstrapServersString无默认值连接器用于与 Kafka 集群建立初始连接的主机/端口对列表
topicString无默认值用于存储偏移量的 Kafka 主题名称
partitionsint无默认值创建偏移量存储主题时使用的分区数
replicationFactorint无默认值创建偏移量存储主题时使用的副本因子
configMap无默认值附加的存储配置属性。

表 36. KafkaOffsetStore 属性

KafkaSchemaHistoryStore 模式参考

用于:SchemaHistory

属性类型默认值描述
bootstrapServersString无默认值连接器用于与 Kafka 集群建立初始连接的主机/端口对列表
topicString无默认值用于存储偏移量的 Kafka 主题名称
partitionsint无默认值创建偏移量存储主题时使用的分区数
replicationFactorint无默认值创建偏移量存储主题时使用的副本因子
configMap无默认值其他存储配置属性。

表 37. KafkaSchemaHistoryStore 属性

MetadataTemplate 架构参考

用于:PodTemplate

属性类型默认值描述
labelsMap<String, String>无默认值添加到 Kubernetes 资源上的标签
annotationsMap<String, String>无默认值添加到 Kubernetes 资源上的注解

表 38. MetadataTemplate 属性

Offset 架构参考

用于:Source

属性类型默认值描述
fileFileOffsetStore无默认值基于文件的偏移量存储配置
memoryInMemoryOffsetStore无默认值基于内存的偏移量存储配置
redisRedisOffsetStore无默认值基于 Redis 的偏移量存储配置
kafkaKafkaOffsetStore无默认值基于 Kafka 的存储配置
jdbcJdbcOffsetStore无默认值基于 JDBC 的存储配置
configMapConfigMapOffsetStore无默认值基于 ConfigMap 的偏移量存储配置
storeCustomStore无默认值自定义偏移量存储配置
flushMslong60000尝试提交偏移量的间隔时间

表 39. 偏移量属性

PodTemplate 架构参考

用于:Templates

属性类型默认值说明
metadataMetadataTemplate无默认值应用于该资源的元数据。
imagePullSecretsList<LocalObjectReference>无默认值用于拉取该 Pod 所使用的任意镜像的本地 Secret 引用列表。
affinityAffinity无默认值Pod 亲和性规则
securityContextPodSecurityContext无默认值Pod 级别的安全属性和容器设置

表 40. PodTemplate 属性

探针(Probe)架构参考

用于:Probes

属性类型默认值说明
initialDelaySecondsint5容器启动后经过多少秒才开始执行探针。
periodSecondsint10执行探针的间隔时间(以秒为单位)。
timeoutSecondsint10探针超时的秒数。
failureThresholdint3在整体检查判定为失败之前允许连续失败的次数。

表 41. 探针属性

Probes 架构参考

用于:ContainerTemplate

属性类型默认值说明
readinessProbe无默认值应用于容器的就绪探针配置。
livenessProbe无默认值应用于容器的存活探针配置。

表 42. 探针属性

RedisOffsetStore 模式参考

用于:Offset

属性类型默认值描述
addressString无默认值用于连接的 Redis host:port
userString无默认值Redis 用户名
passwordString无默认值Redis 密码
sslEnabledbooleanfalseRedis 用户名
keyString无默认值Redis 哈希键
waitRedisStoreWaitConfig无默认值配置副本写入的验证方式
configMap无默认值其他存储配置属性。

表 43. RedisOffsetStore 属性

RedisSchemaHistoryStore 模式参考

用于:SchemaHistory

属性类型默认值描述
addressString无默认值用于连接的 Redis host:port
userString无默认值Redis 用户名
passwordString无默认值Redis 密码
sslEnabledbooleanfalseRedis 用户名
keyString无默认值Redis 哈希键
waitRedisStoreWaitConfig无默认值配置副本写入的校验方式
configMap无默认值附加的存储配置属性。

表 44. RedisSchemaHistoryStore 属性

RedisStoreWaitConfig 模式参考

用于:RedisOffsetStore、RedisSchemaHistoryStore

属性类型默认值描述
enabledbooleanfalse对于带有副本的 Redis,此选项允许验证数据已写入副本
timeoutMslong1000等待副本时的超时时间(毫秒)
retrybooleanfalse启用等待副本时的重试
retryDelayMslong1000等待时重试的延迟时间

表 45. RedisStoreWaitConfig 属性

SchemaHistory 模式参考

用于:Source

属性类型默认值描述
fileFileSchemaHistoryStore无默认值基于文件的 Schema 历史存储配置
memoryInMemorySchemaHistoryStore无默认值基于内存的 Schema 历史存储配置
redisRedisSchemaHistoryStore无默认值基于 Redis 的 Schema 历史存储配置
kafkaKafkaSchemaHistoryStore无默认值基于 Kafka 的 Schema 历史存储配置
jdbcJdbcSchemaHistoryStore无默认值基于 JDBC 的 Schema 历史存储配置
storeCustomStore无默认值自定义 Schema 历史存储配置
configMap无默认值额外的通用 Schema 历史存储配置属性。

表 46. SchemaHistory 属性

完整的 Debezium Server 配置示例

以下示例展示了包含前面各表中属性的完整 Debezium Server 自定义资源。

示例 2. 完整的 Debezium Server 自定义资源

apiVersion: debezium.io/v1alpha1
kind: DebeziumServer
metadata:
  name: my-debezium-server
spec:
  version: "3.2.0"
  source:
    class: io.debezium.connector.mysql.MySqlConnector
    config:
      database.hostname: mysql-server
      database.port: 3306
      database.user: debezium
      database.password: secret
      database.server.id: 184054
      topic.prefix: mysql
      database.include.list: inventory
    offset:
      type: kafka
      config:
        bootstrap.servers: kafka:9092
        topic: debezium-offsets
    schemaHistory:
      type: kafka
      config:
        bootstrap.servers: kafka:9092
        topic: debezium-schema-history
  sink:
    type: kafka
    config:
      bootstrap.servers: kafka:9092
  format:
    key:
      type: json
    value:
      type: json
      config:
        schemas.enable: false
  runtime:
    jmx:
      enabled: true
      port: 1099
    storage:
      data:
        type: persistent
        claimName: debezium-data-pvc
    metrics:
      jmxExporter:
        enabled: true
      openTelemetry:
        enabled: true
        collector:
          endpoint: http://otel-collector:4318
  transforms:
    - type: io.debezium.transforms.UnwrapFromEnvelope
      config:
        drop.tombstones: false
      predicate: inventory-filter
      negate: false
  predicates:
    inventory-filter:
      type: org.apache.kafka.connect.transforms.predicates.TopicNameMatches
      config:
        pattern: "mysql.inventory.*"
  quarkus:
    config:
      quarkus.log.level: INFO
      quarkus.http.port: 8080

评论

登录后参与评论

正在加载评论…