Helm Chart部署Kafka
添加helm chart仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
自定义配置
安装之前可以下载chart包,解压后查看values.yaml中的配置项,根据实际情况进行修改。
helm pull bitnami/kafka --version 31.5.0
tar zxvf kafka-31.5.0.tgz
配置私有镜像仓库
global:
imageRegistry: "docker.ascs.tech"
security:
allowInsecureImages: true
配置外部访问
启用外部访问(默认不启用)。服务类型配置为NodePort并指定nodePorts,nodePorts类型是一个列表,列表的长度要和kafka的副本数相对应,bitnami kafka chart默认有三个副本,所以这里配置三个nodePort端口。同理,externalIPs也要跟副本数相对应。
externalAccess:
enabled: true
controller:
service:
type: NodePort
nodePorts:
- 30092
- 30093
- 30094
externalIPs:
- 192.168.100.149
- 192.168.100.149
- 192.168.100.149
配置访问协议
配置所有的listeners访问协议为PLAINTEXT
。在默认情况下,访问协议为SASL_PLAINTEXT
,当启用SASL
后就需要使用用户名密码访问Kafka集群,可以通过修改sasl.client.users
和 sasl.client.passwords
来指定用户名和密码。如果密码未指定,会生成随机密码,可以通过命令 kubectl get secret {{ .Release.Name }}-user-passwords -o jsonpath='{.data.client-passwords}' | base64 -d
进行查看。
listeners:
client:
protocol: PLAINTEXT
controller:
protocol: PLAINTEXT
interbroker:
protocol: PLAINTEXT
external:
protocol: PLAINTEXT
其它配置项
资源请求限制
如果不需要对Pod资源做限制,可以将resourcesPreset的值设置为none
。如果需要对其进行合理的设置,可以参考_resources.tpl1
controller.resourcesPreset
broker.resourcesPreset
volumePermissions.resourcesPreset
metrics.jmx.resourcesPreset
存储卷
默认的PVC大小为8Gi,可以根据实际需要进行调整
controller.persistence.size
完整配置文件
# 指定私有仓库,加速镜像下载
global:
imageRegistry: "docker.ascs.tech"
security:
allowInsecureImages: true
# 配置允许外部访问. 默认不开启此配置
externalAccess:
enabled: true
controller:
service:
type: NodePort
nodePorts:
- 30092
- 30093
- 30094
externalIPs:
- 192.168.100.149
- 192.168.100.149
- 192.168.100.149
# 配置访问协议为PLAINTEXT(明文). 默认配置为SASL_PLAINTEXT
listeners:
client:
protocol: PLAINTEXT
controller:
protocol: PLAINTEXT
interbroker:
protocol: PLAINTEXT
external:
protocol: PLAINTEXT
部署
helm upgrade --install kafka-dev \
bitnami/kafka \
-f values.yaml \
--namespace middleware \
--create-namespace \
--version 31.5.0
验证
打开IDEA,安装Kafka插件。安装成功后,点击左侧工具窗口,选择Kafka,点击添加新的连接。
在引导服务器中输入 192.168.100.149:30092,192.168.100.149:30093,192.168.100.149:30094
,点击测试连接进行验证。
另外,可以下载Kafka二进制包,使用包中的bat脚本(Windows)或者sh脚本(Linux)进行验证。
_resources.tpl
{{/* Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} {{/* vim: set filetype=mustache: */}} {{/* Return a resource request/limit object based on a given preset. These presets are for basic testing and not meant to be used in production {{ include "common.resources.preset" (dict "type" "nano") -}} */}} {{- define "common.resources.preset" -}} {{/* The limits are the requests increased by 50% (except ephemeral-storage and xlarge/2xlarge sizes)*/}} {{- $presets := dict "nano" (dict "requests" (dict "cpu" "100m" "memory" "128Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "150m" "memory" "192Mi" "ephemeral-storage" "2Gi") ) "micro" (dict "requests" (dict "cpu" "250m" "memory" "256Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "375m" "memory" "384Mi" "ephemeral-storage" "2Gi") ) "small" (dict "requests" (dict "cpu" "500m" "memory" "512Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "750m" "memory" "768Mi" "ephemeral-storage" "2Gi") ) "medium" (dict "requests" (dict "cpu" "500m" "memory" "1024Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "750m" "memory" "1536Mi" "ephemeral-storage" "2Gi") ) "large" (dict "requests" (dict "cpu" "1.0" "memory" "2048Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "1.5" "memory" "3072Mi" "ephemeral-storage" "2Gi") ) "xlarge" (dict "requests" (dict "cpu" "1.0" "memory" "3072Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "3.0" "memory" "6144Mi" "ephemeral-storage" "2Gi") ) "2xlarge" (dict "requests" (dict "cpu" "1.0" "memory" "3072Mi" "ephemeral-storage" "50Mi") "limits" (dict "cpu" "6.0" "memory" "12288Mi" "ephemeral-storage" "2Gi") ) }} {{- if hasKey $presets .type -}} {{- index $presets .type | toYaml -}} {{- else -}} {{- printf "ERROR: Preset key '%s' invalid. Allowed values are %s" .type (join "," (keys $presets)) | fail -}} {{- end -}} {{- end -}}
↩