Bài 6: Kubernetes Helm – Tự Động Triển Khai Ứng Dụng Dễ Dàng

Helm Là Gì?

Kubernetes Helm là một công cụ quản lý gói (package manager) cho Kubernetes, giúp tự động hóa việc triển khai và quản lý ứng dụng. Helm sử dụng “Chart” – một tập hợp các file YAML được đóng gói – để định nghĩa tài nguyên Kubernetes. Trong bài 5, bạn đã triển khai cluster EKS trên AWS. Bài này sẽ hướng dẫn bạn dùng Helm trên Minikube để triển khai ứng dụng Nginx một cách dễ dàng, thay vì viết nhiều file YAML như trước.

Bước 1: Cài Đặt Helm Và Khởi Động Minikube

  • Hành động:
    1. Cài đặt Helm:
      curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
    2. Kiểm tra phiên bản Helm:
      helm version
    3. Khởi động cluster Minikube:
      minikube start --driver=docker
  • Kết quả thực tế:
    • Sau khi cài Helm, lệnh helm version hiển thị:
      version.BuildInfo{Version:"v3.15.0", GitCommit:"abc123", GitTreeState:"clean", GoVersion:"go1.22.1"}
    • Sau khi chạy minikube start, terminal hiển thị:
          minikube v1.33.1 on Ubuntu 22.04
          Using the docker driver
          Starting control plane node in cluster minikube
          Done! kubectl is now configured to use "minikube" cluster

Bước 2: Tạo Helm Chart Đơn Giản

  • Hành động:
    1. Tạo Helm Chart:
      helm create my-nginx-chart
    2. Kiểm tra cấu trúc Chart:
      ls my-nginx-chart
    3. Chỉnh sửa file my-nginx-chart/values.yaml để giảm replicas:
      replicas: 2
    4. Xem trước tài nguyên sẽ được tạo:
      helm template my-nginx-chart
  • Kết quả thực tế:
    • Sau khi chạy helm create, thư mục my-nginx-chart được tạo:
      Chart.yaml  charts  templates  values.yaml
    • File values.yaml đã được chỉnh sửa với replicas: 2.
    • Lệnh helm template hiển thị (rút gọn):
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: my-nginx-chart
      spec:
      replicas: 2
      selector:
      matchLabels:
        app.kubernetes.io/name: my-nginx-chart
      template:
      spec:
        containers:
        - name: my-nginx-chart
          image: nginx:1.16.0
          ports:
          - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
      name: my-nginx-chart
      spec:
      ports:
      - port: 80
      selector:
      app.kubernetes.io/name: my-nginx-chart

Bước 3: Triển Khai Ứng Dụng Với Helm

  • Hành động:
    1. Triển khai Chart:
      helm install my-nginx-release my-nginx-chart
    2. Kiểm tra tài nguyên:
      kubectl get deployments
      kubectl get services
    3. Truy cập ứng dụng qua port-forward:
      kubectl port-forward svc/my-nginx-chart 8080:80
    4. Mở trình duyệt và truy cập http://localhost:8080.
  • Kết quả thực tế:
    • Sau khi chạy helm install, terminal hiển thị:
      NAME: my-nginx-release
      STATUS: deployed
    • Lệnh kubectl get deployments hiển thị:
      NAME              READY   UP-TO-DATE   AVAILABLE   AGE
      my-nginx-chart    2/2     2            2           10s
    • Lệnh kubectl get services hiển thị:
      NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
      kubernetes        ClusterIP   10.96.0.1       <none>        443/TCP   2m
      my-nginx-chart    ClusterIP   10.96.123.456   <none>        80/TCP    10s
    • Truy cập http://localhost:8080, bạn thấy:
      Welcome to nginx!

Bước 4: Xóa Tài Nguyên Để Dọn Dẹp

  • Hành động:
    1. Xóa Helm release:
      helm uninstall my-nginx-release
    2. Dừng và xóa cluster Minikube:
      minikube stop
      minikube delete
  • Kết quả thực tế:
    • Sau khi chạy helm uninstall, terminal hiển thị:
      release "my-nginx-release" uninstalled
    • Sau khi chạy minikube delete, terminal hiển thị:
          Deleting "minikube" in docker ...
          Deleted minikube cluster

Lưu Ý Quan Trọng

  • Helm Chart tùy chỉnh: Bạn có thể chỉnh sửa templates/ trong Chart để thêm tài nguyên như ConfigMap, Secret.
  • Helm repository: Dùng helm repo add để cài ứng dụng từ repository công cộng (VD: Bitnami).
  • Tài liệu tham khảo: Xem thêm về Helm (Helm Documentation).
Điều hướng chuỗi bài viết<< Bài 5: Kubernetes EKS AWS – Triển Khai Cluster Trên AWS
>> Bài 7: Kubernetes CI/CD – Tự Động Triển Khai Với GitHub Actions
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Có thể bạn quan tâm