《OpenShift / RHEL / DevSecOps 汇总目录》
文本已在OpenShift 4.10环境中进行验证。
本文如何部署一个基于 Kafka + Quarkus 微服务的实时飞行跟踪应用。
文章目录
应用架构
- map-service:带有websocket、rest api的网络应用程序,用于与浏览器互动,以显示和接收模拟实时飞行追踪的命令。
- postgresql:用于机场数据的关系型数据库
- data-simulator:用于模拟实时飞行的后台服务(模拟雷达数据和应答器数据到kafka)。
- kafka broker:用于整合系统间数据的消息传递系统
- data-aggregator:流处理服务,用于聚合(合并)雷达数据和应答器数据到飞行数据,并将其放回kafka,以便从map-service中显示。
配置
配置 Kafka 资源
- 在 OperatorHub中找到 AMQ Streams,然后使用默认的配置安装即可。
- 创建 user1-flight 项目。
- 在 “开发者” 视图中进入 “+添加” 菜单,然后在“添加”页面中点击 “Operator 支持的” 链接。
- 在 “Operator 支持的” 页面中找到 “Kafka” 然后点击进入。
- 使用默认配置创建名为 my-cluster 的 Kafka 资源。
- 创建完应该可以看到 Kafka 资源。
- 在 “Operator 支持的” 页面中找到 “Kafka Topic” 然后点击进入。
- 在 “创建KafkaTopic” 页面中将名称设为 “flight-data”,其他使用默认配置,然后创建 KafkaTopic。
- 使用上述步骤创建名为 “radar-data” 和 “transponder-data” 的 KafkaTopic。
- 在 “拓扑” 视图中选中 my-cluster-kafka,然后在 Pod 列表中点击进入任意一个。
- 在 Pod 的 “终端” 栏目中执行执行以下命令,可以返回前面创建的 Kafka Topic。
sh-4.4$ ./bin/kafka-topics.sh --bootstrap-server=localhost:9092 --list
__consumer_offsets
__strimzi_store_topic
flight-data
radar-data
transponder-data
配置 PostgreSQL
- 在 “开发者目录“ 页面中的 Databases 中查找 PostgreSQL,然后进入 ”PostgreSQL (Ephemeral)“。
- 按照以下配置创建 PostgreSQL
Database Service Name: postgresql
PostgreSQL Connection Username: flighttracker
PostgreSQL Conneciton Password: flighttracker
PostgreSQL Database Name: flighttracker - PostgreSQL完成部署后可以在 “拓扑” 中看到如下:
- 在上图的 “详情” 栏目中点击标签右侧的“编辑”,在“编辑标签”对话框中增加 app.openshift.io/runtime=postgresql 标签。
- 在保存标签后,在“拓扑”中显示的应用图标变为了 PostgreSQL。
部署 flight-data-aggregator
- 在 “添加” 页面中进入 “容器镜像”
- 在 “部署镜像” 页面中按照以下配置创建应用:
来自外部容器镜像仓库的镜像名称:quay.io/chatapazar1/data-aggregator
运行时图标:quarkus
应用程序:CREATE 应用程序
应用程序名称:flight-data-aggregator
名称:flight-data-aggregator
创建应用程序的路由:取消选择
- 容器部署好后可以在 “拓扑” 中看到:
部署 data-simulator
- 在 “添加” 页面中进入 “从 Git 导入”。
- 在 “从 Git 导入” 页面中按照以下配置创建应用:
Git Repo URL:https://github.com/chatapazar/openshift-workshop.git
Context dir:/data-simulator
构建器镜像:Java
构建器镜像版本:openjdk-11-ubi8
应用程序:CREATE 应用程序
应用程序名称:flight-data-simulator
名称:flight-data-simulator
创建应用程序的路由:取消选择 - 部署好后可以在 “拓扑” 中看到:
- 在上图 “详细” 栏目中点击标签右侧的 “编辑”,进入“编辑标签” 对话框。
- 删除 app.openshift.io/runtime=java 标签,然后添加 app.openshift.io/runtime=quarkus 标签。
- 在保存标签后,在“拓扑”中显示的应用图标变为了 Quakus。
部署 map-service
- 在 “添加” 页面中进入 “从 Git 导入”。
- 在 “从 Git 导入” 页面中按照以下配置创建应用:
Git Repo URL:https://github.com/chatapazar/openshift-workshop.git
Context dir:/map-service
构建器镜像:Java
构建器镜像版本:openjdk-11-ubi8
应用程序:CREATE 应用程序
应用程序名称:flight-map-service
名称:flight-map-service - 部署好后可以在 “拓扑” 中看到:
- 编辑标签,删除 app.openshift.io/runtime=java 标签,然后添加 app.openshift.io/runtime=quarkus 标签。
配置拓扑显示
- 在 “拓扑” 中分别选中 flight-map-service、flight-data-simulator 和 flight-data-aggregator 部署,在 “详情“ 中编辑"注解”。在 ”编辑注解“ 对话框中增加以下内容”
键:app.openshift.io/connects-to
值:[{“apiVersion”:“kafka.strimzi.io/v1beta2”,“kind”:“Kafka”,“name”:“my-cluster”}]
- 完成后 “拓扑” 页面将显示:
- 在 “拓扑” 中选中 flight-map-service,然后将出现的虚线链分别接到 flight-data-simulator 和 postgresql 图标上。
- 最后“拓扑”中将显示:
访问应用
- 点击 flight-map-service 图标右上方的箭头,打开 URL。
- 在应用页面中打开 Show flight creation form 和 Show WebSocket log 选项,然后点击下方 START 20 RANDOM FLIGHTS 按钮,可以看到模拟的数据的运行。
参考
https://github.com/liuxiaoyu-git/openshift-workshop-1