运维
运维相关知识和内容
Helm Charts高级用法:模板开发与仓库管理
一、Helm概述
1.1 为什么用Helm
Helm是Kubernetes的包管理器:
- 打包:将应用及相关资源打包
- 版本管理:支持版本升级和回滚
- 配置管理:模板化配置
- 共享分发:Chart仓库分享
1.2 Chart结构
mychart/ ├── Chart.yaml # Chart元数据 ├── values.yaml # 默认配置 ├── charts/ # 依赖的Charts └── templates/ # K8s资源模板 ├── deployment.yaml ├── service.yaml └── _helpers.tpl # 辅助模板
二、模板开发
2.1 values.yaml
replicaCount: 2 image: repository: myregistry/myapp tag: "latest" service: type: ClusterIP port: 8080 resources: limits: cpu: 100m memory: 128Mi
2.2 模板语法
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "mychart.fullname" . }}
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"三、流程控制
3.1 条件渲染
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
...
{{- end }}3.2 循环渲染
{{- range $service := .Values.services }}
apiVersion: v1
kind: Service
metadata:
name: {{ $service.name }}
...
{{- end }}四、依赖管理
4.1 Chart依赖
dependencies: - name: postgresql version: "12.x.x" repository: "https://charts.bitnami.com"
helm dependency update
五、总结
Helm Chart开发要点:
1. 模板化:善用helpers和函数
2. 配置校验:values.schema.json
3. 依赖管理:版本锁定
4. 测试:CI/CD集成测试