【微服务安全】与 Spring Boot、Kafka、Vault 和 Kubernetes 通信——第 2 部分:设置 Kubernetes 和 Kafka

Chinese, Simplified

链接

  • 第 1 部分:简介和架构
  • 第 2 部分:设置 Kubernetes 和 Kafka <--本文
  • 第 3 部分:设置保险柜
  • 第 4 部分:构建微服务
  • 第 5 部分:部署和测试



要求



目录结构



我们将使用的目录结构如下:

  • $PROJECTS
  • —|—DepositAccount
  • —|—GatewayKafka
  • —|—Transaction
  • —|—Registry
  • —|—k8s
  • —|—kafkatools



软件



这些是入门所需的软件

  • Java
  • OpenSSL



设置 Kubernetes 和 Helm

 



设置Kafka

 

  • 我们将在 Kubernetes 集群中运行 Kafka。我们将为此使用 Helm。

使用 Helm 安装 Kafka

 

  • 首先,运行下面的两个命令行。这将使用 Helm 将 Kafka 安装到您的 Kubernetes 集群
> helm repo add bitnami https://charts.bitnami.com/bitnami

> helm install kafka bitnami/kafka
  • 完成后,您将收到以下消息:
NAME: kafka
LAST DEPLOYED: Mon Sep 14 09:08:13 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **
Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:
    kafka.default.svc.cluster.local
Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:
    kafka-0.kafka-headless.default.svc.cluster.local:9092
To create a pod that you can use as a Kafka client run the following commands:
    kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:2.6.0-debian-10-r18 --namespace default --command -- sleep infinity
    kubectl exec --tty -i kafka-client --namespace default -- bash
    PRODUCER:
        kafka-console-producer.sh \
            --broker-list kafka-0.kafka-headless.default.svc.cluster.local:9092 \
            --topic test
    CONSUMER:
        kafka-console-consumer.sh \
            --bootstrap-server kafka.default.svc.cluster.local:9092 \
            --topic test \
            --from-beginning

 

  • 要仔细检查,请运行:
> kubectl get pods

 

  • 你应该得到下面的结果。我们应该看到处于运行状态的 Kafka 和 ZooKeeper pod

No alt text provided for this image



在 Kubernetes 中暴露 Kafka 供我们管理

 

  • Kafka 现在已成功运行。为了让我们管理它(例如创建新主题),我们需要将它暂时暴露给外界
  • 运行以下命令。这会将 Kafka 暴露给 localhost 的 9092 端口。
> kubectl port-forward kafka-0 9092:9092



安装 Kafdrop

 

  • Kafdrop 是 Kafka 的管理工具。我们可以用它来管理我们的 Kafka 集群
  • https://github.com/obsidiandynamics/kafdrop/releases 下载 jar 文件并将其放在 $PROJECTS/KafkaTools 文件夹中
  • 运行以下命令。确保将 <version> 替换为您下载的 Kafdrop 版本号。请注意,属性 —kafka.brokerConnect 指向我们在上一段中公开的端口 (localhost:9092):
> java -jar kafdrop-<version>.jar --kafka.brokerConnect=localhost:9092

 

No alt text provided for this image

  • 导航到页面底部并找到主题部分。单击 (+) 按钮

No alt text provided for this image

  • 您将获得下面的页面,您可以在其中创建主题。

No alt text provided for this image

  • 创建 2 个主题:deposit-debit-response 和 deposit-debit-request

No alt text provided for this image

  • 返回运行 port-forward 命令的命令行控制台,在其中按 Ctrl+C 以关闭该外部连接。或者,您可以关闭命令行控制台窗口。
  • 恭喜!我们已经成功运行 Kafka 并在其中创建了 2 个主题。
本文地址
https://architect.pub/communication-spring-boot-kafka-vault-and-kubernetes-part-2-setting-kubernetes-and-kafka
SEO Title
communication with Spring Boot, Kafka, Vault and Kubernetes -- Part 2 : Setting up Kubernetes and Kafka