您正在查看的文档Debezium的过时的版本。开云体育官方注册网址
如果你想查看这个页面的最新稳定版本,请走吧在这里

上部署Debeziu开云体育官方注册网址m Kubernetes

开云体育官方注册网址Debezium可以很容易地部署Kubernetes,一个开源容器管理平台。部署利用Strimzi项目,旨在简化的部署Apache Kubernetes通过卡夫卡自定义资源

测试您的部署,您可以使用minikube在本地机器上,Kubernetes集群。看到minikube文档有关如何安装minikube在您的机器上。如果你想测试Debezium部署本文档中描述开云体育官方注册网址完全minikube,您需要设置一个不安全的容器minikube图像注册表。要做到这一点,你需要minikube的开始——insecure-registry国旗:

“美元minikube开始——insecure-registry“10.0.0.0 / 24

10.0.0.1是默认的服务集群IP,所以这整个集群内部设置允许把图像。看到minikube文档为更多的细节。你也需要启用注册表minikube插件:

美元minikube插件使注册表

先决条件

保持容器分开其他工作负载集群,为Debezium创建一个专门的名称空间。开云体育官方注册网址在本文的其余部分,开云体育官方注册网址debezium-example将使用名称空间:

kubectl创建ns debezium开云体育官方注册网址-example美元

部署Strimzi运营商

正如上面提到的,我们将使用Strimzi Debeziu开云体育官方注册网址m部署,负责管理Kubernetes卡夫卡部署。请参见Strimzi部署文档更多细节关于如何部署Strimzi Kubernetes集群。

安装Strimzi是通过最简单的方式运营商Lifecycle Manager(洞螈)。如果你没有洞螈集群上安装,您可以通过运行下面的命令安装:

curl https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.20.0/install.sh sl | bash - s v0.20.0美元

现在,安装Strimzi运营商本身:

美元kubectl创建https://operatorhub.io/install/strimzi-kafka-operator.yaml - f

创建数据库的秘密开云体育电动老虎机

后来,当部署Debezium卡夫卡连接器,我们需要开云体育官方注册网址提供用户名和密码连接器能够连接到数据库。开云体育电动老虎机出于安全考虑,它是一个很好的实践没有直接提供的凭证,但让他们在一个单独的安全地方。Kubernetes提供了秘密为此对象。除了创建秘密对象本身,我们还需要创建一个角色,一个角色绑定,以便卡夫卡访问凭证。

让我们创建秘密对象:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f apiVersion: v1:秘密的元数据:名称:debezium-secret名称空间:debezium-example类型:不透明的数据:用户名:ZGViZXppdW0 =密码:ZGJ6 EOF

用户名密码包含base64编码的凭证(开云体育官方注册网址/dbz)连接到MySQL数据库,稍后我们将部署。开云体育电动老虎机

现在,我们可以创建一个角色,即前一步骤中创建的秘密:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f apiVersion: rbac.authorization.k8s。io / v1:元数据:角色名称:connector-configuration-role名称空间:debezium-example规则:- ap开云体育官方注册网址iGroups:["]资源:[“秘密”]resourceNames: [" debezium-secret]动词:“获得”EOF

我们也有这个角色绑定到卡夫卡连接集群服务帐户,这样卡夫卡连接可以访问的秘密:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f apiVersion: rbac.authorization.k8s。io / v1: RoleBinding元数据:名称:connector-configuration-role-binding名称空间:debezium-example主题:—开云体育官方注册网址—:ServiceAccount名称:debezium-connect-cluster-connect名称空间:debezium-example roleRef::角色名称:connector-configuration-role apiGroup: rbac.authorization.k8s。io EOF

服务帐户将由Strimzi一旦我们部署卡夫卡连接。服务帐户的名称形式KafkaConnectName-connect美元。稍后,我们将创建卡夫卡连接集群命名开云体育官方注册网址debezium-connect-cluster因此我们使用开云体育官方注册网址debezium-connect-cluster-connect在这里作为一个subjects.name

部署Apache卡夫卡

接下来,部署一个(单节点)卡夫卡集群:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f - apiVersion: kafka.strimzi。io / v1beta2:卡夫卡元数据:名称:debezium-cluster开云体育官方注册网址规范:卡夫卡:副本:1听众:-名称:普通端口:9092类型:内部tls:错:名称:tls端口:9093类型:内部tls:真正的身份验证:类型:tls -名称:外部端口:9094类型:nodeport tls:错误的存储:类型:文件卷:- id: 0类型:persistent-claim大小:100 gi deleteClaim:错误配置:offsets.topic.replication。transaction.state.log.replication因素:1。transaction.state.log.min因素:1。isr: 1 default.replication。min.insync因素:1。副本:1管理员:副本:1存储:类型:persistent-claim大小:100 gi deleteClaim:假entityOperator: topicOperator: {} userOperator: {} EOF
  • 等到准备:

$ kubectl卡夫卡/ debeziu开云体育官方注册网址m-cluster——等待= =条件——timeout = 300 s - n debezium-example做好了准备

部署一个数据源

作为数据源,MySQL将用于以下。除了运行MySQL的豆荚,一个适当的服务将指向pod与DB本身是必要的。它可以创建如如下:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f - apiVersion: v1:服务元数据:名称:mysql规范:港口:-端口:3306选择器:应用:mysql clusterIP:没有——apiVersion:应用程序/ v1:部署元数据:名称:mysql规范:选择器:matchLabels:应用:mysql策略:类型:创建模板:元数据:标签:应用:mysql规范:容器:——形象:quay.io / debezium /示例mysql: 1.9名称:mysql env: -名称:MYSQL_ROOT_PASSWORD值:debezium -名称:MYSQL_USER值:mysqluser -名称:MYSQL_PASSWORD值:mysqlpw港口:- containerPort: 3306姓名:mysql EOF

部署一个Debezium开云体育官方注册网址连接器

部署Debezium连接开云体育官方注册网址器,您需要部署一个卡夫卡连接集群所需的插件连接器(s),在实例化之前实际的连接器本身。作为第一步,一个容器形象卡夫卡与插件必须被创建。如果你已经有一个容器形象构建和可用在注册表中,你可以跳过这一步。在本文档中,将使用MySQL连接器为例。

创建集群卡夫卡连接

再一次,我们将使用Strimzi创建集群卡夫卡连接。Strimzi也可用于构建和推动为我们所需的容器的形象。事实上,这两个任务可以合并在一起,说明建筑容器内的图像可以直接提供KafkaConnect对象规范:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f - apiVersion: kafka.strimzi。io / v1beta2: KafkaConnect元数据:名称:debezium-conn开云体育官方注册网址ect-cluster注释:strimzi。io / use-connector-resources:“真正”的规范:版本:3.1.0副本:1 bootstrapServers: debezium-cluster-k开云体育官方注册网址afka-bootstrap: 9092配置:配置。提供者:config.providers.secrets秘密。类:io.strimzi.kafka。Kubernetes秘密ConfigProvider group.id: connect-cluster offset.storage.topic: connect-cluster-offsets config.storage.topic: connect-cluster-configs status.storage.topic: connect-cluster-status # -1 means it will use the default replication factor configured in the broker config.storage.replication.factor: -1 offset.storage.replication.factor: -1 status.storage.replication.factor: -1 build: output: type: docker image: 10.110.154.103/debezium-connect-mysql:latest plugins: - name: debezium-mysql-connector artifacts: - type: tgz url: https://repo1.maven.org/maven2/io/debezium/debezium-connector-mysql/{debezium-version}/debezium-connector-mysql-{debezium-version}-plugin.tar.gz EOF

你必须更换注册的IP地址10.110.154.103注册表,你可以把图片。如果你运行它在minikube注册插件,你可以把图像分成内部minikube注册表。的IP地址注册表可以通过获得如运行

美元kubectl - n kube-system得到svc注册- o jsonpath = {.spec.clusterIP}”

为简单起见,我们跳过了校验和验证下载的工件。如果你想确定工件是否正确下载,指定其校验和通过sha512sum属性。看到Strimzi文档为更多的细节。

如果你已经有一个合适的容器图像在本地或远程注册表(如码头。io或DockerHub),您可以使用这一段简化版:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f - apiVersion: kafka.strimzi。io / v1beta2: KafkaConnect元数据:名称:debezium-conn开云体育官方注册网址ect-cluster注释:strimzi。io / use-connector-resources:“真正”的规范:版本:3.1.0形象:10.110.154.103 / debezium-conn开云体育官方注册网址ect-mysql:最新副本:1 bootstrapServers: debezium-cluster-kafka-bootstrap: 9092配置:配置。提供者:config.providers.secrets秘密。类:io.strimzi.kafka。Kubernetes秘密ConfigProvider group.id: connect-cluster offset.storage.topic: connect-cluster-offsets config.storage.topic: connect-cluster-configs status.storage.topic: connect-cluster-status # -1 means it will use the default replication factor configured in the broker config.storage.replication.factor: -1 offset.storage.replication.factor: -1 status.storage.replication.factor: -1 EOF

也请注意,我们已经配置了Strimzi秘密提供者。这个秘密提供者将创建一个服务占这卡夫卡连接集群(我们已经绑定到适当的角色),并允许卡夫卡连接来访问我们秘密对象。

创建一个Debeziu开云体育官方注册网址m连接器

创建一个Debezium开云体育官方注册网址连接器,您只需要创建一个KafkaConnector用适当的配置,MySQL在这种情况下:

美元猫< < EOF | kubectl创建- n debeziu开云体育官方注册网址m-example - f - apiVersion: kafka.strimzi。io / v1beta2: KafkaConnector元数据:名称:debezium-conn开云体育官方注册网址ector-mysql标签:strimzi。io /集群:debez开云体育官方注册网址ium-connect-cluster规范类:io.debezium.connector.mysql.MySqlConnector tasksMax: 1配置:任务。马克斯:1数据开云体育电动老虎机库。主机名:mysql数据库。开云体育电动老虎机数据库端口:3306。开云体育电动老虎机用户:${秘密:debezium开云体育官方注册网址-example / debezium-secret:用户名}数据库。开云体育电动老虎机密码: ${secrets:debezium-example/debezium-secret:password} database.server.id: 184054 database.server.name: mysql database.include.list: inventory database.history.kafka.bootstrap.servers: debezium-cluster-kafka-bootstrap:9092 database.history.kafka.topic: schema-changes.inventory EOF

你可以注意,我们没有使用纯文本连接器配置用户名和密码,但是参考秘密我们先前创建对象。

验证部署

验证,一切工作正常,你可以如开始观看mysql.inventory.customers卡夫卡的话题:

美元kubectl运行- n de开云体育官方注册网址bezium-example - - rm -图像= quay.io / debezium /工具:1.2——重启=从未观察家kcat - b debezium-cluster-kafka-bootstrap: 9092 - c - o - t mysql.inventory.customers开始

连接到MySQL数据库:开云体育电动老虎机

美元kubectl运行- n de开云体育官方注册网址bezium-example - - rm -图像= mysql: 8.0——重启=从未env MYSQL_ROOT_PASSWORD = debezium mysqlterm——mysql -hmysql -P3306 -uroot -pdebezium

做一些改变吗客户表:

sql >更新客户设置first_name =“莎莉玛丽”,id = 1001;

您现在应该能够观察卡夫卡的更改事件主题:

{…“有效载荷”:{“前”:{" id ": 1001年,“first_name”:“莎莉”,“last_name”:“托马斯”、“电子邮件”:“sally.thomas@acme.com”},“后”:{" id ": 1001年,“first_name”:“莎莉玛丽”,“last_name”:“托马斯”、“电子邮件”:“sally.thomas@acme.com”},“源”:{“版本”:“{debezium-version}”,“连接器”:“mysql”、“名称”:“mysql”、“ts_ms”: 1646开云体育官方注册网址300467000,“快照”:“false”,“分贝”:“库存”、“序列”:空,“表”:“客户”、“server_id”: 223344年,“gtid”:空,“文件”:“mysql-bin。000003”、“pos”: 401年,“行”:0,“线程”:空,“查询”:零},“人事处”:“u”、“ts_ms”: 1646300467746,“交易”:零}}