Lộ trình
Cloud Native Computing FoundationAssociateTuần 4: Tối ưu & vận hànhBài 26 / 30

Ngày 26: API Deprecation & Custom Resource

Thời lượng: 45 phút
Mục tiêu: 2 nhiệm vụ chính
Tiến độ lộ trình
ckadngày 26
hoàn thành26 / 30 bài
Bối cảnh bài học

Đọc CRD và Custom Resource ở mức thực hành: discovery, schema/validation, namespaced vs cluster scope, status/spec, controller dependency và API deprecation safety.

đọc hiểuthực hànhcheckpoint
Bài giảng hôm nay

Học hiểu, rồi mới thực hành

Đọc CRD và Custom Resource ở mức thực hành: discovery, schema/validation, namespaced vs cluster scope, status/spec, controller dependency và API deprecation safety.

Bắt đầu đọc bài giảng

Nhiệm vụ bài học hôm nay

  • Tìm hiểu khái niệm CRD ở mức cơ bản
  • Đọc qua cách ứng dụng sử dụng CRD trong thực tế
Instructor walkthrough

Bài giảng chi tiết: từ bài toán đến bằng chứng

Scenario xuyên suốt

CRD tạo resource như native API nhưng không tự tạo workload hay reconcile state; người học dễ apply CR rồi kỳ vọng app chạy, hoặc xóa CRD làm mất toàn bộ custom resources. Bài học đặt CRD trong API lifecycle và operator contract.

01Đọc bài toán

Xác định actor, workload, constraint và trạng thái cuối cần đạt.

02Vẽ luồng / boundary

Chỉ ra request, dependency, identity và failure domain trước khi chọn công cụ.

03Chọn và thực hành

Thay đổi nhỏ nhất trong lab cô lập; command nào cũng phải nói rõ nó kiểm tra điều gì.

04Kiểm chứng / recovery

Đối chiếu trạng thái thực tế, tạo một failure variant và ghi cách hoàn tác.

Cách nối lý thuyết với thực tế
  • CRD mở rộng apiserver bằng group/version/kind/plural, scope và schema; Custom Resource là instance được lưu trong API.
  • CRD tồn tại không đồng nghĩa controller/operator đang chạy; spec chỉ có behavior khi reconciler watch và cập nhật status/conditions/resources.
  • OpenAPI schema/pruning/defaulting/additionalProperties, printer columns và conversion/versioning ảnh hưởng validation/client behavior.
  • Custom resource có namespaced hoặc cluster scope; RBAC verbs/resource names/subresources `status`/`finalizers` cần kiểm tra riêng.

CRD là API extension, không phải controller

CRD định nghĩa group/version/kind/plural, scope và schema; CR là instance trong API. Controller/operator mới reconcile spec thành resources/status. Kiểm tra discovery, schema, conditions, RBAC và controller logs; object tồn tại chưa đủ.

Version và data safety

Schema/defaulting/pruning/conversion ảnh hưởng client và state. CRD có subresource/status, finalizer và scope riêng. Trước đổi/xóa CRD: inventory/export instances, biết owner/controller, conversion/rollback và orphan risk. Không xóa CRD shared để cleanup.

Bài tập

Inspect CRD lab, tạo CR valid/invalid, tìm controller/status, mô phỏng schema/scope/RBAC/version failure và verify. Viết uninstall/data recovery plan rồi cleanup chỉ resource lab-owned.

Terminal reference

Command list và cách dùng

Chạy từng lệnh theo đúng thứ tự. Trước các lệnh có thể tạo hoặc thay đổi tài nguyên, hãy kiểm tra profile, account và region.

Commands · read-only checkpoints
kubectl get crd
kubectl describe crd CUSTOMRESOURCENAME
kubectl api-resources --api-group=GROUP
kubectl get customresources -A -o yaml
kubectl explain KIND.spec --api-version=GROUP/VERSION
kubectl get events -A --sort-by=.lastTimestamp
kubectl get pods,sa,role,rolebinding -n ckad-day26
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day26` hoặc dùng CRD lab cô lập; inspect `kubectl get crd -o yaml`, group/version/kind/plural/scope/schema/conditions/shortNames và discovery resources.
  2. Apply một CRD mẫu an toàn hoặc đọc CRD hiện có, tạo Custom Resource hợp lệ/invalid với server dry-run; kiểm tra spec/status, events, labels/owner và watch controller nếu có.
  3. Xác định controller/operator deployment, ServiceAccount/RBAC, logs và reconcile behavior; chứng minh CR tồn tại nhưng không được reconcile khi controller thiếu/không healthy.
  4. Cố ý sai apiVersion/schema/enum/required field/scope hoặc status subresource; debug validation/Forbidden và tạo variant version. Không xóa CRD shared hoặc chạy conversion production.
  5. Export/backup test CRs, cleanup CRs/controller/CRD chỉ khi lab-owned, kiểm tra finalizer/orphan resources và ghi API deprecation/rollback plan.
Evidence checkpoint

Kiểm chứng kết quả

Không coi lệnh chạy thành công là đủ. Hãy đối chiếu output với trạng thái mong đợi:

  • CRD/CR/discovery/schema/scope phân biệt đúng.
  • Controller/status/reconcile dependency có evidence.
  • Validation/RBAC/subresource/version failure được debug.
  • CRD uninstall/data/finalizer risk được ghi.
  • Backup/export và lab-only cleanup an toàn.
Transfer to exam / production

Bẫy thường gặp và trade-off

CKAD CRD task: dùng discovery để biết plural/scope/apiVersion, đọc schema rồi server dry-run CR. CR apply thành công chưa chứng minh operator reconcile hay workload healthy.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Custom Resource tạo thành công nhưng không có status hoặc workload được tạo. Kết luận hợp lý nhất là gì?

Kết thúc bài

Checklist trước khi sang Ngày 2