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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 【微服务安全】与 Spring Boot、Kafka、Vault 和 Kubernetes 通信——第 2 部分:设置 Kubernetes 和 Kafka
  • 第 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

在 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 文件夹中
  • 运行以下命令。确保将  替换为您下载的 Kafdrop 版本号。请注意,属性 —kafka.brokerConnect 指向我们在上一段中公开的端口 (localhost:9092):

> java -jar kafdrop-.jar --kafka.brokerConnect=localhost:9092

 

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

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

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

  • 返回运行 port-forward 命令的命令行控制台,在其中按 Ctrl+C 以关闭该外部连接。或者,您可以关闭命令行控制台窗口。
  • 恭喜!我们已经成功运行 Kafka 并在其中创建了 2 个主题。

Tags

本文:https://architect.pub/communication-spring-boot-kafka-vault-and-kubernetes-part-2-setting-kubernetes-and-kafka

相关文章
|
17天前
|
存储 监控 安全
|
4天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
17 0
|
1月前
|
消息中间件 存储 Kafka
微服务分布问题之Kafka分区的副本和分布如何解决
微服务分布问题之Kafka分区的副本和分布如何解决
|
30天前
|
消息中间件 负载均衡 Kafka
微服务数据问题之Kafka实现高可用如何解决
微服务数据问题之Kafka实现高可用如何解决
|
30天前
|
消息中间件 存储 负载均衡
微服务数据问题之Kafka作为元数据节点如何解决
微服务数据问题之Kafka作为元数据节点如何解决
|
1月前
|
消息中间件 监控 Java
Kafka 新的消费组默认的偏移量设置和消费行为
Kafka 新的消费组默认的偏移量设置和消费行为
47 1
|
29天前
|
消息中间件 人工智能 Kafka
微服务数据问题之MetaQ和Kafka在选择读写技术时考虑因素如何解决
微服务数据问题之MetaQ和Kafka在选择读写技术时考虑因素如何解决
|
29天前
|
消息中间件 存储 缓存
微服务数据问题之Kafka的默认复制配置如何解决
微服务数据问题之Kafka的默认复制配置如何解决
|
30天前
|
消息中间件 Kafka 微服务
微服务数据问题之Kafka的partition分布和复制如何解决
微服务数据问题之Kafka的partition分布和复制如何解决
|
2月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
33 1

热门文章

最新文章