Lộ trình
Cloud Native Computing FoundationAssociateTuần 2: Đào sâu dịch vụ cốt lõiBài 12 / 30

Ngày 12: Kustomize cơ bản

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

Quản lý biến thể Kubernetes bằng Kustomize: base/overlay, namespace/namePrefix, labels, images và patches; build/diff trước apply để tránh drift giữa môi trường.

đọ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

Quản lý biến thể Kubernetes bằng Kustomize: base/overlay, namespace/namePrefix, labels, images và patches; build/diff trước apply để tránh drift giữa môi trường.

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

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

  • Tìm hiểu Kustomize để quản lý biến thể manifest
  • Thực hành tạo overlay đơn giản
Instructor walkthrough

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

Scenario xuyên suốt

Copy nhiều YAML cho dev/staging/prod tạo drift, patch nhầm resource hoặc overlay render ra namespace/image không mong muốn. Bài này thiết kế base có thể tái sử dụng và overlay thay đổi tối thiểu, rồi kiểm tra output như một release artifact.

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ế
  • Base chứa resource chung; overlay tham chiếu base và áp biến thể theo environment/tenant, tránh copy toàn bộ manifest.
  • `kustomization.yaml` điều khiển resources, namespace, namePrefix/nameSuffix, commonLabels, images và patches; transformation có thể đổi selector/name reference cần inspect.
  • Strategic merge/JSON6902/patches có target khác nhau; patch sai target có thể fail build hoặc tạo output không như ý.
  • `kubectl kustomize`/`kustomize build` chỉ render YAML; cần schema/server dry-run, diff và runtime verification sau apply.

Base và overlay

Base mô tả resource chung; overlay thể hiện biến thể dev/staging/prod bằng namespace, image, replicas, resources và patch nhỏ. Kustomize render thành YAML cuối; hãy inspect output để thấy namePrefix, namespace, labels/selectors, image và patch effect.

Build không phải runtime pass

kubectl kustomize/kustomize build chỉ chứng minh composition. Chạy diff/server dry-run, apply lab rồi kiểm tra rollout, endpoints, ConfigMap, events và expected state. Patch target/path sai phải được bắt trước apply. Không lưu credential plaintext trong base/overlay.

Bài tập

Tạo base + dev/staging overlay, đổi image/replicas/resources, thêm patch, cố ý làm patch sai và sửa. Lưu rendered output/diff, apply dev, verify runtime và cleanup riêng từng overlay.

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 kustomize overlays/dev
kustomize build overlays/dev
kubectl diff -k overlays/dev
kubectl apply --dry-run=server -k overlays/dev
kubectl apply -k overlays/dev
kubectl get deploy,svc,configmap -n ckad-day12 -o wide --show-labels
kubectl rollout status deployment/APP_NAME -n ckad-day12
Hands-on lab

Thực hành theo scenario

  1. Tạo repo lab `base/` và `overlays/dev`, namespace `ckad-day12`; base gồm Deployment/Service/ConfigMap với labels/selector ổn định, overlay đổi namespace, image tag, replicas và resource.
  2. Chạy `kustomize build`/`kubectl kustomize`, inspect toàn bộ output: names, namespace, labels/selectors, container image, ConfigMap, probes và security fields; lưu rendered artifact.
  3. Thêm một strategic/JSON6902 patch có target rõ, cố ý target sai hoặc patch path sai để đọc build error; sửa và kiểm tra diff với expected state.
  4. Apply overlay dev bằng server dry-run trước, sau đó apply; verify Deployment rollout, Service endpoints, ConfigMap content, events và cleanup ownership. Tạo overlay variant staging để phát hiện cross-environment leakage.
  5. Cleanup overlay resources/namespace; không apply overlay prod, không commit Secret literal và không xóa base/shared resource ngoài lab.
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:

  • Base/overlay separation và intended diff rõ.
  • Build output được inspect trước mutation.
  • Patch target/path và transformations đúng.
  • Server dry-run/runtime rollout/service evidence đầy đủ.
  • Overlay/secret/cleanup isolation an toàn.
Transfer to exam / production

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

CKAD Kustomize task thường cần biết output cuối cùng chứ không chỉ nhớ patch syntax. Build trước, kiểm tra namespace/namePrefix/selector/image, rồi server dry-run và rollout; giữ base không chứa environment secret.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Kustomize build thành công nhưng Service không có endpoint sau apply. Kiểm tra nào nên làm?

Kết thúc bài

Checklist trước khi sang Ngày 2