Skip to content

Commit bcc6b98

Browse files
committed
chart(kafka-ha): release v17.0.1
1 parent 9f762b1 commit bcc6b98

30 files changed

+2345
-4
lines changed

charts/kafka-ha/.helmignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/

charts/kafka-ha/Chart.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
appVersion: v3.7.1
3+
description: Helm chart for Apache Kafka.
4+
keywords:
5+
- kafka
6+
- streaming
7+
- kraft
8+
name: kafka
9+
type: application
10+
version: 17.0.1

charts/kafka-ha/README.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Kafka helm chart
2+
3+
https://github.com/itboon/kafka-helm
4+
5+
## Prerequisites
6+
7+
- Kubernetes 1.22+
8+
- Helm 3.3+
9+
10+
## 获取 helm 仓库
11+
12+
``` shell
13+
helm repo add kafka-repo https://helm-charts.itboon.top/kafka
14+
helm repo update kafka-repo
15+
```
16+
17+
## 部署 Kafka
18+
19+
### 部署单节点 Kafka 集群
20+
21+
``` shell
22+
## 下面的部署案例关闭了持久化存储,仅作为演示
23+
helm upgrade --install kafka \
24+
--namespace kafka-demo \
25+
--create-namespace \
26+
--set broker.persistence.enabled="false" \
27+
kafka-repo/kafka
28+
```
29+
30+
``` shell
31+
## 默认已开启持久化存储
32+
helm upgrade --install kafka \
33+
--namespace kafka-demo \
34+
--create-namespace \
35+
kafka-repo/kafka
36+
```
37+
38+
### 将 broker 和 controller 分开部署
39+
40+
``` shell
41+
helm upgrade --install kafka \
42+
--namespace kafka-demo \
43+
--create-namespace \
44+
--set broker.combinedMode.enabled="false" \
45+
--set controller.replicaCount="1" \
46+
--set broker.replicaCount="1" \
47+
kafka-repo/kafka
48+
```
49+
50+
> `broker.combinedMode.enabled` 混部模式,即进程同时具有 broker + controller 角色,单节点服务器启动一个 Pod 即可。`kafka-repo/kafka` 默认开启混部,`kafka-repo/kafka-ha` 默认关闭混部。
51+
52+
### 部署高可用集群
53+
54+
``` shell
55+
## kafka-repo/kafka-ha 默认部署 3 controller + 3 broker
56+
helm upgrade --install kafka \
57+
--namespace kafka-demo \
58+
--create-namespace \
59+
kafka-repo/kafka-ha
60+
```
61+
62+
``` shell
63+
## 调整集群资源配额
64+
helm upgrade --install kafka \
65+
--namespace kafka-demo \
66+
--create-namespace \
67+
--set controller.replicaCount="3" \
68+
--set broker.replicaCount="3" \
69+
--set broker.heapOpts="-Xms4096m -Xmx4096m" \
70+
--set broker.resources.requests.memory="8Gi" \
71+
--set broker.resources.limits.memory="16Gi" \
72+
kafka-repo/kafka-ha
73+
```
74+
75+
> More values please refer to [examples/values-production.yml](https://github.com/sir5kong/kafka-docker/raw/main/examples/values-production.yml)
76+
77+
## Kafka Broker 配置
78+
79+
```yaml
80+
## 单节点 Broker 配置
81+
broker:
82+
replicaCount: 1
83+
config:
84+
num.partitions: "2"
85+
```
86+
87+
```yaml
88+
## 高可用集群推荐配置
89+
broker:
90+
replicaCount: 3
91+
config:
92+
num.partitions: "6"
93+
default.replication.factor: "3"
94+
min.insync.replicas: "2"
95+
```
96+
97+
> `broker.config` 某些关键配置会被环境变量覆盖,例如: node.id advertised.listeners controller.quorum.voters 等
98+
99+
## 集群外访问
100+
101+
请参考 <https://github.com/itboon/kafka-helm/blob/main/docs/external.md>

charts/kafka-ha/templates/NOTES.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
>>> bootstrap-servers:
2+
{{- include "notes.internal.bootstrapServers" . | nindent 4 }}
3+
4+
{{- if .Values.broker.external.enabled }}
5+
6+
external.type: {{ .Values.broker.external.type }}
7+
8+
>>> External bootstrap-servers:
9+
{{- include "notes.external.bootstrapServers" . | nindent 4 }}
10+
{{- end }}
11+
12+
{{- if and (.Values.ui.enabled) (.Values.ui.ingress.enabled) }}
13+
14+
>>> Visit kafka-ui:
15+
{{- range $host := .Values.ui.ingress.hosts }}
16+
http{{ if $.Values.ui.ingress.tls }}s{{ end }}://{{ $host.host }}/
17+
{{- end }}
18+
{{- end }}
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "kafka.name" -}}
5+
{{- default .Chart.Name .Values.nameOverride | trunc 35 | trimSuffix "-" }}
6+
{{- end }}
7+
8+
{{/*
9+
Create a default fully qualified app name.
10+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
11+
If release name contains chart name it will be used as a full name.
12+
*/}}
13+
{{- define "kafka.fullname" -}}
14+
{{- if .Values.fullnameOverride }}
15+
{{- .Values.fullnameOverride | trunc 35 | trimSuffix "-" }}
16+
{{- else }}
17+
{{- $name := default .Chart.Name .Values.nameOverride }}
18+
{{- if contains $name .Release.Name }}
19+
{{- .Release.Name | trunc 35 | trimSuffix "-" }}
20+
{{- else }}
21+
{{- printf "%s-%s" .Release.Name $name | trunc 35 | trimSuffix "-" }}
22+
{{- end }}
23+
{{- end }}
24+
{{- end }}
25+
26+
{{/*
27+
Create chart name and version as used by the chart label.
28+
*/}}
29+
{{- define "kafka.chart" -}}
30+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 35 | trimSuffix "-" }}
31+
{{- end }}
32+
33+
{{/*
34+
Common labels
35+
*/}}
36+
{{- define "kafka.labels" -}}
37+
helm.sh/chart: {{ include "kafka.chart" . }}
38+
{{ include "kafka.selectorLabels" . }}
39+
{{- if .Chart.AppVersion }}
40+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
41+
{{- end }}
42+
app.kubernetes.io/part-of: {{ include "kafka.name" . }}
43+
app.kubernetes.io/managed-by: {{ .Release.Service }}
44+
{{- with .Values.global.additionalLabels }}
45+
{{ toYaml . }}
46+
{{- end }}
47+
{{- end }}
48+
49+
{{/*
50+
Selector labels
51+
*/}}
52+
{{- define "kafka.selectorLabels" -}}
53+
app.kubernetes.io/name: {{ include "kafka.name" . }}
54+
app.kubernetes.io/instance: {{ .Release.Name }}
55+
{{- end }}
56+
57+
{{/*
58+
Create the name of the service account to use
59+
*/}}
60+
{{- define "kafka.serviceAccountName" -}}
61+
{{- if .Values.serviceAccount.create }}
62+
{{- default (include "kafka.fullname" .) .Values.serviceAccount.name }}
63+
{{- else }}
64+
{{- default "default" .Values.serviceAccount.name }}
65+
{{- end }}
66+
{{- end }}
67+
68+
{{/*
69+
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
70+
*/}}
71+
{{- define "kafka.namespace" -}}
72+
{{- if .Values.namespaceOverride }}
73+
{{- .Values.namespaceOverride }}
74+
{{- else }}
75+
{{- .Release.Namespace }}
76+
{{- end }}
77+
{{- end }}
78+
79+
{{/*
80+
kafka image
81+
*/}}
82+
{{- define "kafka.kafkaImage" -}}
83+
{{- $imageTag := default .Chart.AppVersion .Values.image.tag }}
84+
{{- printf "%s:%s" .Values.image.repository $imageTag }}
85+
{{- end }}
86+
87+
{{/*
88+
kafka.entrypoint.configmapName
89+
*/}}
90+
{{- define "kafka.entrypoint.configmapName" -}}
91+
{{ include "kafka.fullname" .}}-entrypoint
92+
{{- end }}
93+
94+
{{/*
95+
kafka-controller
96+
*/}}
97+
{{- define "kafka.controller.fullname" -}}
98+
{{- printf "%s-controller" (include "kafka.fullname" .) }}
99+
{{- end }}
100+
101+
{{/*
102+
kafka-broker
103+
*/}}
104+
{{- define "kafka.broker.fullname" -}}
105+
{{- printf "%s-broker" (include "kafka.fullname" .) }}
106+
{{- end }}
107+
108+
{{/*
109+
kafka-ui
110+
*/}}
111+
{{- define "kafka.ui.fullname" -}}
112+
{{- printf "%s-ui" (include "kafka.fullname" .) }}
113+
{{- end }}
114+
115+
{{/*
116+
kafka-exporter
117+
*/}}
118+
{{- define "kafka.exporter.fullname" -}}
119+
{{- printf "%s-exporter" (include "kafka.fullname" .) }}
120+
{{- end }}
121+
122+
{{/*
123+
kafka clusterId SecretName
124+
*/}}
125+
{{- define "kafka.clusterId.SecretName" -}}
126+
{{- printf "%s-cluster-id" (include "kafka.fullname" .) }}
127+
{{- end }}
128+
129+
{{/*
130+
kafka combinedMode
131+
*/}}
132+
{{- define "kafka.combinedMode" -}}
133+
{{- if .Values.controller.enabled -}}
134+
{{- print "false" -}}
135+
{{- else -}}
136+
{{- print "true" -}}
137+
{{- end -}}
138+
{{- end -}}
139+
140+
{{/*
141+
kafka clusterDomain
142+
*/}}
143+
{{- define "kafka.clusterDomain" -}}
144+
{{- default "cluster.local" .Values.clusterDomain -}}
145+
{{- end -}}
146+
147+
{{/*
148+
kafka broker headless serviceName
149+
*/}}
150+
{{- define "kafka.broker.headless.serviceName" -}}
151+
{{- printf "%s-headless" (include "kafka.fullname" .) }}
152+
{{- end }}
153+
154+
155+
{{/*
156+
kafka.controller.headless.serviceName
157+
*/}}
158+
{{- define "kafka.controller.headless.serviceName" -}}
159+
{{- printf "%s" (include "kafka.controller.fullname" .) }}
160+
{{- end }}
161+
162+
{{/*
163+
kafka.controller.quorum.voters
164+
*/}}
165+
{{- define "kafka.controller.quorum.voters" -}}
166+
{{- $fullName := include "kafka.controller.fullname" . -}}
167+
{{- $serviceName := include "kafka.controller.headless.serviceName" . -}}
168+
{{- $replicaCount := int .Values.controller.replicaCount -}}
169+
{{- if not .Values.controller.enabled -}}
170+
{{- $replicaCount = int .Values.broker.replicaCount -}}
171+
{{- $fullName = include "kafka.broker.fullname" . -}}
172+
{{- $serviceName = include "kafka.broker.headless.serviceName" . -}}
173+
{{- end -}}
174+
{{- $namespace := include "kafka.namespace" . -}}
175+
{{- $clusterDomain := include "kafka.clusterDomain" . -}}
176+
{{- $port := int .Values.controller.containerPort -}}
177+
{{- $suffix := printf "%s.%s.svc.%s:%d" $serviceName $namespace $clusterDomain $port -}}
178+
{{- $servers := list -}}
179+
{{- range $i := until (int $replicaCount) -}}
180+
{{- $servers = printf "%d@%s-%d.%s" $i $fullName $i $suffix | append $servers -}}
181+
{{- end -}}
182+
{{ join "," $servers }}
183+
{{- end -}}

0 commit comments

Comments
 (0)