
创建、组织和管理Helm charts的全面指南用于打包和部署Kubernetes应用。下载地址Skill源码下载地址https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/helm-chart-scaffolding技能概述helm-chart-scaffolding 技能是一个用于创建、组织和管理Helm charts的技能。它提供了全面的指导帮助开发者从零开始创建Helm charts打包Kubernetes应用进行分发管理多环境部署以及设置Helm chart仓库。主要功能创建Helm Charts从零开始创建新的Helm charts应用打包打包Kubernetes应用进行分发多环境部署使用Helm管理多环境部署模板化为可重用的Kubernetes manifests实现模板化Chart仓库设置Helm chart仓库最佳实践遵循Helm最佳实践和约定触发条件在以下情况下应该调用此技能:需要从零创建新的Helm charts需要打包Kubernetes应用进行分发需要使用Helm管理多环境部署需要为可重用的Kubernetes manifests实现模板化需要设置Helm chart仓库需要遵循Helm最佳实践和约定Helm Chart结构my-chart/├── Chart.yaml # Chart元数据├── values.yaml # 默认配置值├── values.schema.json # values的JSON schema├── charts/ # 依赖charts├── templates/ # 模板文件│ ├── deployment.yaml│ ├── service.yaml│ ├── configmap.yaml│ ├── ingress.yaml│ ├── _helpers.tpl # 模板助手│ └── NOTES.txt # 安装说明└── .helmignore # 打包时忽略的文件核心文件说明Chart.yamlapiVersion: v2name: my-chartdescription: A Helm chart for my applicationtype: applicationversion: 1.0.0appVersion: 1.0.0maintainers:- name: Your Nameemail: youremail.comdependencies:- name: redisversion: 16.x.xrepository: https://charts.bitnami.com/bitnamivalues.yamlreplicaCount: 1image:repository: my-apptag: latestpullPolicy: IfNotPresentservice:type: ClusterIPport: 80ingress:enabled: falsehosts:- host: chart-example.localpaths: []resources:limits:cpu: 500mmemory: 512Mirequests:cpu: 250mmemory: 256Mi常用命令命令描述helm create my-chart创建新的charthelm lint my-chart验证chart格式helm template my-chart渲染模板不安装helm install my-release my-chart安装charthelm upgrade my-release my-chart升级releasehelm rollback my-release 1回滚到版本1helm uninstall my-release卸载releasehelm package my-chart打包chart模板语法示例Deployment模板apiVersion: apps/v1kind: Deploymentmetadata:name: {{ include my-chart.fullname . }}labels:{{- include my-chart.labels . | nindent 4 }}spec:replicas: {{ .Values.replicaCount }}selector:matchLabels:{{- include my-chart.selectorLabels . | nindent 6 }}template:metadata:labels:{{- include my-chart.selectorLabels . | nindent 8 }}spec:containers:- name: {{ .Chart.Name }}image: {{ .Values.image.repository }}:{{ .Values.image.tag }}imagePullPolicy: {{ .Values.image.pullPolicy }}ports:- containerPort: {{ .Values.service.port }}resources:{{- toYaml .Values.resources | nindent 12 }}_helpers.tpl助手函数{{- define my-chart.labels -}}helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}app.kubernetes.io/name: {{ .Chart.Name }}app.kubernetes.io/instance: {{ .Release.Name }}app.kubernetes.io/version: {{ .Chart.AppVersion }}{{- end -}}{{- define my-chart.fullname -}}{{- if .Values.fullnameOverride }}{{- .Values.fullnameOverride | trunc 63 | trimSuffix - }}{{- else }}{{- $name : default .Chart.Name .Values.nameOverride }}{{- printf %s-%s .Release.Name $name | trunc 63 | trimSuffix - }}{{- end }}{{- end }}多环境配置# values-production.yamlreplicaCount: 3image:tag: v1.0.0resources:limits:cpu: 1000mmemory: 1Gi# 部署命令helm install my-app ./my-chart -f values-production.yaml最佳实践使用_helpers.tpl- 定义可重用的模板助手函数合理命名- 使用fullname函数确保名称唯一性默认值安全- 在values.yaml中提供安全的默认值资源限制- 始终定义resources限制文档化- 在NOTES.txt中提供安装说明版本控制- 遵循语义化版本测试- 使用helm test进行验证Lint检查- 打包前运行helm lint参考资源Helm Charts官方文档Helm最佳实践指南详细实现模式