kafka-ui离线部署:内网环境安装步骤
痛点与解决方案
你是否在隔离网络环境中挣扎于Kafka集群管理工具的部署?本文提供一套完整的Kafka-UI离线部署方案,通过本地化资源准备、配置修改和容器化部署,解决内网环境下的依赖获取和服务启动难题。读完本文你将掌握:
- 全流程离线资源准备方法
- 内外网环境配置差异对比
- 容器化与非容器化部署选项
- 常见离线部署故障排查技巧
环境准备
硬件要求
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核 |
| 内存 | 4GB | 8GB |
| 磁盘 | 20GB SSD | 50GB SSD |
| 网络 | 100Mbps内网 | 1Gbps内网 |
依赖工具清单
离线资源准备
1. 代码仓库获取
# 在有网环境克隆仓库
git clone https://gitcode.com/GitHub_Trending/ka/kafka-ui.git
cd kafka-ui
git checkout $(git describe --abbrev=0 --tags) # 切换到最新稳定版
# 打包代码用于内网传输
tar -czvf kafka-ui-source.tar.gz .
2. Docker镜像准备
# 有网环境拉取所需镜像
docker pull provectuslabs/kafka-ui:latest
docker pull confluentinc/cp-kafka:7.2.1
docker pull confluentinc/cp-schema-registry:7.2.1
docker pull confluentinc/cp-kafka-connect:7.2.1
# 保存镜像为tar包
docker save -o kafka-ui-image.tar provectuslabs/kafka-ui:latest
docker save -o cp-kafka-image.tar confluentinc/cp-kafka:7.2.1
docker save -o cp-sr-image.tar confluentinc/cp-schema-registry:7.2.1
docker save -o cp-connect-image.tar confluentinc/cp-kafka-connect:7.2.1
# 内网环境加载镜像
docker load -i kafka-ui-image.tar
docker load -i cp-kafka-image.tar
docker load -i cp-sr-image.tar
docker load -i cp-connect-image.tar
3. Maven依赖缓存
<!-- settings.xml 添加国内仓库 -->
<settings>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>
# 有网环境缓存依赖
mvn dependency:go-offline -Dmaven.repo.local=./maven-repo
tar -czvf maven-repo.tar.gz ./maven-repo
4. 前端依赖缓存
# 有网环境安装pnpm
npm install -g pnpm
# 设置国内源并安装依赖
cd kafka-ui-react-app
pnpm config set registry https://registry.npmmirror.com
pnpm install --store=./pnpm-store
tar -czvf pnpm-deps.tar.gz ./pnpm-store ./node_modules ./pnpm-lock.yaml
部署步骤
方案一:Docker Compose部署(推荐)
1. 修改配置文件
# documentation/compose/kafka-ui.yaml 修改
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest # 使用本地镜像
ports:
- 8080:8080
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
DYNAMIC_CONFIG_ENABLED: 'true'
volumes:
- ./dynamic_config.yaml:/etc/kafkaui/dynamic_config.yaml # 挂载本地配置
2. 启动服务
# 内网环境执行
cd documentation/compose
docker-compose -f kafka-ui.yaml up -d
# 检查服务状态
docker-compose -f kafka-ui.yaml ps
方案二:源码编译部署
1. 后端编译
# 复制Maven仓库到.m2目录
cp -r maven-repo ~/.m2/repository
# 修改pom.xml使用本地仓库
sed -i 's|<repositories>|<repositories><repository><id>local</id><url>file://~/.m2/repository</url></repository>|' pom.xml
# 编译后端
mvn clean package -DskipTests
2. 前端编译
cd kafka-ui-react-app
cp -r pnpm-store ~/.pnpm-store
pnpm install --offline
pnpm build # 生成静态资源
3. 启动应用
# 后端启动
java -jar kafka-ui-api/target/kafka-ui-api.jar --spring.config.location=file:./application.yml
# Nginx部署前端静态资源
cp -r kafka-ui-react-app/dist /usr/share/nginx/html
nginx -s reload
配置详解
多集群配置示例
# dynamic_config.yaml
clusters:
- name: "生产集群"
bootstrapServers: "kafka-prod:9092"
schemaRegistry: "http://schema-registry-prod:8081"
jmxPort: 9997
- name: "测试集群"
bootstrapServers: "kafka-test:9092"
schemaRegistry: "http://schema-registry-test:8081"
jmxPort: 9998
安全配置(SSL)
# 集群SSL配置
ssl:
trustStoreLocation: /etc/kafkaui/truststore.jks
trustStorePassword: "changeit"
keyStoreLocation: /etc/kafkaui/keystore.jks
keyStorePassword: "changeit"
keyPassword: "changeit"
验证部署
服务健康检查
# 检查API服务
curl http://localhost:8080/actuator/health
# 预期响应
{"status":"UP"}
功能验证清单
常见问题处理
依赖缺失解决
# Maven依赖缺失时手动安装
mvn install:install-file \
-Dfile=missing.jar \
-DgroupId=com.example \
-DartifactId=missing \
-Dversion=1.0.0 \
-Dpackaging=jar
端口冲突处理
# 查找冲突进程
netstat -tulpn | grep 8080
# 修改配置文件中的端口
sed -i 's/8080/8081/g' documentation/compose/kafka-ui.yaml
镜像拉取失败
确保已正确加载本地镜像:
docker images | grep provectuslabs/kafka-ui
维护与升级
数据备份
# 备份配置文件
cp documentation/compose/kafka-ui.yaml kafka-ui.yaml.bak
cp dynamic_config.yaml dynamic_config.yaml.bak
版本升级流程
总结
本文详细介绍了Kafka-UI在内网环境下的离线部署方案,通过Docker容器化部署可大幅简化流程,推荐生产环境使用。关键要点包括:
- 提前准备所有必要资源并测试可用性
- 修改配置文件适应内网环境
- 严格按照操作步骤执行,注意版本兼容性
- 部署后进行全面功能验证
通过这套方案,企业用户可以在安全隔离的网络环境中高效管理Kafka集群,提升消息系统的可观测性和运维效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



