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

这个过程是为了建立Debezium连接器在Red Hat开云体育官方注册网址OpenShift集装箱平台。对OpenShift开发或测试可以使用CodeRady容器

更快地开始,试试开云体育官方注册网址Debezium在线学习的场景。它开始一个集群OpenShift只为你,让你在浏览器中开始使用Debezium几分钟。开云体育官方注册网址

先决条件

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

美元oc新项目debezium-e开云体育官方注册网址xample

部署Strimzi运营商

我们将使用的De开云体育官方注册网址bezium部署Strimzi项目管理卡夫卡OpenShift集群部署。最简单的方法来安装Strimzi是安装Strimzi操作符OperatorHub。导航到“OperatorHub OpenShift UI选项卡,选择“Strimzi”并点击“安装”按钮。

openshift strimzi运营商

如果你喜欢命令行工具,您可以安装Strimzi运营商这种方式:

美元猫< < EOF | oc创建- f - apiVersion: operators.coreos.com/v1alpha1:订阅元数据:名称:my-strimzi-kafka-operator名称空间:openshift-operators规范:渠道:稳定的名字:strimzi-kafka-operator来源:operatorhubio-catalog sourceNamespace:洞螈EOF

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

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

让我们创建秘密对象:

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

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

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

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

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

美元猫< < EOF | oc创建- 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 | oc创建- 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
  • 等到准备:

oc卡夫卡/ debezium-开云体育官方注册网址cluster——等待美元=条件=准备——超时= 300年代

部署一个数据源

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

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

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

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

创建集群卡夫卡连接

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

美元猫< < EOF | oc创建- 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。KubernetesSecretConfigProvider组。id: connect-cluster offset.storage。主题:connect-cluster-offsets config.storage。主题:connect-cluster-configs status.storage。主题:connect-cluster-status # 1意味着它将使用默认的复制因子在代理config.storage.replication配置。offset.storage.replication因素:1。status.storage.replication因素:1。因素:1建立:输出:类型:码头工人形象:image-registry.openshift-image-registry。svc: 5000开云体育官方注册网址 / debezium-example / debezium-connect-mysql:最新插件:-名称:debezium-mysql-connector构件:-类型:tgz url: https://repo1.maven.org/maven2/io/debezium/debezium-connector-mysql/ {debezium-version} / debezium-connector-mysql - {debezium-version} -plugin.tar.gz EOF

在这里我们把OpenShift内置的注册中心的优势,已经在OpenShift集群上运行服务。

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

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

美元猫< < EOF | oc创建- 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。KubernetesSecretConfigProvider组。id: connect-cluster offset.storage。主题:connect-cluster-offsets config.storage。主题:connect-cluster-configs status.storage。主题:connect-cluster-status # 1意味着它将使用默认的复制因子在代理config.storage.replication配置。offset.storage.replication因素:1。status.storage.replication因素:1。因素:1 EOF

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

在创建Debezium连接器之前,检开云体育官方注册网址查所有豆荚已经运行:

openshift豆荚

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

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

美元猫< < EOF | oc创建- 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 topic.prefix: mysql database.include.list: inventory schema.history.internal.kafka.bootstrap.servers: debezium-cluster-kafka-bootstrap:9092 schema.history.internal.kafka.topic: schema-changes.inventory EOF

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

验证部署

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

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

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

美元oc - n deb开云体育官方注册网址ezium-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,“交易”:零}}

如果你有任何问题或请求相关运行Debezium Kubernetes或OpenShift,那么请让我们知道在我们的开云体育官方注册网址用户组或Debezium开云体育官方注册网址开发人员的聊天