Spring Boot与运行在Kubernetes上的ksqlDB集成教程

在本文中,您将学习如何在 Kubernetes 上运行 ksqlDB 并将其与 Spring Boot 一起使用。您还将了解如何基于 Strimzi 运算符在 Kubernetes 上运行 Kafka。

为了将 Spring Boot 与 ksqlDB 服务器集成,我们将利用 ksqlDB 提供的轻量级 Java 客户端。此客户端支持拉取和推送查询。它还提供了用于插入行和创建表或流的 API。 您可以在此处 的 ksqlDB 文档中阅读有关它的更多信息。

我们的示例 Spring Boot 应用程序非常简单。我们将使用 Spring Cloud Stream Supplierbean 生成事件并将其发送到 Kafka 主题。有关使用 Spring Cloud Stream 的 Kafka 的更多信息,请参阅以下 文章 。

另一方面,我们的应用程序使用 kSQL 查询从 Kafka 主题获取数据。它还KTable在启动时创建。

源代码

如果您想自己尝试一下,可以随时查看我的源代码。为此,您需要克隆我的 GitHub 存储库 。然后进入transactions-service目录。之后,您应该按照我的指示进行操作。让我们开始。

先决条件

我们将使用几种工具。你需要有:

  • Kubernetes 集群——它可能是一个单节点的本地集群,例如 Minikube 或 Kind。就个人而言,我在 Docker 桌面上使用 Kubernetes
  • kubectlCLI – 与集群交互
  • Helm——我们将使用它在 Kubernetes 上安装 ksqlDB 服务器。如果您没有 Helm,则必须安装它

使用 Strimzi 在 Kubernetes 上运行 Kafka

当然,我们需要一个 Kafka 实例来执行我​们的练习。有几种方法可以在 Kubernetes 上运行 Kafka。我将向您展示如何使用基于运算符的方法来实现。第一步,您需要在集群上安装 OLM(Operator Lifecycle Manager)。为此,您只需在 Kubernetes 上下文中执行以下命令:

$ curl -L https:<font><i>//github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.21.2/install.sh -o install.sh</i></font><font>
$ chmod +x install.sh
$ ./install.sh v0.21.2
</font>

然后,您可以继续安装 Strimzi 操作员。这只是一个命令。

$ kubectl create -f https:<font><i>//operatorhub.io/install/stable/strimzi-kafka-operator.yaml</i></font><font>
</font>

现在,我们可以在 Kubernetes 上创建一个 Kafka 集群。让我们从练习的专用命名空间开始:

$ kubectl create ns kafka

我假设你有一个单节点 Kubernetes 集群,所以我们还创建了一个单节点 Kafka。Kafka这是带有CRD的 YAML 清单。您可以在路径下的存储库中找到它k8s/cluster.yaml。

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  entityOperator:
    topicOperator: {}
    userOperator: {}
  kafka:
    config:
      <b>default</b>.replication.factor: 1
      inter.broker.protocol.version: <font>"3.2"</font><font>
      min.insync.replicas: 1
      offsets.topic.replication.factor: 1
      transaction.state.log.min.isr: 1
      transaction.state.log.replication.factor: 1
    listeners:
      - name: plain
        port: 9092
        tls: false
        type: internal
      - name: tls
        port: 9093
        tls: <b>true</b>
        type: internal
    replicas: 1
    storage:
      type: jbod
      volumes:
        - id: 0
          type: persistent-claim
          size: 30Gi
          deleteClaim: <b>true</b>
    version: 3.2.0
  zookeeper:
    replicas: 1
    storage:
      type: persistent-claim
      size: 10Gi
      deleteClaim: <b>true</b>
</font>

让我们将它应用到命名空间中的 Kubernetes kafka:

$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值