{{ currentSectionTitle }}

Production Experience v2.5

ConfigMap trong Kiến trúc K8s

ConfigMap được lưu trữ tập trung tại etcd thông qua API Server. Dữ liệu sau đó được kubelet phân phối tới các Pod tùy theo phương thức mount.

"ConfigMap được lưu trong etcd, giới hạn 1MB. Đây là ranh giới quan trọng để tách rời Configuration khỏi Application Artifacts."

etcd API Server Kubelet Pod / Container
pod-spec.yaml

Container Visual Runtime

Container
APP_VAR_{{i}}=value_{{i}}
PORT_CONFIG
8080
/etc/config/
{{file}}
💡 Khi nào dùng?

{{ activeInjectionData.whenToUse }}

Hot-reload vs Frozen Behavior

Mô phỏng thay đổi dữ liệu ConfigMap và xem cách K8s phản ứng.

Volume Mount path ✅ Updated (~1min)
/etc/config/settings.ini
DEBUG_MODE={{ updateTriggered ? 'true' : 'false' }}
MAX_CONN=100

Tệp tin được tự động cập nhật nhờ symlink quản lý bởi kubelet.

Environment variable ⚠️ Stale - Pod restart required
DEBUG_MODE=false

Frozen at Pod start

Biến môi trường được inject lúc khởi tạo Container và không thay đổi.

{{ s.risk }}

{{ s.question }}

Thực tế xảy ra:

{{ s.explanation }}

Best Practice:

{{ s.practice }}

Quy tắc phân loại dữ liệu

Dữ liệu ConfigMap Secret Lý do bảo mật
{{ row.data }} {{ row.reason }}

Cấu hình Projection Sources

Pod
Projected Volume

Resulting YAML Spec

Tại sao dùng pattern này?

{{ activeGitopsData.benefit }}

GitOps Workflow

1
Thay đổi file cấu hình trong Git
2
Tool tự động gen ConfigMap mới với suffix hash
3
Pod Spec thay đổi tên CM → Rolling Update!

🏆 Knowledge Check

Kiểm tra lại kiến thức đã học trước khi kết thúc Lab.

Câu {{ idx + 1 }} {{ answers[idx] === q.correct ? 'Chính xác!' : 'Chưa đúng' }}

{{ q.question }}

Giải thích:

{{ q.explanation }}

Chúc mừng!

Bạn đã hoàn thành khóa đào tạo ConfigMap Deep Dive.

{{ score }}/{{ DATA.quiz.length }}