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

Ngày 24: Ingress cho ứng dụng

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

Định tuyến HTTP qua Ingress theo host/path và TLS: controller class, Service backend, path matching, certificate secret, status/events và request-path debugging.

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

Định tuyến HTTP qua Ingress theo host/path và TLS: controller class, Service backend, path matching, certificate secret, status/events và request-path debugging.

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

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

  • Thực hành định tuyến nhiều path/host qua 1 Ingress
  • Học cách cấu hình TLS cơ bản cho Ingress
Instructor walkthrough

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

Scenario xuyên suốt

Ingress manifest apply thành công nhưng không route vì thiếu controller/class, Service port sai, path rewrite không đúng hoặc TLS secret sai namespace. Bài học tách Ingress resource khỏi controller implementation và kiểm tra từ DNS tới backend.

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ế
  • Ingress là routing rule; controller/IngressClass thực thi rule và có behavior/annotation riêng, không phải mọi cluster đều có controller.
  • Host/path matching, pathType Prefix/Exact, rewrite/headers và Service port/targetPort quyết định request path; path rule không tự sửa backend.
  • TLS secret namespaced chứa cert/key, host/SNI phải match; HTTPS termination và re-encryption tùy controller, không suy luận từ `tls:` field alone.
  • Ingress status/address/events/conditions chỉ là signal control plane; test HTTP Host header/HTTPS từ đúng network location và kiểm tra Service/EndpointSlice backend.

Ingress là nhiều lớp

Client/DNS → Ingress controller/class → host/path rule → Service port → EndpointSlice/Pod. Ingress resource chỉ khai báo rule; controller phải tồn tại và có implementation/annotations phù hợp. Dùng pathType rõ, inspect backend service port và test Host header.

TLS và debug

TLS Secret cùng namespace, cert/key/SNI host phải match; controller status/address chưa chứng minh HTTPS đúng. Tách lỗi DNS/address, HTTP host/path, Service/endpoint, controller events và certificate. Nếu controller thiếu, ghi limitation thay vì đánh dấu route pass.

Bài tập

Dựng hai backend host/path, TLS test secret, verify HTTP/HTTPS/request path, cố ý sai class/path/port/secret rồi sửa. Cleanup secret/key/Ingress riêng lab và ghi controller dependency.

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 ingressclass
kubectl get ingress -n ckad-day24 -o wide
kubectl describe ingress APP_INGRESS -n ckad-day24
kubectl get svc,endpointslice -n ckad-day24 -o wide
kubectl get secret TLS_SECRET -n ckad-day24
kubectl get events -n ckad-day24 --sort-by=.lastTimestamp
curl -H "Host: app.example.test" http://INGRESS_ADDRESS/api
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day24` với hai backend Deployment/Service có response marker `/api` và `/web`; xác định IngressClass/controller có trong cluster lab, ghi assumption.
  2. Viết Ingress host/path rules với pathType rõ, backend service port đúng; server dry-run/apply, kiểm tra ingress describe/events/status/address và Service EndpointSlice.
  3. Test từ debug client/curl với Host header và path, so sánh HTTP 404/503/connection/TLS; nếu controller không có, ghi limitation và validate manifest/controller dependency thay vì giả traffic.
  4. Tạo TLS Secret lab từ cert test, thêm TLS host, kiểm tra SNI/certificate/HTTP→HTTPS behavior; cố ý sai class/path/service port/secret để debug request path.
  5. Cleanup Ingress/TLS Secret/Services/Deployments/namespace; không dùng real private key/domain, không mở wildcard public ngoài lab và không xóa shared IngressClass/controller.
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:

  • Controller/IngressClass dependency có evidence.
  • Host/path/pathType/backend port mapping đúng.
  • HTTP Host và HTTPS/TLS test có result.
  • Status/events/backend EndpointSlice được kiểm tra.
  • TLS secret/domain/cleanup không lộ hoặc ảnh hưởng shared controller.
Transfer to exam / production

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

CKAD Ingress task: kiểm tra IngressClass và backend Service/port trước; sau apply xem describe/events/status rồi curl với Host header. `tls:` không đảm bảo controller đang phục vụ cert.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Ingress object tồn tại nhưng request trả 503. Kiểm tra ưu tiên nào?

Kết thúc bài

Checklist trước khi sang Ngày 2