jvinhit//lab

Search posts

Type to search across journal entries.

↑ ↓ navigate ↵ open esc close

Series · 19 phần

Kubernetes cho Frontend Developer

Series tiếng Việt 19 phần đưa frontend developer chưa từng làm việc với server, Docker hay Linux chuyên sâu đi từ con số 0 tới deploy production trên Kubernetes. Chặng định vị và nền tảng bắt buộc trả lời vì sao FE dev nên học K8s và học tới đâu là đủ, vẽ bức tranh từ npm run build đến URL production, rồi trang bị 20 lệnh Linux, mạng cơ bản, YAML, container, Dockerfile chuẩn cho app frontend, registry và Docker Compose. Chặng Kubernetes core đi qua kiến trúc cluster, kubectl, Pod, ReplicaSet và Deployment, label và namespace, Service và Ingress, ConfigMap và Secret, ba loại probe, requests và limits, storage và vòng đời Pod. Chặng deploy thực tế giải bài toán biến môi trường build-time và runtime, deploy React SPA và Next.js SSR từ A đến Z, nhiều app trên một domain, cache và CDN đứng trước cluster, zero-downtime deploy và sổ tay 12 lỗi thường gặp. Chặng nâng cao bao chiến lược rollout, autoscaling, Helm và Kustomize, CI/CD với GitHub Actions và GitOps với ArgoCD, HTTPS tự động với cert-manager, observability, bảo mật cơ bản, chi phí và khi nào không nên dùng K8s, rồi khép lại bằng thời khoá biểu sáu tuần, checklist, đồ án cuối khoá và cheat sheet kubectl.

01 Định vị và nền tảng bắt buộc

Vì sao FE dev nên học K8s và học tới đâu là đủ, bức tranh từ npm run build đến URL production, rồi Linux, mạng, YAML, container, Dockerfile, registry và Docker Compose.

  1. Mở đầu series: FE dev học Kubernetes để làm gì và học tới đâu là đủ, hành trình từ npm run build tới URL production qua 9 chặng, từ điển thuật ngữ cấp tốc, cách học và lộ trình 19 phần.

  2. Hơn 20 lệnh Linux đủ dùng khi kubectl exec vào Pod, IP và port, DNS nội bộ của Kubernetes, reverse proxy giải quyết CORS, 404 khi F5 và HTTPS, ba loại lỗi kết nối và bảng HTTP status code để debug hạ tầng.

  3. YAML đối chiếu với JSON, 5 quy tắc sống còn, các kiểu dữ liệu gây bẫy và 4 khối của mọi manifest K8s; rồi container giải quyết gì, khác VM ra sao, Dockerfile, image, container, cơ chế layer và bộ lệnh Docker cần thuộc.

  4. Dockerfile multi-stage cho React/Vue/Vite ra image khoảng 25 MB, nginx.conf cho SPA với try_files, .dockerignore, quy ước tên và tag image, push lên ghcr.io, imagePullSecrets, và Docker Compose như bước đệm trước K8s.

02 Kubernetes core

Kiến trúc cluster và kubectl, Pod, ReplicaSet và Deployment, label và namespace, Service và Ingress, ConfigMap và Secret, probe, resources, storage và vòng đời Pod.

  1. Bốn vấn đề docker run không giải được, tám năng lực của K8s và vòng lặp reconciliation; control plane và node, chuyện gì xảy ra khi kubectl apply; dựng cluster kind 3 node có Ingress; kubectl theo ba nhóm đọc, ghi, debug.

  2. Pod là gì và các trạng thái của nó, init container và sidecar, quan hệ Deployment → ReplicaSet → Pod, manifest Deployment hoàn chỉnh cho frontend, rolling update và rollback, rồi label, selector, annotation và namespace.

  3. Pod đổi IP liên tục nên không ai hardcode được. Service cho bạn một tên DNS và IP ổn định đứng trước nhóm Pod; Ingress đọc host và path để đưa request từ Internet vào đúng Service. Kèm cách chẩn đoán endpoints rỗng, 502, 503.

  4. Tách cấu hình khỏi image bằng ConfigMap và Secret, ba cách đưa config vào container, vì sao đổi ConfigMap mà Pod không thấy, rồi readiness, liveness, startup probe và cạm bẫy liveness quá gắt gây CrashLoopBackOff.

  5. requests và limits khác nhau thế nào, đơn vị m và Mi, gợi ý số cho SPA và Next.js, QoS quyết định Pod nào bị giết trước, volume nào FE thật sự cần, và chuỗi sự kiện khi Pod bị xoá gây 502 lúc deploy cùng cách chặn bằng preStop.

03 Deploy hệ thống frontend thực tế

Biến môi trường build-time và runtime, deploy React SPA và Next.js SSR từ A đến Z, nhiều app trên một domain, cache và CDN trước cluster, zero-downtime deploy và sổ tay 12 lỗi.

  1. Vì sao đổi ConfigMap mà SPA vẫn gọi API staging: Vite đóng băng VITE_* lúc build. Runtime config pattern 6 bước với config.js sinh lúc container start, rồi bộ manifest production-ready cho React SPA: Deployment, Service, Ingress, HPA, PDB.

  2. Next.js SSR khác SPA ở đâu trên K8s: Dockerfile standalone, HOSTNAME=0.0.0.0, startupProbe, ISR cache không chia sẻ giữa Pod. Rồi Ingress cho nhiều app theo path hoặc subdomain, cạm bẫy base path và Module Federation.

  3. Cache-Control đúng cho index.html, asset có hash và config.js; gzip và brotli nén sẵn lúc build; CDN đứng trước Ingress; checklist 7 điểm zero-downtime với readinessProbe, preStop, PDB, maxUnavailable 0 và cách xử lý ChunkLoadError.

  4. Quy trình chẩn đoán 7 bước và 12 lỗi hay gặp: ImagePullBackOff, CrashLoopBackOff, READY 0/1, Pending, 502, 503, 404 khi F5, trang trắng, sai API URL, OOMKilled, ConfigMap không đổi, CORS. Mỗi lỗi có triệu chứng, lệnh chẩn đoán, cách sửa.

04 Nâng cao

Chiến lược rollout và autoscaling, Helm và Kustomize, CI/CD với GitHub Actions và GitOps với ArgoCD, cert-manager, observability, bảo mật cơ bản, chi phí và khi nào không nên dùng K8s.

  1. RollingUpdate, Recreate, Blue-Green hay Canary cho frontend: cấu hình từng cách, đo và rollback ra sao; rồi để HPA tự co giãn Pod với metrics-server, resources.requests và behavior chống dao động.

  2. Mười lăm file YAML gần giống nhau cho ba môi trường: Helm biến chúng thành template có values, Kustomize thành base và overlay. Cấu trúc chart, lệnh cần thuộc, checksum/config, configMapGenerator và chọn cái nào.

  3. Pipeline GitHub Actions: test, build và push lên ghcr.io, deploy có tự rollback, ServiceAccount giới hạn quyền cho CI. Rồi đảo sang mô hình pull với ArgoCD: cài đặt, Application manifest, selfHeal, prune và bẫy HPA.

  4. Cài cert-manager, viết ClusterIssuer ACME, thêm một annotation để Ingress tự có chứng chỉ và tự gia hạn, debug khi certificate kẹt Pending. Rồi ba trụ cột observability: log JSON ra stdout, metric cần theo dõi, lệnh xem log hằng ngày.

  5. securityContext cho container nginx non-root và read-only, RBAC cho team FE, NetworkPolicy chỉ cho Ingress gọi vào, checklist bảo mật; rồi bảng chi phí thẳng thắn và tiêu chí quyết định frontend có nên lên K8s hay không.

05 Lộ trình, checklist và tài nguyên

Thời khoá biểu sáu tuần, checklist tự đánh giá năng lực, đồ án cuối khoá, cheat sheet kubectl và tài nguyên học tiếp.

  1. Khép series: thời khoá biểu 6 tuần ánh xạ sang các phần đã học kèm sản phẩm cuối tuần, checklist tự đánh giá ba cấp độ, đồ án cuối khoá với bài kiểm tra curl không rớt request, cheat sheet kubectl và tài nguyên học tiếp.