CHƯƠNG 12 · Capstone: Docker → Kubernetes•BÀI 47 / 80

Helm app và Kubernetes bootstrap

Tách app rollout khỏi database/migration lifecycle.

Ứng dụng◷ 4 phút đọc3/4 trong chương

Nắm bản chất

Capstone dùng PostgreSQL StatefulSet/PVC và Redis trong bootstrap, chạy migration Job trước, rồi Helm cài API/Worker/Web Deployments. Phân chia này tránh Helm uninstall ứng dụng vô tình xóa toàn bộ database state.

Kubernetes Secret cho DB password cần tồn tại trước migration/API. Helm values chứa image references và runtime parameters không nhạy cảm; app chart cần probes, resource requests/limits và worker graceful shutdown.

Luồng hoạt động

Infra bootstrap→Migration Job→Helm app

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

kubectl create namespace capstone
kubectl -n capstone create secret generic capstone-db   --from-file=password=secrets/db_password.txt
kubectl apply -f k8s/bootstrap/infra.yaml
kubectl apply -f k8s/bootstrap/migration-job.yaml
kubectl -n capstone wait --for=condition=complete job/capstone-migrate --timeout=180s
helm upgrade --install capstone charts/capstone -n capstone --wait

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

✳

Mở README Buổi 12 để dùng thứ tự chính xác của lab và đúng image names. Kiểm tra rollout và Service/EndpointSlices sau Helm install.

Lỗi dễ mắc

!

Namespace/PVC/Secret cần owner và teardown policy rõ ràng. Không dùng kubectl delete namespace khi có dữ liệu cần giữ.

Tự kiểm tra

Tại sao migration thường nên chạy trước khi scale API mới?Xem đáp án ↗

Vì application mới có thể phụ thuộc schema đã được tạo; migrations cần tương thích với phiên bản đang chạy.

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 12
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 ↗