Quy ước: <rel> là tên release, <chart> dạng repo/chart hoặc oci://.... Helm lưu trạng thái release dưới dạng Secret trong namespace của release. Luôn thêm -n <ns>.
Repo và tìm chart
| Mục đích | Lệnh |
|---|---|
| Thêm repo | helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx |
| Cập nhật index | helm repo update |
| Liệt kê repo | helm repo list |
| Tìm chart trong repo đã thêm | helm search repo nginx |
| Xem các version có sẵn | helm search repo ingress-nginx/ingress-nginx --versions | head |
| Xem values mặc định | helm show values ingress-nginx/ingress-nginx > values-default.yaml |
| Xem Chart.yaml / README | helm show chart <chart> / helm show readme <chart> |
| Kéo chart về máy | helm pull <chart> --version 4.11.3 --untar |
| Chart OCI | helm show values oci://registry.example.com/charts/app --version 1.2.0 |
Cài và nâng cấp
| Mục đích | Lệnh |
|---|---|
| Cài hoặc nâng cấp (idempotent, dùng trong CI) | helm upgrade --install <rel> <chart> -n <ns> --create-namespace -f values.yaml |
| Ghim version chart | helm upgrade --install <rel> <chart> --version 4.11.3 -n <ns> |
| Ghi đè 1 giá trị | --set image.tag=1.4.2 / chuỗi: --set-string podAnnotations.rev=42 |
| Nhiều file values (file sau đè file trước) | -f values.yaml -f values-prod.yaml |
| Chờ tài nguyên Ready, timeout | --wait --timeout 10m |
| Tự rollback nếu fail | --atomic (Helm 4 đổi tên thành --rollback-on-failure) |
| Giữ values cũ, chỉ đổi một chỗ | helm upgrade <rel> <chart> -n <ns> --reuse-values --set image.tag=1.4.3 |
| Gỡ release | helm uninstall <rel> -n <ns> |
--reuse-values gộp values cũ với --set mới nhưng bỏ qua default mới của chart version mới. Khi nâng version chart, truyền lại đầy đủ -f values.yaml thay vì dùng cờ này.
Xem trạng thái release
| Mục đích | Lệnh |
|---|---|
| Release trong namespace / mọi namespace | helm list -n <ns> / helm list -A |
| Gồm cả release lỗi/pending | helm list -A --all |
| Trạng thái, notes | helm status <rel> -n <ns> |
| Lịch sử revision | helm history <rel> -n <ns> |
| Values người dùng truyền vào | helm get values <rel> -n <ns> |
| Values đầy đủ (gồm default) | helm get values <rel> -n <ns> --all |
| Manifest đã apply | helm get manifest <rel> -n <ns> |
| Values của revision cũ | helm get values <rel> -n <ns> --revision 3 |
Rollback
| Mục đích | Lệnh |
|---|---|
| Về revision trước | helm rollback <rel> -n <ns> |
| Về revision cụ thể | helm rollback <rel> 3 -n <ns> --wait |
Release kẹt pending-upgrade / pending-install |
helm history <rel> -n <ns> rồi helm rollback <rel> <rev-deployed-cuối> -n <ns> |
Debug template
| Mục đích | Lệnh |
|---|---|
| Render ra YAML không cần cluster | helm template <rel> <chart> -f values.yaml > out.yaml |
| Render một template | helm template <rel> ./chart -s templates/deployment.yaml |
| Chạy thử với cluster (server-side validate) | helm upgrade --install <rel> <chart> -f values.yaml --dry-run=server --debug |
| Kiểm tra lỗi chart | helm lint ./chart -f values.yaml |
| So sánh trước khi upgrade | helm diff upgrade <rel> <chart> -f values.yaml -n <ns> (cần plugin helm-diff) |
| Chạy test hook của chart | helm test <rel> -n <ns> |
Viết chart
| Mục đích | Lệnh |
|---|---|
| Tạo khung chart | helm create mychart |
| Tải dependency khai báo trong Chart.yaml | helm dependency update ./mychart |
| Đóng gói | helm package ./mychart --version 1.2.0 |
| Đăng nhập và push lên OCI registry | helm registry login registry.example.com / helm push mychart-1.2.0.tgz oci://registry.example.com/charts |
Trong template, dùng {{ .Values.x | default "y" }}, {{- toYaml .Values.resources | nindent 12 }} và required "image.tag là bắt buộc" .Values.image.tag để chart báo lỗi sớm thay vì render YAML sai.
Ví dụ cài ingress-nginx và cert-manager bằng Helm: k8s-ingress-cert-manager. Khái niệm object: Kubernetes core concepts.