☰
【计算机工具类-容器和编排Skills】helm-chart-scaffolding 技能
2026/10/6 2:41:34 网站建设 项目流程

创建、组织和管理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.yaml

apiVersion: v2
name: my-chart
description: A Helm chart for my application
type: application
version: 1.0.0
appVersion: "1.0.0"

maintainers:
- name: Your Name
email: your@email.com

dependencies:
- name: redis
version: "16.x.x"
repository: "https://charts.bitnami.com/bitnami"

values.yaml

replicaCount: 1

image:
repository: my-app
tag: latest
pullPolicy: IfNotPresent

service:
type: ClusterIP
port: 80

ingress:
enabled: false
hosts:
- host: chart-example.local
paths: []

resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi

常用命令

命令描述
helm create my-chart创建新的chart
helm lint my-chart验证chart格式
helm template my-chart渲染模板(不安装)
helm install my-release my-chart安装chart
helm upgrade my-release my-chart升级release
helm rollback my-release 1回滚到版本1
helm uninstall my-release卸载release
helm package my-chart打包chart

模板语法示例

Deployment模板

apiVersion: apps/v1
kind: Deployment
metadata:
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.yaml
replicaCount: 3
image:
tag: "v1.0.0"
resources:
limits:
cpu: 1000m
memory: 1Gi

# 部署命令
helm install my-app ./my-chart -f values-production.yaml

最佳实践

  1. 使用_helpers.tpl- 定义可重用的模板助手函数
  2. 合理命名- 使用fullname函数确保名称唯一性
  3. 默认值安全- 在values.yaml中提供安全的默认值
  4. 资源限制- 始终定义resources限制
  5. 文档化- 在NOTES.txt中提供安装说明
  6. 版本控制- 遵循语义化版本
  7. 测试- 使用helm test进行验证
  8. Lint检查- 打包前运行helm lint

参考资源

  • Helm Charts官方文档
  • Helm最佳实践指南
  • 详细实现模式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询