CHƯƠNG 20 · Final Production Challenge•BÀI 78 / 80

Compose → Kind/Helm cùng một ứng dụng

Một hệ thống cần thay đổi runtime manifests, không đổi business contract.

Tổng kết◷ 4 phút đọc2/4 trong chương

Nắm bản chất

Capstone Buổi 20 gồm Nginx frontend, API, Publisher, Worker, PostgreSQL và Redis. Compose điều phối local environment; Kind/Helm mô phỏng Kubernetes delivery. Database migration là one-shot job; secrets cần tạo trước; app Deployments được cài sau khi dependencies ready.

Chỉ số quan trọng không phải Pod Running mà là smoke test end-to-end: POST idempotent job, outbox publish, Redis consume, Worker ghi status completed. Port-forward chỉ mở localhost; ứng dụng lab chưa có authentication để public.

Luồng hoạt động

Compose→Docker images→Kind→Helm

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

python3 scripts/init_secrets.py
docker compose up -d --build
python3 scripts/smoke.py
bash scripts/kind-up.sh
kubectl -n final20 get pods,svc,pvc,job

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Thực hành Compose trước rồi Kind, ghi lại sự khác nhau giữa Service DNS, storage, migration và healthchecks; không dùng chung live DB giữa hai môi trường.

Lỗi dễ mắc

!

Chạy hai stacks cùng lúc có thể trùng host ports hoặc tiêu tốn RAM; kiểm tra context và local resources trước.

Tự kiểm tra

Tại sao migration Job Exit(0) lại được coi là thành công?Xem đáp án ↗

Vì migration là one-shot workload, hoàn thành việc rồi dừng đúng là thiết kế.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.

↓ Tải mã nguồn thực hành chương 20
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗