helm部署kafka鉴权以及ACL
官方文档
https://github.com/bitnami/charts/tree/main/bitnami/kafka
https://blog.csdn.net/u011618288/article/details/129105777 (包含zookeeper与broker认证、鉴权流程)
一. 修改values.yaml文件
按通用部署方案拉下来kafka安装包,修改values.yaml文件,开启scram鉴权,ACL以及nodePort外部访问
第17行
storageClass: "nfs-client"改为nfs
第210行
authorizerClassName: "kafka.security.authorizer.AclAuthorizer"
第213行
allowEveryoneIfNoAclFound: false
第233行
clientProtocol: "sasl"
236-237
externalClientProtocol: "sasl"
interBrokerProtocol: "sasl"
246行
interBrokerMechanism: scram-sha-256
257-258行,添加client用户
clientUsers
- consumer
- producer
265行
clientPasswords:
- "12345"
- "12345"
273行
interBrokerPassword: "admin"
429行
replicaCount: 3
508行
requests:
memory: 500m
937行左右
size: 1Gi #kafka的存储大小
1737行, zookeeper存储
persistence:
enabled: true
storageClass: ""
accessModes:
-ReadWriteOnce
size: 1Gi
1696行
zookeeper
replicaCount: 3
开启nodeport对外暴露服务
678行
type: NodePort
691行
nodePorts:
client: ""
external: "30906"
742行
externalAccess
enabled: true
750行
autoDiscovery:
enabled: true
766行
image:
registry: docker.io
repository: bitnami/kubectl
tag: 1.23.5-debian-10-r30 #默认镜像版本拉不到
791行
servcie:
type: NodePort
829行,几个节点对应几个端口
nodePorts:
- 30901
- 30902
- 30903
837行
useHostIPs: true
如果想在kafka容器中添加额外的配置文件,比如下面的admin.conf。方法如下
创建secret
apiVersion: v1
kind: Secret
metadata:
name: admin-conf
namespace: kafka-test
type: Opaque
stringData:
admin.conf: |-
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin";
625-637行添加额外配置文件(已在外面values.yaml中添加)
extraVolumes:
- name: admin-conf
secret:
secretName: admin-conf
extraVolumeMounts:
- name: admin-conf
mountPath: /opt/bitnami/kafka/config/admin.conf
subPath: admin.conf
二. 创建配置文件及测试
在kafka容器中执行下面操作
/opt/bitnami/kafka/config中创建admin.conf
cat >admin.conf<<EOF
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin";
EOF
查看所有用户
/opt/bitnami/kafka/bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users
会报zookeeper权限的报警和错误,没关系。是因为没配置zookeeper权限,不影响
https://blog.csdn.net/qq_38206656/article/details/105218030
创建topic
/opt/bitnami/kafka/bin/kafka-topics.sh --create --bootstrap-server 10.255.61.25:30922 --replication-factor 1 --partitions 1 --topic mytest1 --command-config /opt/bitnami/kafka/config/admin.conf
使用svc中同一个IP的不同nodePort端口,也可以创建topic
/opt/bitnami/kafka/bin/kafka-topics.sh --create --bootstrap-server 10.255.61.25:39024 --replication-factor 1 --partitions 1 --topic mytest3 --command-config /opt/bitnami/kafka/config/admin.conf
创建mytest测试用户
/opt/bitnami/kafka/bin//kafka-configs.sh --bootstrap-server 10.255.61.25:39024 --alter --add-config 'SCRAM-SHA-256=[password=123456]' --entity-type users --entity-name mytest --command-config /opt/bitnami/kafka/config/admin.conf
查看topic
/opt/bitnami/kafka/bin/kafka-topics.sh --list --bootstrap-server 10.255.61.25:30922 --command-config /opt/bitnami/kafka/config/admin.conf
授权
1)给mytest用户配置mytest1这个主题的消息发送权限
/opt/bitnami/kafka/bin/kafka-acls.sh --bootstrap-server '10.255.61.28:9092' --add --allow-principal User:"mytest" --producer --topic 'mytest1' --command-config /opt/bitnami/kafka/config/admin.conf
注意:不能使用正则匹配多个topic,比如test*
2)给mytest用户配置使用所有消费组消费mytest1消息的权限
/opt/bitnami/kafka/bin/kafka-acls.sh --bootstrap-server '10.255.61.28:9092' --add --allow-principal User:"mytest" --consumer --topic 'mytest1' --group '*' --command-config /opt/bitnami/kafka/config/admin.conf
查看权限授权列表
/opt/bitnami/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=kafka-test1-zookeeper:2181 --list
目前查看到mytest用户对mytest1这个topic有所有权限
创建mytest.conf(里面貌似不能有注释内容)
cat>mytest.conf<<EOF
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="mytest" password="123456";
EOF
修改consumer.properties和producer.properties(不要这一步也行)
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
bootstrap.servers=10.255.61.25:30922,10.255.61.25:39024,10.255.61.25:48051
生产消息测试(有时候报错,可以尝试换个IP或者端口)
/opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list 10.255.61.25:30922 --topic mytest1 --producer.config /opt/bitnami/kafka/config/mytest.conf
消费消息测试
/opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.255.61.25:30922 --topic mytest1 --consumer.config /opt/bitnami/kafka/config/mytest.conf --from-beginning
三. 验证创建者和消费者
1.生产消息
2.消费消息
努力生活,融于自然