0

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

Viblo
Let's register a Viblo Account to get more interesting posts.