Bỏ qua tới nội dung
vumt.edu.vn

Hướng dẫn chi tiết tạo Helm chart và triển khai ứng dụng Kubernetes

Nắm vững cách tạo Helm chart, tự động hóa triển khai ứng dụng Kubernetes với hướng dẫn từng bước chi tiết, dễ hiểu và tối ưu cho năm 2026

7 phút đọc
Hướng dẫn chi tiết tạo Helm chart và triển khai ứng dụng Kubernetes
Mục lục

Trong kỷ nguyên của điện toán đám mây, việc quản lý và triển khai ứng dụng trên các nền tảng phức tạp như Kubernetes trở nên tối quan trọng. Helm, với vai trò là một trình quản lý gói cho Kubernetes, mang đến giải pháp hiệu quả để tự động hóa quy trình này. Bài viết này sẽ cung cấp một hướng dẫn chi tiết về cách tạo và sử dụng Helm chart để triển khai ứng dụng, giúp bạn tối ưu hóa quy trình làm việc và tiết kiệm thời gian đáng kể.

Các bước chính để tạo và triển khai Helm chart: 1. Cài đặt Helm và khởi động cluster Kubernetes (Minikube). 2. Tạo một Helm chart mới với cấu trúc cơ bản. 3. Tùy chỉnh file cấu hình values.yaml để định nghĩa các tham số ứng dụng. 4. Xem trước các tài nguyên Kubernetes sẽ được tạo ra. 5. Triển khai ứng dụng sử dụng Helm chart đã tạo.

Tổng quan về Helm và tầm quan trọng của Helm chart

Helm là một công cụ mã nguồn mở, được ví như "apt" hay "yum" cho Kubernetes. Nó giúp đóng gói, quản lý và triển khai các ứng dụng Kubernetes một cách có hệ thống thông qua các đơn vị gọi là "Chart". Một Helm chart là một bộ sưu tập các file cấu hình YAML được đóng gói, mô tả một tập hợp các tài nguyên Kubernetes cần thiết để chạy một ứng dụng hoặc dịch vụ.

Việc sử dụng Helm chart mang lại nhiều lợi ích vượt trội:

  • Tự động hóa: Giảm thiểu công sức viết và quản lý hàng loạt file YAML phức tạp.
  • Khả năng tái sử dụng: Dễ dàng chia sẻ và triển khai lại các ứng dụng trên nhiều môi trường khác nhau.
  • Quản lý phiên bản: Theo dõi và quay lại các phiên bản ứng dụng trước đó một cách dễ dàng.
  • Tùy chỉnh linh hoạt: Cho phép người dùng ghi đè các tham số cấu hình mặc định để phù hợp với nhu cầu cụ thể.

Chuẩn bị môi trường: Cài đặt Helm và Minikube

Trước khi bắt đầu hành trình tạo Helm chart, bạn cần đảm bảo môi trường phát triển của mình đã sẵn sàng. Điều này bao gồm việc cài đặt Helm và một cluster Kubernetes cục bộ như Minikube.

Cài đặt Helm

Để cài đặt Helm phiên bản 3, bạn có thể sử dụng script được cung cấp chính thức. Mở terminal và thực thi lệnh sau:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Sau khi cài đặt hoàn tất, bạn có thể kiểm tra phiên bản Helm bằng lệnh:

helm version

Kết quả mong đợi sẽ hiển thị thông tin phiên bản Helm, ví dụ: version.BuildInfo{Version:"v3.15.0", GitCommit:"abc123", GitTreeState:"clean", GoVersion:"go1.22.1"}.

Khởi động Minikube

Minikube là công cụ hữu ích để chạy một cluster Kubernetes một node trên máy tính cá nhân của bạn. Nếu chưa cài đặt, bạn có thể tham khảo các hướng dẫn cài đặt Minikube cho hệ điều hành của mình. Sau khi cài đặt, khởi động Minikube bằng trình điều khiển Docker:

minikube start --driver=docker

Terminal sẽ hiển thị thông báo xác nhận cluster đã được khởi động và kubectl đã được cấu hình để sử dụng cluster Minikube.

Minikube dashboard
Giao diện Minikube sau khi khởi động thành công, sẵn sàng cho việc triển khai.

Tạo Helm chart cho ứng dụng Nginx

Bây giờ, chúng ta sẽ tiến hành tạo một Helm chart đơn giản để triển khai ứng dụng web Nginx. Đây là bước quan trọng để làm quen với cấu trúc và các thành phần của một chart.

Bước 1: Tạo một Helm chart mới

Sử dụng lệnh helm create để tạo một thư mục chứa cấu trúc cơ bản của một chart mới. Chúng ta sẽ đặt tên cho chart là my-nginx-chart:

helm create my-nginx-chart

Sau khi chạy lệnh này, một thư mục my-nginx-chart sẽ được tạo ra với các thành phần sau:

  • Chart.yaml: File mô tả thông tin về chart (tên, phiên bản, mô tả...).
  • charts/: Thư mục chứa các dependency chart.
  • templates/: Nơi chứa các file template YAML dùng để sinh ra các tài nguyên Kubernetes.
  • values.yaml: File chứa các giá trị mặc định cho các tham số của chart.

Bước 2: Tùy chỉnh cấu hình ứng dụng

Mở file my-nginx-chart/values.yaml bằng trình soạn thảo văn bản. Trong file này, chúng ta có thể định nghĩa các tham số cho ứng dụng. Ví dụ, để thay đổi số lượng bản sao (replicas) của Pod, bạn tìm đến mục replicas và sửa giá trị:

replicas: 2

Ngoài ra, bạn có thể tùy chỉnh nhiều tham số khác như image của container, cổng, hoặc các biến môi trường. Việc này giúp chart trở nên linh hoạt hơn.

Bước 3: Xem trước các tài nguyên Kubernetes

Trước khi triển khai thực tế, Helm cho phép bạn xem trước các file YAML Kubernetes sẽ được tạo ra dựa trên chart và các giá trị cấu hình hiện tại. Sử dụng lệnh helm template:

helm template my-nginx-chart

Lệnh này sẽ xuất ra các định nghĩa tài nguyên như Deployment và Service. Bạn có thể kiểm tra kỹ các thông số này để đảm bảo chúng đúng với mong đợi.

Xem trước Helm template
Xem trước cấu trúc Kubernetes YAML được sinh ra từ Helm chart.

Triển khai ứng dụng Nginx bằng Helm

Sau khi đã tạo và cấu hình Helm chart, bước tiếp theo là triển khai ứng dụng lên cluster Kubernetes.

Bước 1: Cài đặt Helm chart

Sử dụng lệnh helm install để cài đặt chart. Bạn cần cung cấp một tên cho bản phát hành (release name) và đường dẫn đến thư mục chart:

helm install my-nginx-release ./my-nginx-chart

Sau khi lệnh thực thi, Helm sẽ tạo các tài nguyên Kubernetes được định nghĩa trong chart và trả về trạng thái bản phát hành.

Bước 2: Kiểm tra các tài nguyên đã triển khai

Để xác nhận ứng dụng đã được triển khai thành công, bạn có thể sử dụng các lệnh kubectl:

Kiểm tra Deployment:

kubectl get deployments

Kết quả sẽ hiển thị trạng thái của Deployment, ví dụ: my-nginx-chart 2/2 2 2 10s, cho thấy 2 bản sao Pod đang chạy.

Kiểm tra Service:

kubectl get services

Bạn sẽ thấy Service được tạo cho ứng dụng Nginx, ví dụ: my-nginx-chart ClusterIP 10.96.123.456 <none> 80/TCP 10s.

Bước 3: Truy cập ứng dụng

Để truy cập ứng dụng Nginx đang chạy trong cluster Minikube, bạn có thể sử dụng lệnh kubectl port-forward:

kubectl port-forward svc/my-nginx-chart 8080:80

Sau đó, mở trình duyệt web và truy cập vào địa chỉ http://localhost:8080. Bạn sẽ thấy trang chào mừng mặc định của Nginx.

Các tùy chỉnh nâng cao cho Helm chart

Ngoài việc tùy chỉnh số lượng replicas, Helm chart còn cho phép bạn thực hiện nhiều cấu hình phức tạp hơn để đáp ứng yêu cầu đa dạng của ứng dụng.

Image Pull Policy

Giá trị imagePullPolicy trong file values.yaml quyết định cách Kubernetes tải về các image Docker. Các tùy chọn phổ biến bao gồm:

  • IfNotPresent: Chỉ tải image nếu nó chưa tồn tại trên node.
  • Always: Luôn luôn tải image mới mỗi khi triển khai hoặc khởi động lại.
  • Never: Không bao giờ tải image, sử dụng image đã có sẵn trên node.

Bạn có thể thay đổi giá trị này để đảm bảo sử dụng đúng phiên bản image mong muốn.

Ghi đè tên Helm Chart

Trong một số trường hợp, bạn có thể muốn ghi đè tên của chart hoặc các thành phần được tạo ra. Điều này có thể được thực hiện bằng cách thêm các thuộc tính nameOverride và fullnameOverride vào file values.yaml. Ví dụ:

nameOverride: "my-app" fullnameOverride: "my-app-release"

Việc này giúp đảm bảo tính nhất quán về tên gọi trong toàn bộ cấu trúc tài nguyên.

Chỉ định tên cho Service Account

Helm tự động tạo một Service Account cho các tài nguyên của nó. Tuy nhiên, bạn có thể tùy chỉnh tên của Service Account này thông qua file values.yaml để phù hợp với các quy tắc đặt tên hoặc yêu cầu bảo mật của tổ chức.

Service account Kubernetes
Service Account đóng vai trò quan trọng trong việc quản lý quyền truy cập của ứng dụng.

Kết luận và lời khuyên

Việc nắm vững cách tạo và sử dụng Helm chart là một kỹ năng không thể thiếu đối với các kỹ sư DevOps và những người làm việc với Kubernetes. Helm không chỉ đơn giản hóa việc triển khai ứng dụng mà còn mang lại sự linh hoạt, khả năng tái sử dụng và quản lý hiệu quả.

Để tối ưu hóa quy trình của bạn, hãy bắt đầu với những chart đơn giản, thực hành thường xuyên và dần dần khám phá các tính năng nâng cao mà Helm cung cấp. Đừng ngần ngại thử nghiệm với các tham số khác nhau trong file values.yaml để hiểu rõ hơn về cách chart tương tác với cluster Kubernetes. Với hướng dẫn sử dụng helm chi tiết này, bạn đã có thể tự tin xây dựng và quản lý các ứng dụng của mình trên nền tảng Kubernetes một cách chuyên nghiệp.

Bình luận

Để lại bình luận

Email của bạn sẽ không được công khai.