- Published on
Giới thiệu về dự án kyverno trong kubernetes hệ sinh thái kubernetes
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
Giới thiệu về dự án kyverno trong kubernetes hệ sinh thái kubernetes
📑 Mục Lục
- Giới thiệu Kyverno
- Đặc điểm nổi bật
- Các loại Policy trong Kyverno
- Cách Kyverno hoạt động
- Ứng dụng thực tế
- Tài nguyên tham khảo
🧰 Giới thiệu Kyverno
Kyverno là một công cụ quản lý chính sách (policy engine) được thiết kế riêng cho Kubernetes, giúp người dùng xác định, thực thi và kiểm tra các chính sách quản trị một cách dễ dàng và thân thiện với YAML. Điều này giúp DevOps và Platform Engineer kiểm soát tính nhất quán, bảo mật và tuân thủ mà không cần viết mã bằng các ngôn ngữ phức tạp như Rego của OPA.
Kyverno hoạt động trực tiếp như một Admission Controller – tiếp nhận các yêu cầu tạo/sửa tài nguyên và áp dụng logic theo chính sách đã định nghĩa để từ đó quyết định cho phép, từ chối hoặc sửa đổi yêu cầu đó.
✨ Đặc điểm nổi bật
- ✅ Tích hợp sâu với Kubernetes: Không cần học thêm ngôn ngữ mới, các policy có thể được viết hoàn toàn bằng YAML, giúp giảm rào cản tiếp cận và phù hợp với cách làm việc hiện tại của người dùng Kubernetes.
- 🧾 Chính sách rõ ràng, có thể mở rộng: Có thể định nghĩa rõ ràng các quy tắc như bắt buộc có nhãn (label), giới hạn tài nguyên, yêu cầu image từ registry an toàn,...
- 🔐 Tăng cường bảo mật và tuân thủ chuẩn: Kyverno hỗ trợ xác thực chữ ký image, bắt buộc sử dụng user không phải root, giới hạn quyền truy cập,...
- 🔄 Tự động hóa tài nguyên: Kyverno không chỉ kiểm tra mà còn có khả năng tự tạo hoặc cập nhật tài nguyên đi kèm như ConfigMap, Secret,... phục vụ cho việc tự động hóa triển khai.
- 🔍 Audit, Validate, Mutate: Hỗ trợ cả ba hành động chính cho mỗi policy: kiểm tra (audit), xác thực hợp lệ (validate), và sửa đổi (mutate).
📦 Các loại Policy trong Kyverno
Kyverno hỗ trợ 4 nhóm chính sách, mỗi nhóm giải quyết một khía cạnh quan trọng trong quản lý tài nguyên Kubernetes:
Validation Policy
Kiểm tra các điều kiện và cấu hình của tài nguyên, ví dụ: bắt buộc có labels, hạn chế image registry, giới hạn dung lượng CPU/memory,...Mutation Policy
Tự động sửa đổi hoặc bổ sung thông tin cho tài nguyên, như thêm nhãn mặc định, gán namespace, chỉnh sửa securityContext,...Generation Policy
Tự động tạo hoặc đồng bộ các tài nguyên khác khi một tài nguyên được tạo, ví dụ: tạo ConfigMap đi kèm mỗi khi tạo một Deployment mới.Image Verification Policy
Xác minh chữ ký của container image, tích hợp với các hệ thống như Sigstore, Cosign để đảm bảo nguồn gốc và tính toàn vẹn image trong pipeline CI/CD.
⚙️ Cách Kyverno hoạt động
Kyverno được triển khai như một admission controller dạng webhook trong cụm Kubernetes. Luồng hoạt động cơ bản như sau:
- Người dùng hoặc hệ thống gửi yêu cầu (create/update) tài nguyên đến API Server.
- API Server gọi đến Kyverno để kiểm tra yêu cầu theo các policy đã đăng ký.
- Kyverno sẽ:
- ✅ Chấp nhận nếu yêu cầu hợp lệ.
- ❌ Từ chối nếu vi phạm policy dạng validation.
- 🔄 Sửa đổi nếu có mutation policy tương ứng.
- Sau khi xử lý, kết quả sẽ được trả về API Server để tiến hành lưu tài nguyên vào etcd.
Ngoài ra, Kyverno còn hỗ trợ audit các tài nguyên hiện tại trong cluster để phát hiện những cấu hình không tuân thủ.
🔐 Ứng dụng thực tế
Kyverno đang được sử dụng rộng rãi trong các hệ thống Kubernetes sản xuất nhờ tính đơn giản và mạnh mẽ của nó. Một số tình huống sử dụng phổ biến bao gồm:
Đảm bảo cấu hình chuẩn cho tài nguyên
Ví dụ: mọi Pod đều phải córequests
vàlimits
, hoặc Deployment phải chạy dưới user không phải root.Kiểm soát nguồn container image
Hạn chế triển khai các image đến từ registry không đáng tin cậy. Hỗ trợ xác thực chữ ký image giúp tăng tính bảo mật trong chuỗi cung ứng phần mềm.Tự động thêm metadata cần thiết
Thêm labels nhưteam
,environment
,cost-center
,... giúp phân loại và theo dõi chi phí hoặc trách nhiệm.Tạo tài nguyên liên quan
Tự động sinh các ConfigMap, RoleBinding,... khi triển khai workload mới – giảm công việc thủ công cho DevOps.Kiểm soát cấu hình bảo mật
Kiểm tra và bắt buộc các cấu hình nhưreadOnlyRootFilesystem
,runAsNonRoot
,dropCapabilities
,...
Ví dụ 1 file policy
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-team-label
spec:
validationFailureAction: enforce
rules:
- name: check-for-team-label
match:
resources:
kinds:
- Pod
validate:
message: "Tất cả Pod phải có nhãn 'team'."
pattern:
metadata:
labels:
team: "?*"
📚 Tài nguyên tham khảo
- 🌐 Website chính thức: https://kyverno.io
- 🧑💻 GitHub repository: https://github.com/kyverno/kyverno
- 🧭 CNCF Landscape: Kyverno là dự án Incubating thuộc CNCF
- 📘 Tài liệu: https://kyverno.io/docs
- 🎓 Hướng dẫn mẫu policy: https://kyverno.io/policies
💡 Nếu bạn đang sử dụng Kubernetes ở môi trường production, Kyverno là một công cụ không thể thiếu để bảo vệ, chuẩn hóa và tự động hóa hệ thống của bạn mà không cần code thêm logic phức tạp.