tonglin0325的个人主页

kafka-ui部署

1.介绍#

kafka-ui是一个开源的kafka ui工具,支持kafka,schema registry(avro和protobuf都支持),kafka connect,KSQL DB等组件

github项目

1
2
https://github.com/provectus/kafka-ui

docker镜像地址

1
2
https://hub.docker.com/r/provectuslabs/kafka-ui

注意:该kafka-ui只支持2.x.x版本的kafka,对于低版本的kafka不支持,参考issue:https://github.com/provectus/kafka-ui/issues/2097

界面如下

其中schema registry的schema类型支持AVRO,JSON和PROTOBUF

 

2.安装部署#

参考:kafka 可视化 Web UI for Apache Kafka安装部署文档

可以使用helm或者docker来部署容器

helm命令

1
2
helm install kafka-ui kafka-ui/kafka-ui --set envs.config.KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS="xxx:9092"

docker命令

1
2
3
4
5
docker run -p 8080:8080 \
  -e KAFKA_CLUSTERS_0_NAME="xxx"\
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS="xxx:9092" \
-d provectuslabs/kafka-ui:latest

如果想添加kafka connect等组件,配置参考

1
https://docs.kafka-ui.provectus.io/configuration/complex-configuration-examples/kraft-mode-+-multiple-brokers

3.集成openid#

kafka-ui支持丰富的认证方式,比如basic auth(账号密码),OAuth2(google/github等),AWS IAM,LDAP,SSO(openid),SASL_SCRAM

1
2
https://docs.kafka-ui.provectus.io/configuration/authentication

目前我司采用的任务方式主要有Microsoft Azure以及keycloak,Microsoft Azure测试下来需要kafka-ui启用HTTPS,因为在Microsoft Azure上填写回调地址的时候会提示只支持HTTPS,所以下面使用keycloak的认证方式

kafka-ui使用docker命令启动的时候开启keyloack认证,官方文档上并没有写清楚如何集成keycloak,对应的issue也没有回答清楚

1
2
https://github.com/provectus/kafka-ui/issues/3802

所以这里给出正确的配置,其中的配置需要在keycloak上先注册好应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -p 8080:8080 \
-e KAFKA_CLUSTERS_0_NAME="your_kafka_name"\
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS="ip:9092" \
-e AUTH_TYPE=OAUTH2 \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_CLIENTID=kafka-ui \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_CLIENTSECRET=xxxxxx-xxxx-xxxx-xxxx-xxxxxx \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_SCOPE=openid \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_PROVIDER=keycloak \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_CLIENT-NAME=keycloak \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_USER_NAME_ATTRIBUTE=preferred_username \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_ISSUER_URI="https://keycloak.xxxx.com/auth/realms/master" \
-e AUTH_OAUTH2_CLIENT_KEYCLOAK_CUSTOM_PARAMS_TYPR="https://keycloak.xxxx.com/auth/realms/master" \
-d provectuslabs/kafka-ui:latest

登录后如下,点击keycloak即可实现openid登录

如果kafka-ui开启了HTTPS的话,可以使用如下方式开启Microsoft Azure认证

1
2
3
4
5
6
7
8
9
10
11
docker run -p 8080:8080 \
-e KAFKA_CLUSTERS_0_NAME="your_kafka_name"\
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS="ip:9092" \
-e AUTH_TYPE=OAUTH2 \
-e AUTH_OAUTH2_CLIENT_AZURE_CLIENTID=xxxxxx-xxxx-xxxx-xxxx-xxxxxx \
-e AUTH_OAUTH2_CLIENT_AZURE_CLIENTSECRET=xxxxx \
-e AUTH_OAUTH2_CLIENT_AZURE_SCOPE="https://graph.microsoft.com/User.Read" \
-e AUTH_OAUTH2_CLIENT_AZURE_PROVIDER=azure \
-e AUTH_OAUTH2_CLIENT_AZURE_ISSUER_URI="https://login.microsoftonline.com/xxxxxx-xxxx-xxxx-xxxx-xxxxxx/v2.0" \
-d provectuslabs/kafka-ui:latest