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,点击添加新的连接。

image

在引导服务器中输入 192.168.100.149:30092,192.168.100.149:30093,192.168.100.149:30094​ ,点击测试连接进行验证。

image

另外,可以下载Kafka二进制包,使用包中的bat脚本(Windows)或者sh脚本(Linux)进行验证。


  1. _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 -}}
    

最后修改:2025 年 03 月 20 日
如果觉得我的文章对你有用,请随意赞赏