Debezium发布历史166

2024-03-04 13:20
文章标签 历史 发布 166 debezium

本文主要是介绍Debezium发布历史166,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址: https://debezium.io/blog/2023/10/19/Debezium-Operator-Takes-off-to-the-Clouds/

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Debezium Operator Takes off to the Clouds
October 19, 2023 by Čecháček Jakub
debezium features kubernetes operator debezium-server

用Debezum2.3,我们介绍了一个全新的Debezum操作员的预览,目的是提供德贝兹服务器无缝部署到库贝内特斯(K8S)集群。德贝齐安2.4.0.最后版本将为充分支持该组件迈出下一步。在这个版本中,我们很高兴地宣布,在操作枢纽中可以使用德贝兹姆操作符。 目录 用于库伯内特斯以及嵌入在开放转移和OKD分布中的社区操作员目录。操作员仍处于孵化阶段;然而,这一部分的充分支持正在迅速接近。

目标是
在本文中,我们将演示如何使用部署在库伯内特斯集群中的Debezum服务器,将更改从后格列格SQL数据库流到阿帕奇卡夫卡。我们还将展示我们新的K8S集成的一些功能。为了方便起见,本教程中使用的所有代码片段和库伯内特斯清单也可在我们的 GUUUB示例存储库 .

为环境做准备
在部署操作符并因此部署Debez服务器之前,我们需要一个部署到其中的环境。在本节中,我们将展示如何提供一个本地的库伯内特斯集群,运行后格拉格数据库和阿帕奇卡夫卡代理。请注意,数据库和/或卡夫卡经纪人不需要在库伯内特斯内部运行,我们只是为了这个演示而选择这样做。

管理当地的库伯内特斯集群
如果您已经有一个运行中的Kuberneter集群可用,则可以跳过这一部分;但是,请确保您拥有操作员安装所需的集群-管理权限。如果没有,继续读下去。

有多种工具可以运行本地K8S集群,例如: 小型的 , 仁慈的 ,或 多克尔台式电脑 .在本文中,我们将使用类创建一个本地单一节点集群。

先决条件

安置 kubectl 为你的站台分配。

安置 Kind 为你的站台分配。

一旦两者都有kubectl 和kind 安装,通过执行以下操作创建一个本地库伯内特斯集群:

kind create cluster --name debezium
我们现在可以将集群上下文配置为kubectl 并通过运行以下命令检查我们新的K8S环境的状态:

$ kubectl cluster-info --context kind-debezium

Kubernetes control plane is running at https://127.0.0.1:64815
CoreDNS is running at https://127.0.0.1:64815/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
作为集群部署的最后一步,我们将为所需的基础结构创建一个新的名称空间:

kubectl create namespace debezium
部署基础设施
在本节中,我们将准备所需的基础结构–后格拉基法数据库以及卡夫卡代理的实例。

数据库
让我们通过执行下面的命令来开始部署后GREGSQL数据库。

为了简单起见,我们正在使用一个短期卷挂载,这意味着在重新创建POD时,对数据库实例的任何修改都不会持续。
kubectl create -f https://raw.githubusercontent.com/debezium/debezium-examples/main/operator/tutorial-postgresql-kafka/infra/001_postgresql.yml -n debezium
把亚姆的文件输入到kubectl 载有若干库伯内特斯清单:

001_后列ql.Yml
apiVersion: v1
kind: Secret
metadata:
name: postgresql-credentials
type: opaque
data:
POSTGRES_DB: ZGViZXppdW0=
POSTGRES_USER: ZGViZXppdW0=
POSTGRES_PASSWORD: ZGViZXppdW0=

kind: Deployment
apiVersion: apps/v1
metadata:
name: postgresql
labels:
app: postgresql
spec:
replicas: 1
selector:
matchLabels:
app: postgresql
deployment: postgresql
template:
metadata:
labels:
app: postgresql
deployment: postgresql
spec:
containers:
- resources: {}
name: postgresql
envFrom:
- secretRef:
name: postgresql-credentials
ports:
- containerPort: 5432
protocol: TCP
imagePullPolicy: IfNotPresent
livenessProbe:
initialDelaySeconds: 30
tcpSocket:
port: 5432
timeoutSeconds: 1
readinessProbe:
exec:
command:
- “/bin/sh”
- “-i”
- “-c”
- “PGPASSWORD=${POSTGRES_PASSWORD} /usr/bin/psql -w -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c ‘SELECT 1’”
initialDelaySeconds: 5
timeoutSeconds: 1
terminationMessagePolicy: File
terminationMessagePath: /dev/termination-log
image: quay.io/debezium/example-postgres:latest
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
strategy:
type: Recreate

apiVersion: v1
kind: Service
metadata:
name: postgresql
spec:
selector:
app: postgresql
deployment: postgresql
ports:
- name: db
port: 5432
targetPort: 5432
提供数据库凭证的秘密。
数据库部署。
数据库服务。
这个秘密不仅作为环境变量附加到数据库POD中,还将在以后的连接器配置中用于引用这些凭证。

您可以通过运行:

$ kubectl get deployments -n debezium

NAME READY UP-TO-DATE AVAILABLE
postgresql 1/1 1 1
卡夫卡经纪人
为了部署卡夫卡经纪实例,我们将利用 罢工者 .

首先,我们将通过运行下面的命令来部署系统操作符。请注意namespace URL中的参数–它非常重要,因为它确保了在正确的名称空间中创建了Stermzi所需的库伯内特斯对象。

kubectl create -f https://strimzi.io/install/latest?namespace=debezium
一段时间后,你可以检查你的系统操作员是否在运行:

$ kubectl get deployments -n debezium

NAME READY UP-TO-DATE AVAILABLE
strimzi-cluster-operator 1/1 1 1
安装了系统操作符之后,我们可以部署卡夫卡代理的实例。

kubectl create -f https://raw.githubusercontent.com/debezium/debezium-examples/main/operator/tutorial-postgresql-kafka/infra/002_kafka-ephemeral.yml -n debezium
这个命令部署了一个最小的卡夫卡代理的工作配置,如在使用过的亚姆文件中所描述的那样。

002_kafka-ephemeral.yml
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: dbz-kafka
spec:
kafka:
version: 3.4.0
replicas: 1
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
config:
offsets.topic.replication.factor: 1
transaction.state.log.replication.factor: 1
transaction.state.log.min.isr: 1
default.replication.factor: 1
min.insync.replicas: 1
inter.broker.protocol.version: “3.4”
storage:
type: ephemeral
zookeeper:
replicas: 1
storage:
type: ephemeral
entityOperator:
topicOperator: {}
userOperator: {}
这个配置再次使用了一个短暂的存储器,并且只使用卡夫卡代理的一个副本–一个不适合生产的配置。
检查您的卡夫卡部署执行如下:

$ kubectl get pods -n debezium

NAME READY STATUS RESTARTS
dbz-kafka-entity-operator-844ffdcd54-cdq92 3/3 Running 0
dbz-kafka-kafka-0 1/1 Running 0
dbz-kafka-zookeeper-0 1/1 Running 0
部署除臭操作员
在库伯内特斯环境和我们所需的基础设施的支配下,我们现在可以进入到教程的主星–全新的DE贝泽斯操作员。目前有两种方法可以将操作符部署到库伯内特斯集群。您可以将一组库伯内特斯清单应用到您的集群(类似于我们对数据库和系统操作符所做的),也可以直接来自 运营枢纽 运营商目录。

从操作员目录中部署除臭操作员
在本节中,我们将使用 操作程序生命周期管理器 为操作员建立订阅服务 运营枢纽目录 .如前所述,德贝兹是 可用操作符 .

除其他事项外,使用olm还允许您配置操作员监视的名称空间的范围,从单一名称空间到整个集群。不过, 这种配置 已经超出了范围(双关语)!)。以下程序将把操作员安装到operators 命名空间–默认情况下,它是为全集群的操作人员设计的。

首先,我们需要通过运行以下的壳牌命令来安装olm本身–如果在集群中已经安装了olm,则跳过这个选项。

这是一个一次性的过程,任何生产K8S集群提供了对运营商目录的访问,都已经安装了OEM。

curl -L https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.25.0/install.sh -o install.sh
chmod +x install.sh
./install.sh v0.25.0
一旦OEM在您的集群中启动并运行,您可以订阅Debez操作符。

kubectl create -f https://raw.githubusercontent.com/debezium/debezium-examples/main/operator/tutorial-postgresql-kafka/infra/010_debezium-subscription.yml
我们会再次研究subscription.yml 为了更好地了解我们刚刚做的事而归档。

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: debezium-operator-subscription
namespace: operators
spec:
installPlanApproval: Automatic
name: debezium-operator
source: operatorhubio-catalog
sourceNamespace: olm
startingCSV: debezium-operator.v2.4.0
…Subscription 对象指示olm从操作员目录中安装操作员。
操作员安装的目标名称空间。
安装操作员的名称。
操作员目录的名称。
包含操作符目录的名称空间。
您可以在 文件管理 .

现在,您应该已经准备好德贝兹姆操作员来管理德贝兹姆服务器在整个库伯内特斯集群中的部署。您可以检查操作员是否确实按照以下命令运行:

$ kubectl get deployments -n operators

NAME READY UP-TO-DATE AVAILABLE
debezium-operator 1/1 1 1
在上一节中,我们选择了通过直接将一组K8S清单应用到集群中来部署系统操作符。然而,在运营枢纽目录中也有一个运营商,因此也可以通过OEM安装。
使用原库伯内特斯清单部署德贝泽斯操作符
这个选项允许在任何库伯内特斯集群中部署德贝兹操作符,而不需要OEM。

以这种方式部署的德贝兹操作员将只限于管理德贝兹服务器实例 只在与操作符相同的名称空间中 .
要部署德贝兹操作符,我们需要执行下列命令:

kubectl create -f https://raw.githubusercontent.com/debezium/debezium-operator/2.4/k8/debeziumservers.debezium.io-v1.yml
kubectl create -f https://raw.githubusercontent.com/debezium/debezium-operator/2.4/k8/kubernetes.yml -n debezium
第一个命令安装 自定义资源定义 的资源,而第二次执行kubectl 部署操作员本身。

在部署了操作符之后,现在您可以移动到部署Debezum服务器实例,从您的数据库中开始流更改。

向K8S集群部署德贝齐斯服务器
用一种或另一种方式部署德贝佐斯操作符,我们现在可以自己部署德贝佐斯服务器了!

kubectl create -f https://raw.githubusercontent.com/debezium/debezium-examples/main/operator/tutorial-postgresql-kafka/infra/011_debezium-server-ephemeral.yml -n debezium
再次,让我们仔细看看我们刚刚部署的库伯内特斯清单。

011_debezium-server-ephemeral.yml
apiVersion: debezium.io/v1alpha1
kind: DebeziumServer
metadata:
name: my-debezium
spec:
image: quay.io/debezium/server:2.4.0.Final
quarkus:
config:
log.console.json: false
kubernetes-config.enabled: true
kubernetes-config.secrets: postgresql-credentials
sink:
type: kafka
config:
producer.bootstrap.servers: dbz-kafka-kafka-bootstrap:9092
producer.key.serializer: org.apache.kafka.common.serialization.StringSerializer
producer.value.serializer: org.apache.kafka.common.serialization.StringSerializer
source:
class: io.debezium.connector.postgresql.PostgresConnector
config:
offset.storage.file.filename: /debezium/data/offsets.dat
database.history: io.debezium.relational.history.FileDatabaseHistory
database.hostname: postgresql
database.port: 5432
database.user: ${POSTGRES_USER}
database.password: ${POSTGRES_PASSWORD}
database.dbname: ${POSTGRES_DB}
topic.prefix: inventory
schema.include.list: inventory
由德贝兹操作员监控的资源类型。
已部署的Debezum服务器实例的名称。
指定容器映像的可选属性.
德贝兹服务器使用的夸克斯配置。
卡夫卡水槽的配置。
后GREGSQL源连接器配置。
…spec 清单的一部分看起来很可能是任何人熟悉的,因为它是一个结构化程度更高的Debezum服务器属性配置的变体。在我们的情况下image 属性特别多余,因为它使用已安装操作符版本的默认映像。

夸克斯的一部分spec 提供可以访问先前部署的Debez服务器postgresql-credentials 含有我们数据库凭证的秘密。你能看到POSTGRES_USER 以及后来在配置中引用的其他变量。

更详细的描述DebeziumServer 自定义资源可在 吉特布 .

在帽子底下
德贝兹操作员将负责创建运行德贝兹服务器所需的一切。

用于运行Debezum服务器的服务帐户。

允许读取配置映射的角色绑定和在部署Debezum服务器的名称空间中的秘密。

包含Debezum服务器原始配置的配置映射。

部署本身。

验证部署
您可以通过以下命令检查部署的Debezum服务器实例是否在运行:

$ kubectl get deployments -n debezium

NAME READY UP-TO-DATE AVAILABLE
my-debezium 1/1 1 1
通过运行Debezum服务器,我们可以用以下命令验证它使用了数据库中的所有初始数据。

kubectl exec dbz-kafka-kafka-0 -n debezium – /opt/kafka/bin/kafka-console-consumer.sh
–bootstrap-server localhost:9092
–from-beginning
–property print.key=true
–topic inventory.inventory.orders
未来和我们的要求
就这样吧。在操作员获得充分支持之前,我们打算提供更详细的文档和能力,以进一步配置部署的各种东西,例如定制拉秘密,以支持存储在安全注册表中的定制Debezum服务器图像。

此外,亦有计划改善DebeziumServer 资源,提供以声明的方式组装德贝佐姆服务器定制分布的能力,甚至可能改进我们与KPETY的集成。我们还计划改进嵌入式引擎,并因此改进Debezum服务器,这将使我们有一天能够利用库伯内特斯的水平缩放功能。

你能帮我们!
我们想请我们的优秀的德贝齐斯社区测试操作员,让我们知道你喜欢什么和不喜欢什么以及你错过了什么特点。这样,我们可以根据您的需要来塑造这个组件,并且我们一起,我们将使Debezium更接近于提供云源性的CDC的能力。

这篇关于Debezium发布历史166的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773297

相关文章

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

从希腊神话到好莱坞大片,人工智能的七大历史时期值得铭记

本文选自historyextra,机器之心编译出品,参与成员:Angulia、小樱、柒柒、孟婷 你可能听过「技术奇点」,即本世纪某个阶段将出现超级智能,那时,技术将会以人类难以想象的速度飞速发展。同样,黑洞也是一个奇点,在其上任何物理定律都不适用;因此,技术奇点也是超越未来理解范围的一点。 然而,在我们到达那个奇点之前(假设我们能到达),还存在另一个极大的不连续问题,我将它称之

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM

风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架

论文链接:https://arxiv.org/pdf/2408.16766 项目链接:https://csgo-gen.github.io/ 亮点直击 构建了一个专门用于风格迁移的数据集设计了一个简单但有效的端到端训练的风格迁移框架CSGO框架,以验证这个大规模数据集在风格迁移中的有益效果。引入了内容对齐评分(Content Alignment Score,简称CAS)来评估风格迁移

Eclipse发布Maven项目到tomcat,无法加载到lib文件夹下的jar包

BMS 解决方法: 当我们发布web项目到tomcat时,访问地址时会报一个classnotfound的错误,但是eclipse中的项目中都已经添加了相应的类,有一种比较容易犯的错误是,你没有把额外所需的jar包加到tomcat中的lib文件夹中,在这里介绍一种在项目中直接添加jar包到lib目录下:  右键已创建的web项目——properties属性——点击Deployment Assem

1-3 微信小程序协同工作和发布

协同工作和发布 🥟🥞以权限管理需求为例 一个项目组,一般有不同的岗位,不同角色的员工同时参与项目成员 流程 成员管理的两个方面 不同项目成员对应的权限 版本