Kubernetes Helm 构建无端口类型 Chart 实践
基于 Helm 创建基础 Chart 后,通过移除 Service 文件和端口配置实现无端口 Worker 类型应用部署。操作包括在 values.yaml 中关闭 ingress,在 deployment.yaml 中删除 containers.ports,并删除 service.yaml 文件。以 busybox 为例演示清理配置、调整镜像及标签设置,最终完成打包与升级操作,支持多环境配置管理。
基于 Helm 创建基础 Chart 后,通过移除 Service 文件和端口配置实现无端口 Worker 类型应用部署。操作包括在 values.yaml 中关闭 ingress,在 deployment.yaml 中删除 containers.ports,并删除 service.yaml 文件。以 busybox 为例演示清理配置、调整镜像及标签设置,最终完成打包与升级操作,支持多环境配置管理。
使用 helm create 创建 Chart 后,默认生成的是 Web 类型应用,并配置了 Service 和端口探测。如果直接将其更改为无端口的 Worker 类型应用,部署时会报错。因此需要调整 Helm Chart 文件,移除无端口和 Service 相关配置,然后再打包部署。
本文以 busybox 为例,演示如何打包一个无端口的 Helm Chart 并部署到 Kubernetes 中。
helm create xg-busybox
ingress 为 false。containers.ports。修改后的 values.yaml 示例:
replicaCount: 1
image:
repository: registry-vpc.cn-shanghai.aliyuncs.com/yourNamespace/busybox
pullPolicy: IfNotPresent
tag: busybox_1.31
imagePullSecrets:
- name: regcred
nameOverride: ""
fullnameOverride: ""
serviceAccount:
create: true
annotations: {}
name: ""
podAnnotations: {}
podSecurityContext: {}
securityContext: {}
service:
type: ClusterIP
port: 80
ingress:
enabled: false
className: ""
annotations: {}
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
resources: {}
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
nodeSelector: {}
tolerations: []
affinity: {}
修改后的 templates/deployment.yaml 示例(去除 ports):
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "xg-busybox.fullname" . }}
labels: {{- include "xg-busybox.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels: {{- include "xg-busybox.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations: {{- toYaml . | nindent 8 }}
{{- end }}
labels: {{- include "xg-busybox.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets: {{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "xg-busybox.serviceAccountName" . }}
securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext: {{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
command: [sh, -c, 'sleep infinity']
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources: {{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
# helm push xg-busybox/ bigdata-apps
# helm repo update
helm upgrade xg-busybox-dev bigdata-apps/xg-busybox -f xg-busybox/dev-values.yaml --set=image.tag=busybox_1.31 -n sre-test
helm list -A | grep xg-busybox
执行后可发现服务 xg-busybox-dev 已正常更新。
service.yaml,并关闭端口和服务相关的配置。dev-values.yaml(开发测试环境)和 prod-values.yaml(生产环境),以实现一个 Chart 匹配多种环境的目的。Helm 版本 v3.6.1

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online