Blog
Thoughts on engineering, design, and building great products.
API Aggregation: Gắn API Server Thứ Hai
CRD thêm kiểu mới do chính API server chính lưu trong etcd. API aggregation đi xa hơn: gắn hẳn một API server thứ hai vào sau API server chính, phục vụ một nhóm API mà nó tự lưu, tự tính, theo cách riêng. Cụm ta đã chạy một ví dụ từ Bài 39 — metrics-server. Bài này soi nó như một API aggregated: APIService đăng ký, request được proxy tới đâu, và vì sao số liệu CPU/memory trả về mà không hề nằm trong etcd.
Admission Webhook: Chen Vào Đường Ghi
Bài 54 dùng admission có sẵn (Pod Security). Bài này tự viết một admission của riêng mình: một dịch vụ HTTPS mà API server gọi tới trước khi lưu mỗi object, trả về cho hay không cho. Ta dựng một validating webhook thật bằng Python — tự ký cert cho service, để API server tin qua caBundle, và bắt mọi pod phải có label team. Pod thiếu label bị API server từ chối ngay; pod ở namespace ngoài phạm vi thì không bị đụng.
CustomResourceDefinition: Thêm Kiểu Của Riêng Bạn
Part XII chuyển từ dùng Kubernetes sang mở rộng nó. Bài đầu là CustomResourceDefinition — khai một kiểu object mới, và API server lập tức phục vụ nó như resource gốc: kubectl get được, validate theo schema, lưu trong etcd. Ta dựng một CRD Widget có ràng buộc kiểu và miền giá trị, tạo custom resource hợp lệ, xem hai cái sai bị từ chối, rồi cập nhật status qua subresource riêng.
Quản lý object, nhãn khuyến nghị và storage version
Cùng một Deployment, ta có ba cách tạo và sửa — gõ lệnh trực tiếp, create -f một file, hay apply cả thư mục — và trộn lẫn chúng là rước lỗi. Bài này khép Part V bằng ba kỹ thuật quản lý object đó (kèm vì sao apply khác create -f), bộ nhãn khuyến nghị app.kubernetes.io/* để công cụ hiểu nhau, và storage version — đào tận etcd xem một object thực sự được lưu ở phiên bản API nào.
Finalizer, ownerReferences và garbage collection
Mỗi lần xóa Deployment ở các bài trước, pod và ReplicaSet biến mất theo — ta gọi đó là garbage collection mà chưa mổ xẻ. Bài này đào cơ chế: ownerReferences nối object cha-con, garbage collector tự dọn con khi cha mất (nền, foreground, hay để mồ côi), và finalizer chặn xóa tới khi việc dọn dẹp xong. Test thật cả ba — kể cả một object kẹt ở Terminating vì finalizer.