Helm trong 10 ngày

Ngày 1: Giới thiệu Helm và Kubernetes

  • Giới thiệu về Kubernetes: Cấu trúc, thành phần, lợi ích và các khái niệm quan trọng (Pods, Services, Deployments, StatefulSets).

  • Giới thiệu về Helm: Tại sao cần Helm? Helm là gì? Các thành phần của Helm (Charts, Repos, Releases).

  • Cài đặt Helm: Hướng dẫn chi tiết cách cài đặt Helm trên các môi trường khác nhau (macOS, Windows, Linux).

  • Khám phá Helm Chart: Cấu trúc thư mục của Helm Chart, các file quan trọng (Chart.yaml, values.yaml, templates).

  • Tìm hiểu về Repos: Các Helm Repos phổ biến (ArtifactHub, Bitnami), cách thêm và quản lý Repos.

  • Thực hành: Tạo và cài đặt Helm Chart đơn giản đầu tiên.

Bài tập thực hành:

  1. Tạo một Helm Chart đơn giản để triển khai một Pod NGINX.

  2. Tìm và cài đặt một Helm Chart từ ArtifactHub hoặc Bitnami (ví dụ: MySQL, WordPress).

  3. Tạo một Helm Repo cục bộ và thêm Helm Chart của bạn vào đó.

Ngày 2: Làm việc với Helm Charts và Repos

  • Tìm hiểu chuyên sâu về values.yaml: Các kiểu dữ liệu, cấu trúc phân cấp, cách ghi đè giá trị.

  • Cài đặt Helm Chart từ Repos: Tìm kiếm và cài đặt Helm Chart từ các Repos công cộng.

  • Quản lý vòng đời Helm Chart: Nâng cấp, rollback, gỡ bỏ Helm Chart.

  • Tìm hiểu về Helm Hooks: Sử dụng Helm Hooks để thực hiện các tác vụ trước và sau khi cài đặt, nâng cấp, gỡ bỏ.

Bài tập thực hành:

  1. Tùy chỉnh Helm Chart NGINX đã tạo ở ngày 1 bằng cách thay đổi các giá trị trong values.yaml (ví dụ: số lượng replicas, image tag).

  2. Nâng cấp Helm Chart NGINX lên phiên bản mới hơn.

  3. Sử dụng Helm Hook để tạo một ConfigMap trước khi cài đặt Helm Chart NGINX.

Ngày 3: Helm Templates và Templating Nâng cao

  • Giới thiệu về Helm Templating: Tại sao cần templating? Các công cụ templating của Helm (Go template).

  • Thực hành cơ bản với Helm template: Tạo các template đơn giản để sinh ra Kubernetes manifests.

  • Các hàm và toán tử trong Helm template: quote, toYaml, toJson, default, ternary, v.v.

  • Helm template nâng cao:

    • Sử dụng range để lặp qua các giá trị.

    • Sử dụng with để thay đổi phạm vi.

    • Sử dụng definetemplate để tạo các template con.

Bài tập thực hành:

  1. Tạo một Helm template để sinh ra một Deployment với số lượng replicas được lấy từ values.yaml.

  2. Tạo một Helm template để sinh ra một Service với các port được lấy từ values.yaml.

  3. Tạo một Helm template phức tạp để sinh ra một Ingress với các rules được lấy từ values.yaml.

Ngày 4: Quản lý phụ thuộc và cấu trúc Helm Chart phức tạp

  • Quản lý phụ thuộc Helm Chart:

    • Khai báo và quản lý các phụ thuộc trong Chart.yaml.

    • Truyền giá trị giữa các Helm Chart.

    • Quản lý các phiên bản phụ thuộc.

  • Cấu trúc Helm Chart phức tạp:

    • Chia nhỏ Helm Chart thành nhiều subchart.

    • Tạo các thư viện template dùng chung.

    • Sử dụng các conditional template để tùy chỉnh Helm Chart cho các môi trường khác nhau.

Bài tập thực hành:

  1. Tạo một Helm Chart để triển khai WordPress, sử dụng MySQL làm cơ sở dữ liệu (MySQL sẽ là một subchart).

  2. Tạo một thư viện template dùng chung để định nghĩa cấu trúc của một Deployment.

  3. Sử dụng conditional template để tùy chỉnh Helm Chart WordPress cho môi trường production và development.

Ngày 5: Xây dựng Helm Chart tùy chỉnh

  • Quy trình xây dựng Helm Chart:

    • Thiết kế cấu trúc Helm Chart.

    • Viết các template Kubernetes manifests.

    • Kiểm thử và gỡ lỗi Helm Chart.

  • Các công cụ hỗ trợ xây dựng Helm Chart:

    • Helm lint: Kiểm tra chất lượng Helm Chart.

    • Helm template: Xem trước Kubernetes manifests được sinh ra từ Helm Chart.

  • Thực hành: Xây dựng Helm Chart tùy chỉnh cho một ứng dụng cụ thể (ví dụ: NGINX, WordPress, MySQL).

  • Tích hợp Helm Chart với CI/CD pipeline.

Bài tập thực hành:

  1. Xây dựng Helm Chart cho một ứng dụng web đơn giản (ví dụ: ứng dụng Node.js hoặc Python).

  2. Viết các unit test cho Helm Chart của bạn.

  3. Tích hợp Helm Chart của bạn vào một CI/CD pipeline (ví dụ: Jenkins, GitLab CI).

Ngày 6: Helm Plugin

  • Giới thiệu về Helm Plugin: Khái niệm, lợi ích, cách thức hoạt động.

  • Các Helm Plugin phổ biến:

    • Helm diff: So sánh sự khác biệt giữa các phiên bản Helm Chart.

    • Helm secrets: Quản lý bí mật trong Helm Chart.

    • Helm push: Đẩy Helm Chart lên Helm Repo.

  • Xây dựng Helm Plugin tùy chỉnh:

    • Cấu trúc của một Helm Plugin.

    • Cách viết code cho Helm Plugin bằng Go.

    • Cách đóng gói và phân phối Helm Plugin.

Ngày 7: Helm Operator

  • Giới thiệu về Helm Operator: Khái niệm, lợi ích, kiến trúc.

  • Cài đặt và cấu hình Helm Operator:

    • Sử dụng Helm để cài đặt Helm Operator.

    • Tạo Custom Resource Definitions (CRDs) cho Helm Operator.

    • Cấu hình Helm Operator để quản lý Helm Chart.

  • Sử dụng Helm Operator:

    • Tạo HelmRelease CRD để triển khai Helm Chart.

    • Quản lý vòng đời Helm Chart bằng Helm Operator.

    • Tích hợp Helm Operator với các công cụ khác (ví dụ: Prometheus, Grafana).

Ngày 8: Helm Chart Testing

  • Giới thiệu về Helm Chart Testing: Tại sao cần kiểm thử Helm Chart? Các loại kiểm thử Helm Chart.

  • Công cụ kiểm thử Helm Chart:

    • Helm unittest: Viết các unit test cho Helm Chart.

    • Kubetest: Kiểm thử Helm Chart trên Kubernetes cluster.

    • Terratest: Kiểm thử Helm Chart bằng Terraform.

  • Thực hành: Viết và thực thi các bài kiểm tra cho Helm Chart.

Ngày 9: Helm Chart Best Practices

  • Thiết kế cấu trúc Helm Chart:

    • Chia nhỏ Helm Chart thành nhiều subchart.

    • Sử dụng các thư viện template dùng chung.

    • Sử dụng các conditional template để tùy chỉnh Helm Chart cho các môi trường khác nhau.

  • Viết template Helm Chart:

    • Sử dụng các hàm và toán tử Helm template hiệu quả.

    • Tránh các lỗi thường gặp khi viết template Helm Chart.

    • Tối ưu hóa template Helm Chart để tăng hiệu suất.

  • Quản lý phụ thuộc Helm Chart:

    • Sử dụng các phiên bản phụ thuộc cụ thể.

    • Kiểm tra tính tương thích giữa các phụ thuộc.

    • Cập nhật phụ thuộc thường xuyên.

Ngày 10: Helm Chart Security

  • Các vấn đề bảo mật Helm Chart:

    • Lỗ hổng trong template Helm Chart.

    • Lỗ hổng trong các phụ thuộc Helm Chart.

    • Quản lý bí mật không an toàn.

  • Các công cụ và kỹ thuật bảo mật Helm Chart:

    • Snyk: Quét Helm Chart để tìm lỗ hổng bảo mật.

    • Trivy: Quét Helm Chart để tìm lỗ hổng bảo mật và các vấn đề về cấu hình.

    • Helm secrets: Quản lý bí mật trong Helm Chart một cách an toàn.

  • Thực hành: Áp dụng các biện pháp bảo mật cho Helm Chart.