Helm là gì? Hướng dẫn sử dụng Helm cho người mới bắt đầu
Series: Kubernetes từ Zero đến Production
Helm là gì?
Khi mới học Kubernetes, chúng ta thường triển khai ứng dụng bằng cách viết các file YAML rồi chạy:
kubectl apply -f .
Điều này hoàn toàn phù hợp với các ứng dụng nhỏ. Tuy nhiên, với những hệ thống lớn như Prometheus, Grafana, Elasticsearch hay Jenkins, số lượng file YAML có thể lên đến hàng chục hoặc hàng trăm.
Đó là lý do Helm ra đời.
Helm là Package Manager của Kubernetes, giúp cài đặt, nâng cấp và quản lý các ứng dụng Kubernetes chỉ với vài lệnh đơn giản.
Có thể hình dung:
| Hệ điều hành | Package Manager |
|---|---|
| Ubuntu | apt |
| macOS | Homebrew |
| Node.js | npm |
| Python | pip |
| Kubernetes | Helm |
Helm hoạt động như thế nào?
Helm sử dụng khái niệm Chart.
Chart là một gói cài đặt, bên trong chứa toàn bộ tài nguyên Kubernetes như:
- Deployment
- Service
- ConfigMap
- Secret
- PersistentVolumeClaim
- Ingress
- ...
Ví dụ, thay vì tự tạo hơn 50 file YAML để cài Prometheus, bạn chỉ cần sử dụng một Helm Chart.
Cài đặt Helm
macOS
brew install helm
Ubuntu
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Kiểm tra phiên bản:
helm version
Ví dụ:
version.BuildInfo{Version:"v4.0.0", ...}
Một số khái niệm quan trọng
1. Repository
Repository là nơi lưu trữ các Helm Chart.
Thêm repository của Prometheus:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
Cập nhật danh sách Chart:
helm repo update
Xem các repository đã thêm:
helm repo list
Ví dụ:
NAME URL
prometheus-community https://prometheus-community.github.io/helm-charts
2. Chart
Tìm kiếm Chart:
helm search repo prometheus
Ví dụ kết quả:
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/kube-prometheus-stack 87.21.0 v0.92.1 kube-prometheus-stack collects Kubernetes manif...
prometheus-community/prometheus 29.20.1 v3.13.2 Prometheus is a monitoring system and time seri...
prometheus-community/prometheus-adapter 5.3.0 v0.12.0 A Helm chart for k8s prometheus adapter
prometheus-community/prometheus-blackbox-exporter 11.16.0 v0.28.0 Prometheus Blackbox Exporter
prometheus-community/prometheus-cloudwatch-expo... 0.28.1 0.16.0 A Helm chart for prometheus cloudwatch-exporter
...
3. Release
Release là một lần cài đặt của Chart.
Ví dụ:
helm install monitoring prometheus-community/kube-prometheus-stack
Trong đó:
- monitoring là tên Release
- kube-prometheus-stack là Chart
Bạn có thể cài nhiều Release từ cùng một Chart.
Ví dụ:
monitoring-dev
monitoring-test
monitoring-prod
Cài đặt ứng dụng bằng Helm
Ví dụ cài Prometheus Stack:
helm install monitoring \
prometheus-community/kube-prometheus-stack \
-n monitoring \
--create-namespace
Kiểm tra:
helm list -A
Ví dụ:
NAME NAMESPACE
monitoring monitoring
Kiểm tra tài nguyên đã được tạo
kubectl get all -n monitoring
Bạn sẽ thấy nhiều tài nguyên được tạo tự động như:
- Prometheus
- Grafana
- Alertmanager
- Node Exporter
- kube-state-metrics
Nâng cấp Release
Sau khi thay đổi cấu hình hoặc muốn cập nhật phiên bản:
helm upgrade monitoring \
prometheus-community/kube-prometheus-stack
Helm sẽ tự động cập nhật các tài nguyên cần thiết mà không phải xóa và cài lại từ đầu.
Xem lịch sử Release
helm history monitoring
Ví dụ:
REVISION STATUS
1 deployed
2 superseded
3 deployed
Rollback về phiên bản trước
Nếu bản nâng cấp gặp lỗi:
helm rollback monitoring 2
Helm sẽ khôi phục hệ thống về Revision số 2.
Đây là một trong những tính năng rất hữu ích khi triển khai trên môi trường Production.
Gỡ bỏ ứng dụng
Xóa Release:
helm uninstall monitoring -n monitoring
Sau đó kiểm tra:
helm list -A
Một số lệnh Helm thường dùng
| Lệnh | Chức năng |
|---|---|
helm version |
Kiểm tra phiên bản Helm |
helm repo add |
Thêm Repository |
helm repo update |
Cập nhật Repository |
helm repo list |
Danh sách Repository |
helm search repo |
Tìm kiếm Chart |
helm install |
Cài đặt Chart |
helm list |
Xem các Release |
helm status |
Xem trạng thái Release |
helm history |
Xem lịch sử Release |
helm upgrade |
Nâng cấp Release |
helm rollback |
Quay lại phiên bản trước |
helm uninstall |
Gỡ bỏ Release |
Tóm tắt
Helm giúp đơn giản hóa việc triển khai ứng dụng trên Kubernetes bằng cách đóng gói toàn bộ cấu hình thành các Chart có thể tái sử dụng. Thay vì phải quản lý hàng chục hoặc hàng trăm file YAML, bạn chỉ cần vài lệnh để cài đặt, nâng cấp, quay lại phiên bản trước hoặc gỡ bỏ ứng dụng.
Đối với người mới học Kubernetes, việc thành thạo Helm sẽ giúp tiết kiệm rất nhiều thời gian và cũng là cách triển khai phổ biến trong các hệ thống Production hiện nay.
All Rights Reserved