Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

Kustomize là gì? Sự khác biệt giữa Helm và Kustomize

Hưng Nguyễn

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

Ngày đăng:20/04/2026
Lượt xem

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

Đánh giá

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

Kustomize là công cụ hỗ trợ quản lý và tùy biến cấu hình Kubernetes một cách có tổ chức, giúp tách bạch phần cấu hình chung và phần cấu hình riêng theo từng môi trường mà không làm rối manifest gốc. Nếu bạn muốn đào sâu hơn về khái niệm, cách hoạt động và ứng dụng thực tế, hãy tiếp tục khám phá bài viết kustomize là gì để nắm trọn bức tranh từ cơ bản đến nâng cao.​

Những điểm chính

  • Khái niệm: Hiểu rõ Kustomize là công cụ quản lý cấu hình Kubernetes native, giúp tùy biến các tệp YAML mà không cần chỉnh sửa file gốc, từ đó dễ dàng quản lý các môi trường khác nhau.
  • Các khái niệm chính: Nắm được các khái niệm cốt lõi như Base, Overlay và Patches, giúp bạn tổ chức cấu hình một cách logic để tách biệt phần chung và phần riêng cho từng môi trường.
  • Cách thức hoạt động: Biết được cơ chế hoạt động dựa trên cấu trúc thư mục base/overlays và tệp kustomization.yaml, giúp bạn áp dụng đúng lệnh để triển khai cấu hình cho từng môi trường.
  • Lợi ích: Nắm được các ưu điểm như làm việc với YAML thuần túy, tái sử dụng cấu hình và tích hợp native, giúp đánh giá và lựa chọn Kustomize để đơn giản hóa việc quản lý manifest.
  • Hướng dẫn sử dụng: Nắm vững các bước thực hành từ cài đặt, tạo file kustomization.yaml đến sử dụng overlays và patches, giúp bạn áp dụng vào thực tế để quản lý cấu hình Kubernetes một cách hiệu quả.
  • So sánh với Helm: Phân biệt rõ sự khác biệt giữa Kustomize và Helm, giúp đưa ra lựa chọn công cụ phù hợp nhất cho nhu cầu quản lý và triển khai ứng dụng trên Kubernetes.
  • Câu hỏi thường gặp: Được giải đáp các thắc mắc phổ biến về Kustomize, giúp làm rõ các vấn đề kỹ thuật và củng cố kiến thức.
những điểm chính

Kustomize là gì?

Kustomize là công cụ quản lý cấu hình Kubernetes native cho phép tùy biến các tệp YAML mà không cần chỉnh sửa file gốc, giúp giữ cấu hình cơ sở dữ liệu và có tính tái sử dụng cao cho nhiều môi trường khác nhau như dev, staging, prod.​ Công cụ này hoạt động dựa trên cách tiếp cận khai báo, hỗ trợ tách biệt cấu hình chung và cấu hình riêng theo môi trường, từ đó giảm trùng lặp và đơn giản hóa quá trình quản lý cấu hình Kubernetes.​

Kustomize là công cụ native của Kubernetes cho phép tùy biến YAML mà không sửa file gốc, giúp tái sử dụng cấu hình cho nhiều môi trường
Kustomize là công cụ native của Kubernetes cho phép tùy biến YAML mà không sửa file gốc, giúp tái sử dụng cấu hình cho nhiều môi trường

Việc quản lý cấu hình hiệu quả với Kustomize sẽ trở nên hoàn hảo hơn khi được triển khai trên một nền tảng hạ tầng vững chắc. Để đáp ứng nhu cầu này, dịch vụ Enterprise Cloud của Vietnix cung cấp môi trường đám mây mạnh mẽ, ổn định và bảo mật, giúp bạn yên tâm vận hành các ứng dụng Kubernetes ở quy mô lớn.

Một số khái niệm khác cần nắm khi sử dụng Kustomize

Khi làm việc với Kustomize, bạn cần nắm một số khái niệm cơ bản để tổ chức và tùy biến cấu hình một cách rõ ràng, tránh trùng lặp giữa các môi trường:

  • Base (Cơ sở): Thư mục chứa các tệp YAML dùng chung, ít hoặc không thay đổi, được áp dụng cho tất cả môi trường triển khai.
  • Overlay (Lớp phủ): Thư mục chứa các tệp tùy chỉnh như kustomization.yaml, định nghĩa những khác biệt về replicas, image, namespace,… cho từng môi trường cụ thể trên nền Base.
  • kustomization.yaml: Tệp cấu hình trung tâm, nơi khai báo Base, các Overlay liên quan và các tùy chỉnh bổ sung như tạo thêm ConfigMap, Secret.
  • Patches: Các bản vá mô tả thay đổi chi tiết, ví dụ chỉnh replicas từ 1 lên 5 cho môi trường production, được áp dụng trực tiếp lên cấu hình gốc trong Base.
Một số khái niệm khác cần nắm khi sử dụng Kustomize
Một số khái niệm khác cần nắm khi sử dụng Kustomize

Cách thức hoạt động của Kustomize

Cách thức hoạt động của Kustomize dựa trên việc tổ chức cấu trúc thư mục rõ ràng, sử dụng tệp kustomization.yaml để khai báo tài nguyên và áp dụng các tùy chỉnh, sau đó build và apply cấu hình cho từng môi trường thông qua các lệnh chuyên biệt:

  • Trong thư mục chứa các tệp YAML tài nguyên như deployment, service, configMap,… người dùng tạo tệp kustomization.yaml để khai báo danh sách resource và các thiết lập chung, ví dụ thêm commonLabels cho toàn bộ tài nguyên.​
  • Khi triển khai, có thể chạy lệnh kubectl apply -k trỏ đến thư mục ứng dụng để áp dụng toàn bộ cấu hình đã được Kustomize xử lý.​
  • Để hỗ trợ nhiều môi trường, cấu trúc dự án được tách thành thư mục base chứa cấu hình chung và thư mục overlays với từng nhánh con như development, production, mỗi nhánh có kustomization.yaml và các patch (ví dụ cpu_count.yaml, replica_count.yaml) chỉ mô tả phần khác biệt.​
  • Khi cần apply cấu hình cho một môi trường cụ thể, sử dụng lệnh kustomize build trỏ đến overlay tương ứng rồi pipe sang kubectl apply -f -, từ đó sinh cấu hình cuối cùng dựa trên base và các patch của môi trường đó.​

Lợi ích khi sử dụng Kustomize

Khi áp dụng Kustomize vào quy trình triển khai, người dùng có thể tận dụng nhiều lợi ích xoay quanh khả năng tái sử dụng, tính khai báo và sự tương thích sâu với hệ sinh thái Kubernetes:

  • Làm việc trực tiếp với YAML: Sử dụng YAML thuần túy, nội dung cấu hình rõ ràng, dễ đọc, dễ kiểm tra và không cần phụ thuộc vào hệ thống template phức tạp.
  • Tối ưu tái sử dụng cấu hình: Một bộ cấu hình cơ sở có thể áp dụng cho nhiều môi trường khác nhau chỉ bằng cách gắn thêm các lớp Overlay tương ứng, giúp hạn chế trùng lặp file.
  • Quản lý cấu hình khai báo: Hỗ trợ mô hình khai báo, không cần tạo nhiều bản sao YAML cho từng môi trường, mà chỉ bổ sung hoặc chỉnh sửa thông qua các lớp phủ và patches.
  • Tích hợp Kubernetes native: Được tích hợp chặt chẽ trong hệ sinh thái Kubernetes và được hỗ trợ trực tiếp bởi kubectl, giúp thao tác quản lý và triển khai cấu hình trở nên nhất quán và thuận tiện hơn.
Lợi ích khi sử dụng Kustomize
Lợi ích khi sử dụng Kustomize

Cài đặt Kustomize

Để cài đặt Kustomize trên môi trường Linux, bạn thực hiện tải script cài đặt và di chuyển binary vào thư mục hệ thống:

curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
mv kustomize /usr/local/bin/

Bạn có thể cấu hình bash-completion cho Kustomize bằng cách cài gói bash-completion, tạo file completion và đăng nhập lại phiên SSH:

yum install bash-completion
kustomize completion bash > /etc/bash_completion.d/kustomize

Tạo kustomization.yaml cơ bản

Bạn bắt đầu bằng việc tạo cấu trúc thư mục và khởi tạo file kustomization.yaml mặc định:

mkdir -p 01.resouce/base
cd 01.resouce/base
kustomize init

Sau khi init, nội dung file kustomization.yaml ban đầu sẽ ở dạng tối giản, chỉ khai báo apiVersion và kind:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

Khai báo resources và build thử

Tiếp theo, bạn cần bổ sung các file YAML Kubernetes (Deployment, Service) và khai báo trong kustomization.yaml:

cd 01.resouce/base
kubectl create deployment nginx-api --image=nginx:alpine --replicas=3 --dry-run=client -o yaml > api-depl.yaml

Sau đó, bạn có thể sửa file kustomization.yaml để load các resource:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - api-depl.yaml
  - api-service.yaml

Tiếp theo, bạn dùng lệnh build để sinh YAML cuối và có thể apply trực tiếp lên cluster:

kustomize build .
kustomize build . | kubectl apply -f -

Sử dụng transformer common

Transformer trong Kustomize cho phép chỉnh sửa đồng loạt các thuộc tính như namespace, image, labels, annotations hoặc thêm tiền tố/hậu tố tên.​ Ví dụ một kustomization.yaml áp dụng nhiều transformer cùng lúc:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - api-depl.yaml
  - api-service.yaml

namespace: tuanda

images:
  - name: httpd
    newName: nginx
    newTag: 1.21.0

namePrefix: LAB-
nameSuffix: -dev

commonAnnotations:
  branch: master

commonLabels:
  someName: someValue
  owner: tuanda
  app: bingo

Khi chạy kustomize build ., toàn bộ tài nguyên sẽ được gắn namespace, đổi image, thêm prefix/suffix tên, annotations và labels theo cấu hình trên.​

Tổ chức overlays theo môi trường

Để tách cấu hình theo môi trường prod, stag, dev, cần xây dựng cây thư mục với base dùng chung và overlays riêng cho từng môi trường.​ Ví dụ cấu trúc overlays:

mkdir -p 03.overlays/overlays/prod
mkdir -p 03.overlays/overlays/stag
mkdir -p 03.overlays/overlays/dev

Trong mỗi thư mục overlays, bạn cần tạo kustomization.yaml trỏ về base và khai báo thêm config-map riêng:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

nameSuffix: -prod

bases:
  - ../../base
  
resources:
  - config-map.yaml

Mỗi môi trường tạo file config-map.yaml với dữ liệu khác nhau, sau đó chạy kiểm tra bằng:

kustomize build .

Áp dụng patches (replace, add, delete)

Patches trong Kustomize hỗ trợ chỉnh sửa YAML theo ba thao tác chính: replace, add, delete, với hai cơ chế Json6902 hoặc strategic merge. Ví dụ Json6902 patch tăng replicas lên 10 cho môi trường prod:

patches:
  - target:
      kind: Deployment
      name: nginx-api
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 10

Với môi trường dev, có thể vừa sửa replicas vừa thay image container:

patches:
  - target:
      kind: Deployment
      name: nginx-api
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 8

  - target:
      kind: Deployment
      name: nginx-api        
    patch: |-
      - op: replace
        path: /spec/template/spec/containers/0
        value:
          name: newnametest
          image: httpd:alpine

Dùng component để tái sử dụng thành phần

Component được dùng để tái sử dụng các nhóm tài nguyên lặp lại giữa nhiều môi trường, ví dụ external DB hoặc cache. Trong kustomization.yaml của môi trường prod, có thể khai báo thêm components:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
  - ../../base

components:
  - ../../components/external_db
  - ../../components/cache

Một component external_db có dạng:

apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component

resources: 
  - external_db_cfg.yaml
  - external_db_depl.yaml

Khi chạy kustomize build cho từng môi trường, các component tương ứng sẽ được ghép vào cấu hình cuối, giúp bật/tắt DB hoặc cache linh hoạt tùy nhu cầu môi trường.

So sánh Helm và Kustomize

Tiêu chíKustomizeHelm
Loại công cụCông cụ overlay/patch cấu hình cho manifest Kubernetes có sẵn.Trình quản lý gói và engine templating cho ứng dụng Kubernetes.
Cách tiếp cậnÁp dụng các lớp phủ (overlays) và patches lên YAML gốc để tạo bản cấu hình cho từng môi trường.Dùng template YAML kèm values, render thành manifest hoàn chỉnh rồi deploy.
Mức độ tích hợp KubernetesTích hợp native, có thể dùng trực tiếp qua kubectl apply -k hoặc kubectl kustomize.Không đi kèm Kubernetes mặc định, bạn cần cài thêm binary/CLI Helm.
Kiểu thao tácThiên về mô hình khai báo, phù hợp GitOps và quản lý YAML theo lớp.Thiên về thao tác kiểu package install/upgrade, quản lý vòng đời release.
Đóng gói và phân phốiKhông đóng gói thành package riêng; tái sử dụng qua base và overlays trong repo Git.Đóng gói ứng dụng thành chart có version, có thể push/pull từ chart registry OCI.
Quản lý phiên bản và rollbackKhông có cơ chế release/rollback tích hợp, dựa vào Git và lịch sử cấu hình.Theo dõi release, hỗ trợ rollback, versioning chart theo chuẩn SemVer.
Độ phức tạp và học tậpCấu trúc và cú pháp tương đối đơn giản, tập trung vào YAML và patch.Phức tạp hơn do có templating language, dependency, chart registry, lệnh quản lý. ​
Tái sử dụng và hệ sinh tháiTái sử dụng tốt YAML gốc và overlays giữa nhiều môi trường.Hệ sinh thái chart phong phú, nhiều ứng dụng phổ biến có sẵn chart cộng đồng.
Phù hợp cho kịch bản nàoTùy biến YAML sẵn có, tách cấu hình per-env, workflow GitOps ít tham số động.Cài đặt/nâng cấp ứng dụng như gói versioned, chia sẻ và triển khai nhanh nhiều môi trường.
Mức độ bảo mật và kiến trúcKhông thêm thành phần server riêng, mô hình bảo mật bám sát kubectl.Đã bỏ Tiller từ Helm v3, mọi thao tác client-side nhưng vẫn là lớp công cụ bổ sung cần quản lý.
Kết hợp cùng nhauCó thể dùng để vá thêm, chỉnh sửa manifest sau khi sinh ra từ Helm chart.Có thể dùng helm template hoặc helm install rồi để Kustomize post-render, thường được orchestration bởi Argo CD/Flux.

Theo quan điểm cá nhân của mình, Kustomize là lựa chọn lý tưởng khi bạn muốn kiểm soát trực tiếp và giữ cho cấu hình YAML luôn minh bạch, đặc biệt cho các ứng dụng nội bộ và quy trình GitOps. Ngược lại, Helm là công cụ không thể thiếu để triển khai và quản lý các ứng dụng phức tạp của bên thứ ba như một gói phần mềm hoàn chỉnh. Cách tiếp cận hiệu quả nhất thường là kết hợp cả hai: dùng Helm để cài đặt nền tảng và Kustomize để tinh chỉnh các chi tiết cho từng môi trường.

Enterprise Cloud Vietnix – Nền tảng Cloud Server thế hệ mới cho doanh nghiệp

Enterprise Cloud của Vietnix là nền tảng Cloud Server thế hệ mới, cung cấp cụm tài nguyên CPU, RAM, NVMe riêng biệt giúp doanh nghiệp toàn quyền tạo và quản lý nhiều VPS trên cùng một hạ tầng. Giải pháp này tối ưu cho hệ thống yêu cầu hiệu năng cao, khả năng mở rộng linh hoạt, tự động hóa qua API/Terraform và vận hành an toàn với snapshot, backup, xác thực SSH cùng đội ngũ kỹ thuật Vietnix hỗ trợ 24/7.

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

Kustomize là gì trong Kubernetes?

Kustomize là công cụ dùng để chỉnh sửa và tổ chức lại các manifest Kubernetes trên nền YAML sẵn có, giúp tạo nhiều phiên bản cấu hình khác nhau từ một bộ file gốc.

Kustomize khác gì so với việc copy nhiều file YAML cho từng môi trường?

Thay vì nhân bản cùng một deployment/service cho dev, stag, prod, Kustomize cho phép tách phần chung và phần riêng theo môi trường, giảm số lượng file phải quản lý và chỉnh sửa.

Kustomize phù hợp với những ai?

Kustomize phù hợp với team đã quen làm việc trực tiếp với YAML, muốn giữ manifest rõ ràng, dễ diff trong Git và cần tách cấu hình theo môi trường mà không phụ thuộc vào template engine.

Qua toàn bộ nội dung trên, bạn có thể thấy việc hiểu rõ kustomize là gì không chỉ giúp tối ưu quá trình quản lý YAML mà còn nâng cao tính linh hoạt khi triển khai ứng dụng trên Kubernetes. Kết hợp cấu trúc base/overlays, transformer, patches và component, Kustomize mang lại một cách tiếp cận gọn, rõ ràng và dễ mở rộng cho mọi môi trường từ dev đến production.

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