Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

Helm Chart là gì? Hướng dẫn cài đặt và triển khai Helm Chart hiệu quả

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:10/03/2026
Lượt xem

Quy trình sản xuất nội dung

Đánh giá

[esi kkstarratings cache="private" ttl="3"]

Helm Chart là một gói cấu hình thiết yếu trong hệ sinh thái Kubernetes, cho phép đóng gói toàn bộ các tệp manifest YAML và các thiết lập cần thiết để triển khai một ứng dụng hoặc một stack dịch vụ lên cluster dưới dạng một đơn vị duy nhất. Trong bài viết này, mình sẽ giúp bạn hiểu rõ hơn về Helm Chart, từ thành phần cơ bản, lợi ích nổi bật đến cách cài đặt và triển khai chi tiết.

Những điểm chính

  • Hiểu về Helm: Giúp bạn biết Helm là trình quản lý gói cho Kubernetes, giúp đơn giản hóa việc triển khai và quản lý ứng dụng.
  • Hiểu về Helm Chart: Giúp bạn biết đây là đơn vị đóng gói ứng dụng cho Kubernetes, cho phép cài đặt và quản lý một cách thống nhất.
  • Thành phần và kiến trúc: Nắm vững các thành phần chính của Helm và cấu trúc của một Helm Chart, giúp bạn hiểu rõ cách công cụ này hoạt động và tương tác với Kubernetes.
  • Lợi ích chính: Nhận thức được các lợi ích vượt trội như đơn giản hóa triển khai, tái sử dụng và quản lý môi trường, giúp bạn hiểu rõ giá trị mà Helm mang lại cho quy trình làm việc với Kubernetes.
  • Cách quản lý cấu hình và môi trường: Hiểu rõ cách Helm tách biệt template và giá trị cấu hình, giúp bạn dễ dàng quản lý và triển khai ứng dụng trên nhiều môi trường khác nhau một cách nhất quán.
  • Cách cài đặt và chuẩn bị môi trường: Nắm vững các bước cài đặt Helm và quản lý repository, giúp bạn nhanh chóng thiết lập môi trường và bắt đầu sử dụng công cụ.
  • Cách làm việc với Chart có sẵn: Nắm vững các lệnh cơ bản, giúp bạn tự tin tìm kiếm, cài đặt, nâng cấp và rollback các ứng dụng phổ biến một cách dễ dàng.
  • Cách tạo và phát triển Chart mới: Tìm hiểu quy trình tạo một Helm Chart tùy chỉnh, giúp bạn có thể tự mình đóng gói và quản lý các ứng dụng phức tạp của riêng mình.
  • Cách đóng gói và chia sẻ: Nắm vững các bước để đóng gói và chia sẻ Helm Chart, giúp bạn dễ dàng tái sử dụng và phân phối các gói ứng dụng trong nội bộ hoặc cho cộng đồng.
  • Hạ tầng Vietnix cho Kubernetes: Hiểu rằng Vietnix cung cấp hệ sinh thái hạ tầng đa dạng, hiệu năng cao, lý tưởng để vận hành và quản lý ứng dụng Kubernetes hiệu quả.
  • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến Helm Chart.
những điểm chính

Helm là gì?

Helm là công cụ quản lý gói và quản lý vòng đời ứng dụng dành cho Kubernetes, cho phép đóng gói nhiều tài nguyên Kubernetes (Deployment, Service, Ingress, ConfigMap,…) thành một đơn vị triển khai logic duy nhất gọi là Helm Chart để cài đặt, nâng cấp và rollback bằng vài lệnh thống nhất. Về bản chất, Helm đóng vai trò “Kubernetes package manager”, giúp định nghĩa, chia sẻ và triển khai các ứng dụng từ chart lưu trữ trong repository, đồng thời ghi nhận mỗi lần cài đặt như một release riêng biệt để dễ quản lý cấu hình và lịch sử triển khai trên nhiều môi trường khác nhau.

Helm là công cụ quản lý gói và quản lý vòng đời ứng dụng dành cho Kubernetes
Helm là công cụ quản lý gói và quản lý vòng đời ứng dụng dành cho Kubernetes

Helm là công cụ mạnh mẽ để quản lý ứng dụng Kubernetes và để khai thác tối đa sức mạnh của nó, bạn cần một nền tảng Kubernetes linh hoạt. Dịch vụ Enterprise Cloud của Vietnix được thiết kế cho chính mục đích này, cho phép bạn tự triển khai và quản lý các cụm Kubernetes (Cluster) một cách dễ dàng, tạo môi trường lý tưởng để bạn vận hành các Helm Chart hiệu quả.

Helm Chart là gì?

Helm Chart là gói cấu hình dùng cho Kubernetes, đóng gói toàn bộ manifest (YAML) và thiết lập cần thiết để triển khai một ứng dụng hoặc một stack dịch vụ lên cluster dưới dạng một đơn vị duy nhất.

Helm Chart là gói cấu hình dùng cho Kubernetes, đóng gói toàn bộ manifest
Helm Chart là gói cấu hình dùng cho Kubernetes, đóng gói toàn bộ manifest

Mỗi chart mô tả tập tài nguyên Kubernetes liên quan, cho phép cài đặt, tùy biến cấu hình và quản lý vòng đời ứng dụng thông qua các lệnh Helm mà không cần thao tác trực tiếp với từng file YAML rời rạc.​

Thành phần cơ bản của Helm bao gồm Helm Client (CLI) để người dùng thao tác, Helm Library để xử lý chart và tương tác với Kubernetes, cùng với cấu trúc các file bên trong Helm Chart và Kubernetes API Server làm điểm kết nối với cluster.

Helm Client (CLI)

Helm Client là công cụ dòng lệnh mà người dùng sử dụng để làm việc với Helm, bao gồm tạo chart, quản lý repository và cài đặt, nâng cấp, rollback hoặc gỡ bỏ các release trên Kubernetes cluster. Đây cũng là nơi thực thi các lệnh như helm install, helm upgrade, helm rollback, helm list trên máy của người vận hành hoặc trong pipeline CI/CD.​

Helm Library

Helm Library là lớp thư viện bên trong được viết bằng Go, sử dụng Kubernetes client library để giao tiếp với Kubernetes API Server nhằm triển khai, cập nhật và xóa tài nguyên ứng dụng dựa trên chart. Thư viện này chịu trách nhiệm kết hợp template trong chart với giá trị cấu hình (values) do người dùng cung cấp, tạo ra manifest Kubernetes hoàn chỉnh để gửi lên cluster và lưu thông tin release bằng cách tận dụng chính cơ chế lưu trữ của Kubernetes (như Secret).​

Cấu trúc và thành phần bên trong Helm Chart

Một Helm Chart là thư mục hoặc gói .tgz chứa toàn bộ định nghĩa tài nguyên Kubernetes dưới dạng template và cấu hình đi kèm. Các thành phần chính gồm:​

  • Chart.yaml: Lưu metadata của chart như tên, phiên bản, mô tả, dependency.​
  • values.yaml: Chứa giá trị mặc định cho các biến trong template, có thể bị ghi đè khi cài đặt hoặc nâng cấp.​
  • Thư mục templates/: Chứa các file YAML sử dụng Go templating để sinh ra Deployment, Service, Ingress, ConfigMap, Secret, v.v.​
  • Thư mục charts/: Dùng lưu các chart phụ thuộc (subchart/dependency) nếu ứng dụng gồm nhiều thành phần.​
  • Các file/ thư mục bổ trợ: NOTES.txt, templates/tests/ để hiển thị hướng dẫn sau khi cài đặt và định nghĩa test cho chart.​
Cấu trúc và thành phần bên trong Helm Chart
Cấu trúc và thành phần bên trong Helm Chart

Kubernetes API Server trong kiến trúc Helm v3

Từ Helm v3, thành phần Tiller được loại bỏ, Helm Client kết hợp với Helm Library giao tiếp trực tiếp với Kubernetes API Server thông qua Kubernetes client library, không cần server trung gian riêng. Khi người dùng chạy lệnh như helm install, Helm sẽ render template bằng cách trộn templates/ với values tương ứng, sau đó gửi manifest đã sinh tới Kubernetes API Server để tạo hoặc cập nhật tài nguyên trên cluster.​

Lợi ích khi sử dụng Helm Chart với Kubernetes

Helm Chart mang lại nhiều lợi ích khi triển khai và quản lý ứng dụng trên Kubernetes, đặc biệt về chuẩn hóa cấu hình, tự động hóa và kiểm soát vòng đời release.​

  • Đóng gói và tái sử dụng manifest: Helm Chart gom toàn bộ Deployment, Service, Ingress, ConfigMap, Secret,… vào một gói thống nhất, giúp triển khai ứng dụng lặp lại nhiều lần mà không phải quản lý thủ công từng file YAML rời.​
  • Đơn giản hóa triển khai và cập nhật: Việc cài đặt, nâng cấp và gỡ ứng dụng được thực hiện bằng vài lệnh helm install, helm upgrade, helm uninstall, giảm thao tác lặp với kubectl và hạn chế lỗi do chỉnh sửa tay.​
  • Hỗ trợ rollback nhanh khi có sự cố: Mỗi lần triển khai được lưu thành một release có version riêng, cho phép dùng helm rollback quay lại phiên bản trước nếu bản mới gặp vấn đề, giúp khôi phục trạng thái ứng dụng ổn định dễ dàng.​
  • Tách bạch cấu hình cho nhiều môi trường: values.yaml và các file values riêng cho phép cấu hình khác nhau giữa dev, staging, production trong cùng một chart, giữ nguyên logic template nhưng thay đổi tham số theo từng môi trường.​
  • Quản lý phụ thuộc giữa các dịch vụ: Thư mục charts/ và khai báo dependency giúp xử lý các thành phần phụ thuộc (database, cache, message queue…) như một phần của chart, tránh phải cài thủ công từng dịch vụ.​
  • Chuẩn hóa và chia sẻ cấu hình trong đội ngũ: Chart có thể được version, lưu trữ ở repository nội bộ hoặc public (Artifact Hub, Git repo), giúp các nhóm dùng chung cùng một “mẫu triển khai chuẩn” cho nhiều cluster và dự án khác nhau.​
Lợi ích khi sử dụng Helm Chart với Kubernetes
Lợi ích khi sử dụng Helm Chart với Kubernetes

Cách Helm Chart hỗ trợ quản lý cấu hình và môi trường

Helm Chart hỗ trợ quản lý cấu hình và môi trường bằng cơ chế template và values linh hoạt, cho phép giữ một bộ manifest chung nhưng thay đổi tham số theo từng môi trường triển khai.

  • Tách logic template và giá trị cấu hình: Các file trong thư mục templates/ dùng Go templating để định nghĩa Deployment, Service, ConfigMap… trong khi values.yaml chứa giá trị cụ thể, giúp thay đổi cấu hình mà không phải sửa trực tiếp YAML của resource.​
  • Quản lý nhiều môi trường qua nhiều values file: Có thể tạo thêm values-dev.yaml, values-staging.yaml, values-prod.yaml,… và dùng cờ -f để chọn file tương ứng khi cài đặt/nâng cấp, từ đó dùng cùng một chart cho nhiều môi trường với cấu hình khác nhau.​
  • Ghi đè cấu hình bằng dòng lệnh khi deploy: Ngoài file values, Helm cho phép dùng --set hoặc --set-file để override nhanh một số giá trị (ví dụ replicaCount, image.tag, env) trong từng lần triển khai, hỗ trợ tinh chỉnh cấu hình mà không tạo thêm file.​
  • Hỗ trợ cấu hình phức tạp bằng biến, điều kiện và vòng lặp: Hệ thống template hỗ trợ if/else, range, biến và hàm helper, giúp xây dựng manifest khác nhau cho từng môi trường (bật/tắt resource, thay đổi limit, cấu hình ingress) dựa trên giá trị trong values.​
  • Dễ dàng chuẩn hóa và chia sẻ cấu hình môi trường: Toàn bộ thiết lập (port, image, env, resource, host…) được mô tả dưới dạng key-value trong values, có thể lưu trong Git, review và tái sử dụng cho nhiều cluster hoặc team, trong khi template giữ nguyên.​

Cách cài Helm CLI trên các hệ điều hành phổ biến

Cài Helm trên macOS bằng Homebrew

Bạn cài Helm thông qua Homebrew bằng cách chạy lệnh:

brew install helm

Cài Helm trên Windows bằng Chocolatey hoặc Scoop

Trên Windows dùng Chocolatey, bạn mở PowerShell hoặc Command Prompt với quyền Administrator và chạy:

choco install kubernetes-helm

Nếu dùng Scoop, bạn mở PowerShell và chạy:

scoop install helm

Cài Helm trên Linux bằng script hoặc package manager

Trên Linux, bạn mở terminal và chạy lần lượt các lệnh shell sau, đây đều là lệnh shell/Bash dùng để tải và chạy script cài Helm:

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Cài Helm bằng Snap trên hệ hỗ trợ Snap

Với hệ thống có Snap (Ubuntu và một số distro Linux), bạn có thể chạy:

sudo snap install helm --classic

Đảm bảo binary Helm nằm trong PATH

Nếu cài bằng cách tải binary thủ công, bạn cần di chuyển file helm vào thư mục nằm trong PATH, ví dụ trên Linux/macOS:

sudo mv helm /usr/local/bin/

Trên Windows, bạn có thể thêm thư mục chứa helm.exe vào biến môi trường PATH qua giao diện System Properties hoặc công cụ quản lý môi trường.

Thêm và quản lý repository chart

Bước 1: Thêm repository Helm mới

Sau khi cài Helm, bạn mở terminal (Linux/macOS) hoặc PowerShell/Command Prompt (Windows) và chạy lệnh:

helm repo add <ten-repo> <url-repo>

Ví dụ thêm repo Bitnami:

helm repo add bitnami https://charts.bitnami.com/bitnami

Bước 2: Cập nhật cache của các repository

Để tải index mới nhất từ các repo vừa thêm, bạn chạy lệnh:

helm repo update

Bước 3: Tìm chart trong các repo đã cấu hình

Để tìm chart theo tên hoặc từ khóa, bạn sử dụng:

helm search repo <tu-khoa>

Bước 4: Kiểm tra danh sách repository hiện có

Để xem các repo đã thêm, bạn chạy:

helm repo list

Kiểm tra phiên bản và xác thực cài đặt Helm thành công

Bước 1: Kiểm tra phiên bản Helm

Bạn chạy lệnh:

helm version

helm version

Lệnh này hiển thị thông tin phiên bản Helm client (và server nếu có), xác nhận binary hoạt động bình thường.​

Bước 2: Kiểm tra Helm nhận lệnh cơ bản

Bạn có thể thử các lệnh:

  • helm help để xem danh sách lệnh và cú pháp sử dụng.
  • helm list để kiểm tra Helm có thể truy cập cluster và liệt kê release (nếu đã có).

Cả hai đều là lệnh Helm chạy được trên shell/Bash (Linux/macOS) hoặc PowerShell/Command Prompt (Windows).​

Bước 3: Xác thực kết nối với Kubernetes cluster

Khi hệ thống đã cấu hình kubectl trỏ tới một cluster hợp lệ, bạn chạy:

helm ls -A

Đây là lệnh Helm (shell/Bash hoặc PowerShell) để liệt kê tất cả release trên mọi namespace, nếu không xuất hiện lỗi kết nối, có thể coi là Helm đã làm việc với Kubernetes API Server thông qua kubeconfig hiện tại.​

Tìm kiếm chart trên Artifact Hub và repository bên thứ ba

Bước 1: Bạn tìm chart trên Artifact Hub bằng giao diện web

Bạn truy cập trang Artifact Hub tại địa chỉ https://artifacthub.io và nhập từ khóa (ví dụ “nginx”, “mysql”, “wordpress”) vào ô tìm kiếm để xem danh sách các Helm Chart công khai từ nhiều repository khác nhau.​

Bước 2: Bạn tìm chart bằng lệnh helm search hub

Bạn có thể dùng CLI để tìm trên Artifact Hub với lệnh:

helm search hub <tu-khoa>

Lệnh này giúp bạn xem nhanh tên chart, phiên bản và đường dẫn tới trang chi tiết trên Artifact Hub.

Bước 3: Bạn tìm chart trong repository đã thêm bằng helm search repo

Sau khi bạn thêm các repository cục bộ (ví dụ Bitnami, nginx…), bạn chạy:

helm repo update

Sau đó bạn dùng:

helm search repo <tu-khoa>

Lệnh này giúp bạn tìm chart có thể cài trực tiếp từ các repo mà bạn đã cấu hình trong Helm.

Cài đặt ứng dụng từ chart có sẵn

Bước 1: Bạn đảm bảo đã thêm repository chứa chart cần cài

Bạn dùng lệnh:

helm repo add <ten-repo> <url-repo>

Ví dụ, để thêm repo Bitnami, bạn chạy:

helm repo add bitnami https://charts.bitnami.com/bitnami

Sau đó bạn chạy lệnh sau để cập nhật danh sách chart mới nhất.:

helm repo update

Bước 2: Bạn cài đặt chart với giá trị mặc định

Bạn sử dụng cú pháp chung:

helm install <ten-release> <ten-repo>/<ten-chart>

Ví dụ cài Apache từ Bitnami:

helm install apache bitnami/apache

Lệnh này sẽ tạo một release tên “apache” trong namespace mặc định của Kubernetes với cấu hình từ values.yaml mặc định của chart.

Bước 3: Bạn cài đặt chart với file values tùy chỉnh

Nếu bạn có file giá trị riêng (ví dụ values-prod.yaml), bạn dùng:

helm install <ten-release> <ten-repo>/<ten-chart> -f values-prod.yaml

Ví dụ:

helm install apache bitnami/apache -f values-prod.yaml

Lệnh này giúp bạn cài ứng dụng với cấu hình phù hợp môi trường thay vì dùng hoàn toàn giá trị mặc định.

Bước 4: Bạn cài chart từ thư mục local hoặc gói .tgz

Khi bạn đã tải hoặc tự tạo chart trong thư mục local, bạn chạy:

helm install <ten-release> ./duong-dan-chart

Ví dụ:

helm install demo-helm ./demo-helm

Hoặc nếu là file .tgz:

helm install demo-helm ./demo-helm-0.1.0.tgz.

Nâng cấp, xem lại và rollback release

Bước 1: Bạn xem danh sách release hiện có

Bạn chạy lệnh:

helm list

Để xem các release trong namespace hiện tại hoặc để xem tất cả release trên mọi namespace:

helm list -A

Bước 2: Bạn nâng cấp release với cấu hình hoặc phiên bản mới

Khi bạn muốn đổi cấu hình (values) hoặc nâng phiên bản chart, bạn dùng:

helm upgrade <ten-release> <ten-repo>/<ten-chart> -f <file-values>

Ví dụ:

helm upgrade apache bitnami/apache -f values-prod.yaml

Bạn cũng có thể nâng cấp chart local:

helm upgrade demo-helm ./demo-helm -f custom-values.yaml.

Bước 3: Bạn xem lịch sử các lần triển khai của một release

Để kiểm tra lịch sử và các revision của một release, bạn chạy:

helm history <ten-release>

Ví dụ:

helm history apache

Lệnh này giúp bạn biết release đã được cài/upgrade bao nhiêu lần, ở mỗi revision dùng chart phiên bản nào.

Bước 4: Bạn rollback release về một revision trước đó

Khi bản nâng cấp gặp lỗi, bạn dùng lệnh:

helm rollback <ten-release> <so-revision>

Ví dụ, để rollback release “apache” về revision 1, bạn chạy:

helm rollback apache 1

Sau rollback, bạn có thể dùng lại lệnh sau để kiểm tra trạng thái và xác nhận release đã quay về revision mong muốn:

helm history apache

Khởi tạo skeleton Helm Chart mới

Bước 1: Bạn cài đặt Helm theo hướng dẫn chính thức và đảm bảo lệnh helm version hoạt động bình thường trên máy, đồng thời kubeconfig đã trỏ tới một Kubernetes cluster dùng để test chart.​

Bước 2: Bạn mở terminal (hoặc PowerShell trên Windows) tại thư mục làm việc và chạy:

helm create mychart

Lệnh này tạo một thư mục mychart/ chứa sẵn cấu trúc chart gồm Chart.yaml, values.yaml, thư mục templates/, charts/, .helmignore và một số file helper, dùng làm skeleton ban đầu.

Bước 3: Bạn xem lại cấu trúc thư mục chart vừa tạo bằng lệnh:

ls mychart

Hoặc dùng giao diện IDE để mở thư mục, qua đó kiểm tra các thành phần như:

  • Chart.yaml: Metadata chart.
  • values.yaml: Giá trị mặc định.
  • templates/: Chứa manifest mẫu cho Deployment, Service, Ingress, ServiceAccount, HPA,…​

Thiết kế template Deployment, Service, Ingress trong chart

Bước 1: Bạn xác định ứng dụng cần các resource nào (Deployment, StatefulSet, Service, Ingress, ConfigMap, Secret) và cách cấu hình (số replica, port, image, kiểu Service, host Ingress).​

Bước 2: Bạn mở các file như deployment.yaml, service.yaml, ingress.yaml trong thư mục mychart/templates/ và chỉnh sửa spec cho phù hợp ứng dụng, hoặc tạo file mới nếu cần thêm resource chuyên biệt (ví dụ configmap.yaml, secret.yaml).​

Bước 3: Bạn thay các giá trị cố định (image, replicaCount, resource limits, env, host) bằng expression sử dụng các object như .Values, .Chart, .Release, ví dụ:

  • replicas: {{ .Values.replicaCount }}
  • image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  • host: {{ .Values.ingress.hosts[0].host }}

Cách tham số hóa này giúp chart sử dụng được cho nhiều môi trường với cấu hình khác nhau.​

Định nghĩa values và binding vào template

Bước 1: Bạn mở file mychart/values.yaml và khai báo các giá trị cần dùng trong template, ví dụ:

  • replicaCount, image.repository, image.tag, service.type, service.port.
  • Các cấu hình ingress, resource, autoscaling, env, config,…

Các khóa này phải trùng với đường dẫn .Values đã dùng trong template.​

Bước 2: Bạn đảm bảo mỗi chỗ cần tùy biến trong YAML đều được trỏ đến đúng Values, ví dụ containerPort: {{ .Values.containerPort }} hoặc block environment env: sinh từ .Values.env bằng toYamlnindent.​

Bước 3: Bạn có thể tạo thêm values-dev.yaml, values-staging.yaml, values-prod.yaml với giá trị override cho từng môi trường, ví dụ khác nhau về replica, resource, host, biến môi trường nhạy cảm.​

Kiểm tra, render và test Helm Chart mới

Bước 1: Bạn chạy lệnh:

helm lint mychart

Lệnh này kiểm tra cấu trúc chart, syntax template, giá trị bắt buộc trong Chart.yaml và values.yaml nhằm phát hiện lỗi sớm trước khi triển khai lên cluster.​

Bước 2: Bạn dùng lệnh:

helm template mychart

Hoặc:

helm install myrelease mychart --dry-run --debug

Để xem manifest YAML sau khi render mà không áp dụng lên cluster, qua đó bạn kiểm tra lại các field, giá trị và cấu trúc tài nguyên.​

Bước 3: Khi đã kiểm tra xong, bạn chạy:

helm install myrelease mychart

Hoặc:

helm install myrelease mychart -f values-dev.yaml

Sau đó, bạn dùng kubectl get pods, kubectl get svc, kubectl describe để kiểm tra Pod, Service, Ingress được tạo đúng theo thiết kế.​

Đóng gói và chuẩn bị chia sẻ Helm Chart

Bước 1: Bạn đóng gói chart thành file .tgz

Khi chart đã ổn định, bạn chạy:

helm package mychart

Lệnh này tạo file mychart-<version>.tgz dựa trên thông tin phiên bản trong Chart.yaml, dùng để lưu trữ hoặc phân phối.​

Bước 2: Bạn tạo repository chart nội bộ (nếu cần)

Bạn có thể tạo một thư mục chứa nhiều file .tgz và tạo index bằng lệnh:

helm repo index

Sau đó, bạn host thư mục này qua HTTP (ví dụ GitHub Pages, web server nội bộ) và dùng helm repo add để thêm repo này vào cluster khác.​

Bước 3: Bạn publish chart lên Git hoặc kho công khai (tùy nhu cầu)

Bạn lưu mã chart trong repository Git (GitHub, GitLab…) để quản lý version và review, kết hợp workflow CI/CD hoặc GitHub Actions để tự động build, cập nhật index.yaml và publish chart lên một chart repo hoặc Artifact Hub nếu muốn chia sẻ công khai.

Đóng gói Helm Chart thành package .tgz

Bước 1: Bạn chuẩn bị chart với đầy đủ file và metadata

Bạn đảm bảo thư mục chart chứa Chart.yaml, values.yaml, thư mục templates/ và các file cần thiết khác, trong đó Chart.yaml có đầy đủ tên, phiên bản, mô tả, dependency và tuân thủ chuẩn của Helm.​

Bước 2: Bạn sử dụng lệnh helm package để tạo file .tgz

Bạn di chuyển vào thư mục cha của chart và chạy:

helm package <ten-thu-muc-chart>

Lệnh này tạo file mychart-<version>.tgz trong thư mục hiện tại, trong đó được lấy từ trường version trong Chart.yaml.

Bước 3: Bạn lưu trữ file .tgz vào thư mục chứa các chart đã build

Bạn có thể tổ chức một thư mục riêng (ví dụ charts/ hoặc nginx-chart-files/) để chứa tất cả file .tgz trước khi tạo repository, giúp quản lý nhiều phiên bản chart thuận tiện hơn.

Tạo và quản lý repository Helm Chart

Bước 1: Bạn tạo chart repository cục bộ với index.yaml

Trong thư mục chứa các file .tgz, bạn chạy:

helm repo index . --url <url-public>

Trong đó <url-public> là URL mà thư mục này sẽ được host (ví dụ GitHub Pages, web server, S3…). Lệnh này tạo file index.yaml liệt kê metadata các chart, là yêu cầu bắt buộc để thư mục đó trở thành một Helm chart repository hợp lệ.​

Bước 2: Bạn upload file .tgz và index.yaml lên nơi lưu trữ

Bạn đồng bộ thư mục này lên nơi host (ví dụ:

  • GitHub Pages: Push lên branch được cấu hình làm site.
  • S3 hoặc web server: Upload folder chứa .tgz và index.yaml lên đúng đường dẫn URL đã khai báo với –url).

Sau khi upload, repository đã sẵn sàng để client thêm vào bằng helm repo add.​

Bước 3: Bạn cập nhật repository khi có phiên bản chart mới

Mỗi khi có chart hoặc version mới, bạn chạy lại helm package để tạo .tgz mới, sau đó chạy:

helm repo index . --url <url-public> --merge index.yaml

Lệnh này cập nhật index.yaml hiện tại, giữ lịch sử các version chart cũ và thêm metadata cho phiên bản mới.

Chia sẻ Helm Chart qua GitHub, GitHub Pages hoặc kho công khai

Bước 1: Bạn lưu mã chart trong repository Git để quản lý phiên bản

Bạn đưa thư mục chart (hoặc nhiều chart) vào một repository Git, sử dụng branch chính để lưu mã nguồn và cấu hình chart, hỗ trợ review, CI/CD và lịch sử thay đổi.​

Bước 2: Bạn publish chart thông qua GitHub Pages hoặc chart-releaser

Một cách phổ biến là tạo repo chuyên dùng cho chart (ví dụ helm-charts), bên trong có thư mục charts/ chứa các file .tgz và sử dụng GitHub Pages làm nơi host repository. Bạn có thể dùng công cụ helm/chart-releaser hoặc GitHub Actions để tự động:

  • Đóng gói chart (cr package).
  • Upload package lên GitHub Releases (cr upload).
  • Sinh và cập nhật index.yaml (cr index).​

Bước 3: Bạn chia sẻ URL repository và hướng dẫn sử dụng cho người khác

Sau khi repository được host, bạn cung cấp URL, ví dụ:

https://<user>.github.io/helm-charts

Người dùng khác có thể chạy:

helm repo add <ten-repo> <url-repo>
helm repo update

Sau đó cài chart bằng:

helm install <ten-release> <ten-repo>/<ten-chart>

Bước 4: Bạn sử dụng Artifact Hub hoặc kho chart công khai (nếu cần)

Đối với chart muốn chia sẻ rộng rãi, bạn có thể đăng ký và khai báo repository trên Artifact Hub để người dùng tìm kiếm và sử dụng, miễn là repository đáp ứng yêu cầu có index.yaml và truy cập HTTP công khai.​

Vietnix – Nền tảng hạ tầng toàn diện cho ứng dụng Kubernetes

Để triển khai và quản lý hiệu quả các ứng dụng Kubernetes bằng Helm Chart, đòi hỏi một hạ tầng với hiệu năng tính toán cao, khả năng lưu trữ linh hoạt và tốc độ xử lý dữ liệu vượt trội. Vietnix mang đến một hệ sinh thái hạ tầng đa dạng, từ Hosting Web, thuê máy chủ ảo VPS hiệu năng cao, S3 Storage linh hoạt cho đến Enterprise Cloud chuyên dụng, tạo nên một nền tảng lý tưởng để bạn xây dựng và vận hành các cụm Kubernetes.

Dù bạn lựa chọn giải pháp nào, Vietnix đều cam kết cung cấp tài nguyên mạnh mẽ với bộ vi xử lý hiệu suất cao, ổ cứng NVMe siêu tốc và băng thông ổn định, đảm bảo bạn có đủ sức mạnh để cài đặt, nâng cấp và rollback các Helm release một cách mượt mà, phản hồi tức thì.

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh

Câu hỏi thường gặp

Helm khác Docker như thế nào?

Helm là trình quản lý gói cho Kubernetes, dùng để định nghĩa, đóng gói và triển khai ứng dụng lên cluster dưới dạng Helm Chart, trong khi Docker là nền tảng tạo và phân phối container image cho từng ứng dụng hoặc dịch vụ. Helm hoạt động trên lớp orchestration (Kubernetes), quản lý nhiều tài nguyên và phiên bản triển khai, còn Docker tập trung vào việc build, chạy và phân phối container image độc lập.

Helm có phải là công cụ CI/CD không?

Helm không phải là công cụ CI/CD mà là công cụ quản lý gói và triển khai ứng dụng trên Kubernetes. Tuy nhiên, Helm thường được tích hợp vào pipeline CI/CD (Jenkins, GitLab CI, GitHub Actions, Argo CD,…) như “bước triển khai” để tự động cài đặt hoặc nâng cấp ứng dụng lên cluster bằng chart và values đã được build ở các bước trước đó.​

Helm có được tích hợp sẵn trong Kubernetes không?

Helm không nằm trong core Kubernetes và không được cài đặt sẵn cùng với control plane hay kubectl. Helm là một dự án độc lập thuộc CNCF, người dùng cần cài Helm CLI riêng rồi cấu hình kubeconfig để tương tác với Kubernetes API Server.

Tại sao nên sử dụng Helm trong Kubernetes?

Helm giúp chuẩn hóa và tự động hóa việc triển khai ứng dụng, cho phép cài đặt, nâng cấp, rollback cả một stack tài nguyên Kubernetes chỉ bằng vài lệnh, thay vì phải quản lý thủ công nhiều file YAML. Ngoài ra, Helm hỗ trợ quản lý cấu hình theo môi trường qua values, quản lý phụ thuộc giữa các dịch vụ và lưu lịch sử release, từ đó giảm độ phức tạp vận hành và rủi ro sai sót khi deploy.

Kubernetes có đang thay thế Docker không?

Kubernetes không thay thế Docker ở vai trò nền tảng build image, mà chỉ ngừng phụ thuộc Docker Engine như một container runtime và chuyển sang dùng containerd, CRI-O hoặc runtime tuân chuẩn CRI. Docker vẫn tiếp tục được dùng rộng rãi để build container image và đẩy lên registry (Docker Hub, ECR, GCR,…), còn Kubernetes chỉ cần chạy được các image theo chuẩn OCI, không yêu cầu Docker trực tiếp trong node runtime.

Helm Chart là một công cụ mạnh mẽ và không thể thiếu để quản lý vòng đời ứng dụng trên Kubernetes, mang lại khả năng đóng gói, triển khai, cập nhật và rollback một cách nhất quán và hiệu quả. Việc hiểu rõ cách tạo, phát triển và chia sẻ Helm Chart sẽ là chìa khóa để làm chủ Kubernetes, tối ưu hóa quy trình DevOps và phát triển các ứng dụng Cloud Native thành công.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

kien-thuc-dich-vu

kien-thuc-kubernetes

text
icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG