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

Ngày 12: Deploy ứng dụng lên GKE

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

Deploy ứng dụng lên GKE bằng manifest có namespace, Deployment, Service, probes, resources, identity, rollout verification và cleanup rõ rà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

Deploy ứng dụng lên GKE bằng manifest có namespace, Deployment, Service, probes, resources, identity, rollout verification và cleanup rõ ràng.

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

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

  • Thực hành deploy 1 ứng dụng mẫu lên GKE
  • Học cách expose Service trong GKE
Instructor walkthrough

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

Scenario xuyên suốt

Một container được apply thành công nhưng pod không Ready, Service không có endpoint và image pull lỗi; người học chỉ nhìn deployment thành công rồi kết luận ứng dụng hoạt động. Bài học dạy cách kiểm chứng desired state, actual state và request path bằng kubectl.

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ế
  • Deployment quản lý ReplicaSet/Pod và rollout; Service cung cấp stable discovery/virtual IP, không tự sửa app hoặc tạo endpoint nếu selector sai.
  • Readiness quyết định traffic, liveness quyết định restart; probe sai có thể tạo outage dù process còn chạy.
  • Namespace, labels/selectors, resource requests/limits và securityContext tạo boundary/operational contract.
  • Kubernetes service account/RBAC và GKE Workload Identity là identity layers khác nhau; image không nên chứa credential.

Desired state và actual state

kubectl apply chỉ ghi desired state vào API. Muốn kết luận deploy thành công, phải kiểm tra Deployment/ReplicaSet/Pod, Ready condition, Service selector và EndpointSlice. Một Pod Running nhưng chưa Ready không nên nhận traffic; một Service tồn tại nhưng selector sai sẽ không có endpoint.

Manifest contract

Dùng namespace lab, labels ổn định, image version có thể truy vết, requests/limits, non-root securityContext và probes phù hợp startup. Service account/workload identity xử lý quyền gọi Google API; không đặt key trong Secret/ConfigMap chỉ để tiện demo.

Debug và rollback

Đi từ object rộng đến evidence cụ thể: rollout status → get/describe pod → events → logs/previous → endpoints/service. Nếu image/probe/config sai, sửa manifest rồi rollout; lưu revision và rollback có điều kiện. Sau bài xóa bằng label/namespace, rồi kiểm tra lại để tránh workload mồ côi.

Bài tập

Deploy sample app vào namespace lab, cố ý tạo một lỗi selector hoặc readiness probe, ghi symptom/evidence/root cause/remediation, sau đó verify request path. Cuối cùng cleanup và chứng minh namespace không còn resource.

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 config current-context && kubectl get ns
kubectl apply --dry-run=client -f app.yaml
kubectl -n lab get deploy,rs,pods,svc,endpointslice -l app=sample -o wide
kubectl -n lab rollout status deployment/sample --timeout=90s
kubectl -n lab describe pod -l app=sample && kubectl -n lab logs -l app=sample --all-containers --tail=100
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace lab và manifest nhỏ cho Deployment + ClusterIP Service: labels nhất quán, non-root securityContext, requests/limits, readiness/liveness và image pin theo digest/tag kiểm soát.
  2. Validate bằng `kubectl apply --dry-run=client`, apply vào explicit context/namespace rồi theo dõi rollout; không dùng namespace production.
  3. Debug theo chuỗi: get deploy/rs/pods → describe pod → logs/previous → get endpointslices → service DNS/port; phân loại image, probe, selector, RBAC và network.
  4. Verify request path và cleanup bằng label selector; kiểm tra namespace/pods/services còn lại sau khi xóa.
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:

  • Manifest có labels/selectors khớp và namespace rõ.
  • Pod Ready/Available, Service có endpoints và rollout complete.
  • Probe/resources/securityContext có rationale.
  • Debug dùng evidence từ describe/logs/endpoints, không đoán.
  • Rollback/cleanup theo revision/label và không đụng production.
Transfer to exam / production

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

ACE có thể hỏi gcloud/GKE integration, nhưng thao tác thực tế cần đọc actual state. Phân biệt Deployment success, Pod Ready, Service endpoints và application response.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Deployment đã Available nhưng Service không route request tới Pod. Kiểm tra nào nên làm trước?

Kết thúc bài

Checklist trước khi sang Ngày 2