国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Debezium系列之:在 Kubernetes 上部署 Debezium

這篇具有很好參考價(jià)值的文章主要介紹了Debezium系列之:在 Kubernetes 上部署 Debezium。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

K8s相關(guān)知識(shí)可以閱讀博主以下幾篇技術(shù)博客:

  • K8s系列之:搭建高可用K8s v1.23.5集群詳細(xì)步驟,3個(gè)master節(jié)點(diǎn),3個(gè)Node節(jié)點(diǎn)
  • K8s系列之:Pod的基本用法
  • k8s系列之:kubectl子命令詳解一
  • k8s系列之:kubectl子命令詳解二
  • 更多K8s知識(shí)點(diǎn)詳見(jiàn)博主K8s系列文章

更多Debezium內(nèi)容請(qǐng)閱讀博主Debezium專欄,博主會(huì)持續(xù)更新Debezium專欄:

  • Debezium專欄

一、概述

Debezium 可以輕松部署在開源容器管理平臺(tái) Kubernetes 上。該部署利用了 Strimzi 項(xiàng)目,該項(xiàng)目旨在通過(guò)自定義資源簡(jiǎn)化 Kubernetes 上 Apache Kafka 的部署。

為了測(cè)試您的部署,您可以使用 minikube,它會(huì)在本地計(jì)算機(jī)上啟動(dòng) Kubernetes 集群。如果您想在 minikube 上完全測(cè)試本文檔中描述的 Debezium 部署,則需要在 minikube 上設(shè)置不安全的容器映像注冊(cè)表。為此,您需要使用 --insecure-registry 標(biāo)志啟動(dòng) minikube:

$ minikube start --insecure-registry "10.0.0.0/24"

10.0.0.1 是默認(rèn)的服務(wù)集群 IP,因此此設(shè)置允許在整個(gè)集群內(nèi)拉取鏡像。您還需要啟用注冊(cè)表 minikube 插件:

 minikube addons enable registry

二、先決條件

為了使容器與集群上的其他工作負(fù)載分開,請(qǐng)為 Debezium 創(chuàng)建專用命名空間。在本文檔的其余部分中,將使用 debezium-example 命名空間:

 kubectl create ns debezium-example

部署 Strimzi Operator
如上所述,對(duì)于 Debezium 部署,我們將使用 Strimzi,它管理 Kubernetes 上的 Kafka 部署。

部署minikube詳細(xì)步驟可以參考博主下面這篇技術(shù)博客:

  • minikube從入門到精通系列之一:部署minikube詳細(xì)步驟

安裝 Strimzi 最簡(jiǎn)單的方法是通過(guò) Operator Lifecycle Manager (OLM)。如果您的集群上尚未安裝 OLM,可以通過(guò)運(yùn)行以下命令來(lái)安裝它:

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

現(xiàn)在,安裝 Strimzi operator本身:

kubectl create -f https://operatorhub.io/install/strimzi-kafka-operator.yaml

三、為數(shù)據(jù)庫(kù)創(chuàng)建Secrets

稍后,在部署 Debezium Kafka 連接器時(shí),我們需要提供連接器的用戶名和密碼才能連接到數(shù)據(jù)庫(kù)。出于安全原因,最好不要直接提供憑據(jù),而是將它們保存在單獨(dú)的安全位置。 Kubernetes 為此提供了 Secret 對(duì)象。除了創(chuàng)建 Secret 對(duì)象本身之外,我們還必須創(chuàng)建一個(gè)角色和角色綁定,以便 Kafka 可以訪問(wèn)憑證。

我們先創(chuàng)建 Secret 對(duì)象:

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: v1
kind: Secret
metadata:
  name: debezium-secret
  namespace: debezium-example
type: Opaque
data:
  username: ZGViZXppdW0=
  password: ZGJ6
EOF

用戶名和密碼包含用于連接 MySQL 數(shù)據(jù)庫(kù)的 Base64 編碼憑據(jù) (debezium/dbz),我們稍后將部署該數(shù)據(jù)庫(kù)。

現(xiàn)在,我們可以創(chuàng)建一個(gè)角色,它引用上一步中創(chuàng)建的秘密:

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: connector-configuration-role
  namespace: debezium-example
rules:
- apiGroups: [""]
  resources: ["secrets"]
  resourceNames: ["debezium-secret"]
  verbs: ["get"]
EOF

我們還必須將此角色綁定到 Kafka Connect 集群服務(wù)帳戶,以便 Kafka Connect 可以訪問(wèn)密鑰:

cat << EOF | kubectl create -n debezium-example -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: connector-configuration-role-binding
  namespace: debezium-example
subjects:
- kind: ServiceAccount
  name: debezium-connect-cluster-connect
  namespace: debezium-example
roleRef:
  kind: Role
  name: connector-configuration-role
  apiGroup: rbac.authorization.k8s.io
EOF

一旦我們部署 Kafka Connect,服務(wù)帳戶將由 Strimzi 創(chuàng)建。服務(wù)帳戶的名稱采用 $KafkaConnectName-connect 形式。稍后,我們將創(chuàng)建名為 debezium-connect-cluster 的 Kafka Connect 集群,因此我們?cè)谶@里使用 debezium-connect-cluster-connect 作為 subject.name。

四、部署Apache Kafka

接下來(lái),部署一個(gè)(單節(jié)點(diǎn))Kafka 集群:

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: debezium-cluster
spec:
  kafka:
    replicas: 1
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
      - name: external
        port: 9094
        type: nodeport
        tls: false
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
    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
  zookeeper:
    replicas: 1
    storage:
      type: persistent-claim
      size: 100Gi
      deleteClaim: false
  entityOperator:
    topicOperator: {}
    userOperator: {}
EOF

等待它準(zhǔn)備好:

$ kubectl wait kafka/debezium-cluster --for=condition=Ready --timeout=300s -n debezium-example

五、部署數(shù)據(jù)源

下面將使用MySQL作為數(shù)據(jù)源。除了使用 MySQL 運(yùn)行 pod 之外,還需要一個(gè)適當(dāng)?shù)姆?wù)來(lái)指向帶有 DB 本身的 pod。它可以被創(chuàng)建,例如如下:

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
  clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: quay.io/debezium/example-mysql:2.3
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: debezium
        - name: MYSQL_USER
          value: mysqluser
        - name: MYSQL_PASSWORD
          value: mysqlpw
        ports:
        - containerPort: 3306
          name: mysql
EOF

六、部署 Debezium 連接器

要部署 Debezium 連接器,您需要在實(shí)例化實(shí)際連接器本身之前部署具有所需連接器插件的 Kafka Connect 集群。第一步,必須創(chuàng)建帶有插件的 Kafka Connect 容器映像。如果您已經(jīng)構(gòu)建了容器鏡像并在注冊(cè)表中可用,則可以跳過(guò)此步驟。本文檔以MySQL連接器為例。

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: debezium-connect-cluster
  annotations:
    strimzi.io/use-connector-resources: "true"
spec:
  version: 3.1.0
  replicas: 1
  bootstrapServers: debezium-cluster-kafka-bootstrap:9092
  config:
    config.providers: secrets
    config.providers.secrets.class: io.strimzi.kafka.KubernetesSecretConfigProvider
    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

您必須將registry的IP地址10.110.154.103替換為可以推送鏡像的registry。如果您使用注冊(cè)表插件在 minikube 上運(yùn)行它,您可以將映像推送到內(nèi)部 minikube 注冊(cè)表中。注冊(cè)表的 IP 地址可以通過(guò)以下方式獲得:通過(guò)運(yùn)行

kubectl -n kube-system get svc registry -o jsonpath='{.spec.clusterIP}'

為簡(jiǎn)單起見(jiàn),我們跳過(guò)了下載工件的校驗(yàn)和驗(yàn)證。如果您想確保工件已正確下載,請(qǐng)通過(guò) sha512sum 屬性指定其校驗(yàn)和。

如果您在本地或遠(yuǎn)程注冊(cè)表(例如 quay.io 或 DockerHub)中已經(jīng)有合適的容器映像,則可以使用此簡(jiǎn)化版本:

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: debezium-connect-cluster
  annotations:
    strimzi.io/use-connector-resources: "true"
spec:
  version: 3.1.0
  image: 10.110.154.103/debezium-connect-mysql:latest
  replicas: 1
  bootstrapServers: debezium-cluster-kafka-bootstrap:9092
  config:
    config.providers: secrets
    config.providers.secrets.class: io.strimzi.kafka.KubernetesSecretConfigProvider
    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

另請(qǐng)注意,我們已經(jīng)配置了 Strimzi 秘密提供程序。這個(gè)秘密提供者將為這個(gè) Kafka Connect 集群創(chuàng)建一個(gè)服務(wù)帳戶(我們已經(jīng)將其綁定到適當(dāng)?shù)慕巧?,并允許 Kafka Connect 訪問(wèn)我們的 Secret 對(duì)象。

七、創(chuàng)建 Debezium 連接器

要?jiǎng)?chuàng)建 Debezium 連接器,您只需創(chuàng)建具有適當(dāng)配置的 KafkaConnector,在本例中為 MySQL:

$ cat << EOF | kubectl create -n debezium-example -f -
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
  name: debezium-connector-mysql
  labels:
    strimzi.io/cluster: debezium-connect-cluster
spec:
  class: io.debezium.connector.mysql.MySqlConnector
  tasksMax: 1
  config:
    tasks.max: 1
    database.hostname: mysql
    database.port: 3306
    database.user: ${secrets:debezium-example/debezium-secret:username}
    database.password: ${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

您可以注意到,我們?cè)谶B接器配置中沒(méi)有使用純文本用戶名和密碼,而是引用我們之前創(chuàng)建的 Secret 對(duì)象。

八、驗(yàn)證部署

要驗(yàn)證一切正常,您可以例如開始觀察mysql.inventory.customers Kafka Topic:

 kubectl run -n debezium-example -it --rm 
 --image=quay.io/debezium/tooling:1.2  
 --restart=Never watcher 
 -- kcat -b debezium-cluster-kafka-bootstrap:9092 
 -C -o beginning -t mysql.inventory.customers

連接MySQL數(shù)據(jù)庫(kù):

kubectl run -n debezium-example -it --rm 
--image=mysql:8.0 --restart=Never 
--env MYSQL_ROOT_PASSWORD=debezium mysqlterm 
-- mysql -hmysql -P3306 -uroot -pdebezium

在客戶表中做一些更改:

sql> update customers set first_name="Sally Marie" where id=1001;

您現(xiàn)在應(yīng)該能夠觀察 Kafka 主題上的更改事件:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-511799.html

{
...
  "payload": {
    "before": {
      "id": 1001,
      "first_name": "Sally",
      "last_name": "Thomas",
      "email": "sally.thomas@acme.com"
    },
    "after": {
      "id": 1001,
      "first_name": "Sally Marie",
      "last_name": "Thomas",
      "email": "sally.thomas@acme.com"
    },
    "source": {
      "version": "{debezium-version}",
      "connector": "mysql",
      "name": "mysql",
      "ts_ms": 1646300467000,
      "snapshot": "false",
      "db": "inventory",
      "sequence": null,
      "table": "customers",
      "server_id": 223344,
      "gtid": null,
      "file": "mysql-bin.000003",
      "pos": 401,
      "row": 0,
      "thread": null,
      "query": null
    },
    "op": "u",
    "ts_ms": 1646300467746,
    "transaction": null
  }
}

到了這里,關(guān)于Debezium系列之:在 Kubernetes 上部署 Debezium的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • kubernetes 系列教程之部署 BusyBox 容器

    Kubernetes版本 v1.19.14 BusyBox 是一個(gè)輕量級(jí)的 Unix 工具集合,它將許多常用的 Unix 工具打包在一個(gè)可執(zhí)行文件中。在 Kubernetes 中,可以使用 BusyBox 容器作為調(diào)試工具,快速執(zhí)行命令或檢查容器內(nèi)部的狀態(tài)。本篇博客將介紹如何在 Kubernetes 集群上部署和使用 BusyBox 容器。 步驟一:

    2024年02月16日
    瀏覽(21)
  • 本文將從云原生的概念、背景知識(shí)、Kubernetes架構(gòu)及核心組件、應(yīng)用場(chǎng)景、案例研究等方面深入剖析云原生課程的相關(guān)知識(shí)點(diǎn)

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 2020年,技術(shù)快速發(fā)展,云計(jì)算火爆。云原生領(lǐng)域也隨之蓬勃發(fā)展。云原生已經(jīng)成為大勢(shì)所趨,大量企業(yè)都在逐漸轉(zhuǎn)型云原生應(yīng)用架構(gòu)。國(guó)內(nèi)外云服務(wù)廠商也紛紛推出基于Kubernetes的服務(wù)平臺(tái),而Kubernetes又是云原生開源技術(shù)體系的一部分。為了幫

    2024年02月07日
    瀏覽(49)
  • 【車載開發(fā)系列】AutoSar中的組件相關(guān)知識(shí)

    SWC(Software Component)是最常見(jiàn)到的一個(gè)概念了,軟件組件是封裝了部分或者全部汽車電子功能的模塊。軟件組件包括了其具體的功能實(shí)現(xiàn)以及與對(duì)應(yīng)的描述。各個(gè)軟件組件(SWC)通過(guò)虛擬功能總線進(jìn)行交互,從而形成一個(gè)AUTOSAR應(yīng)用軟件。 細(xì)分的話還可以分成Atomic SWC和Compos

    2024年02月02日
    瀏覽(25)
  • 【云原生|探索 Kubernetes 系列 5】簡(jiǎn)化 Kubernetes 的部署,深入解析其工作流程

    【云原生|探索 Kubernetes 系列 5】簡(jiǎn)化 Kubernetes 的部署,深入解析其工作流程

    大家好,我是秋意零。 在前面 4 個(gè)章節(jié)中,我們充分了解了容器技術(shù)和 Kubernes 原生時(shí)代引擎的架構(gòu)和設(shè)計(jì)思想,今天分享的主要內(nèi)容是,探索 Kubernetes 部署,深入解析其工作流程 ?? 簡(jiǎn)介 ?? 個(gè)人主頁(yè) : 秋意零 ?? 個(gè)人介紹 :在校期間參與眾多云計(jì)算相關(guān)比賽,如:??

    2024年02月06日
    瀏覽(32)
  • Debezium日常分享系列之:Debezium and TimescaleDB

    TimescaleDB 是一個(gè)開源數(shù)據(jù)庫(kù),旨在使 SQL 對(duì)于時(shí)間序列數(shù)據(jù)具有可擴(kuò)展性。它是作為 PostgreSQL 數(shù)據(jù)庫(kù)的擴(kuò)展實(shí)現(xiàn)的。這一事實(shí)促使我們重新使用標(biāo)準(zhǔn) Debezium PostgreSQL 連接器,并將 TimescaleDB 支持實(shí)現(xiàn)為單個(gè)消息轉(zhuǎn)換 (SMT)。 TimescaleDB 提供了三個(gè)基本構(gòu)建塊/概念: Hypertables Contin

    2024年01月17日
    瀏覽(19)
  • 【探索 Kubernetes|集群搭建篇 系列 5】簡(jiǎn)化 Kubernetes 的部署,深入解析其工作流程

    【探索 Kubernetes|集群搭建篇 系列 5】簡(jiǎn)化 Kubernetes 的部署,深入解析其工作流程

    大家好,我是秋意零。 在前面 4 個(gè)章節(jié)中,我們充分了解了容器技術(shù)和 Kubernes 原生時(shí)代引擎的架構(gòu)和設(shè)計(jì)思想,今天分享的主要內(nèi)容是,探索 Kubernetes 部署,深入解析其工作流程 ?? 簡(jiǎn)介 ?? 個(gè)人主頁(yè) : 秋意零 ?? 個(gè)人介紹 :在校期間參與眾多云計(jì)算相關(guān)比賽,如:??

    2024年02月08日
    瀏覽(28)
  • Debezium日常分享系列之:向 Debezium 連接器發(fā)送信號(hào)

    Debezium日常分享系列之:向 Debezium 連接器發(fā)送信號(hào)

    Debezium 信號(hào)機(jī)制提供了一種修改連接器行為或觸發(fā)一次性操作(例如啟動(dòng)表的臨時(shí)快照)的方法。要使用信號(hào)觸發(fā)連接器執(zhí)行指定操作,可以將連接器配置為使用以下一個(gè)或多個(gè)通道: 源信號(hào)通道:可以發(fā)出 SQL 命令將信號(hào)消息添加到專門的信令數(shù)據(jù)集合中。在源數(shù)據(jù)庫(kù)上創(chuàng)

    2024年02月03日
    瀏覽(24)
  • Debezium日常分享系列之:Debezium 信號(hào)發(fā)送和通知 - 第 1 部分

    本系列文章將介紹 Debezium 提供的信號(hào)和通知功能,并討論與平臺(tái)交互的可用渠道。在本系列的后續(xù)部分中,我們將更深入地研究自定義信令通道并探索其他主題,例如 JMX 信令和通知。 在當(dāng)今互連的軟件應(yīng)用程序和系統(tǒng)中,與其他產(chǎn)品無(wú)縫集成對(duì)于構(gòu)建強(qiáng)大而高效的解決方案

    2024年02月16日
    瀏覽(25)
  • kubernetes系列教程之 nfs-client-provisioner部署

    Kubernetes版本 v1.19.14 NFS Client Provisioner 是一個(gè) Kubernetes 存儲(chǔ)類的實(shí)現(xiàn),它利用 NFS(Network File System)來(lái)動(dòng)態(tài)創(chuàng)建持久卷(Persistent Volume)。在本篇博客中,我們將介紹如何在 Kubernetes 集群上部署和配置 NFS Client Provisioner。 步驟一:部署 NFS 服務(wù)器 首先,我們需要準(zhǔn)備一個(gè) NFS 服務(wù)

    2024年02月16日
    瀏覽(19)
  • Kubernetes系列-部署pod到集群中的指定node

    Kubernetes系列-部署pod到集群中的指定node

    集群只有兩個(gè)節(jié)點(diǎn),這里打算將應(yīng)用部署在k8s-node2節(jié)點(diǎn)上,需要先記下這個(gè)節(jié)點(diǎn)的名稱:k8s-node2。 k8s編排文件中指定nodeName,只需這一行配置 完整配置如下:? 以上這段配置部署了一個(gè)Go服務(wù),指定節(jié)點(diǎn)在k8s-node2,并且限制了資源,同時(shí)暴露了一個(gè)30091外部訪問(wèn)端口,看下服

    2024年02月06日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包