0

Phần 3 - Quản lý cấu hình

Chia sẻ
  • 7 0
 Xuất bản Thứ Năm, 8:26 SA 7 0 0 5
  • 7 0

1. ConfigMap - Tách cấu hình khỏi ứng dụng

Một ứng dụng thường cần nhiều thông tin cấu hình như:

  • URL của API
  • Tên database
  • Mức log (DEBUG, INFO,...)

Nếu ghi trực tiếp các giá trị này vào source code (hard-code), mỗi lần thay đổi cấu hình bạn sẽ phải build lại image và deploy lại ứng dụng.

ConfigMap giúp lưu trữ các cấu hình dưới dạng key-value và cho phép Pod sử dụng chúng thông qua Environment Variables hoặc Volume.

Ghi nhớ: ConfigMap dùng để lưu dữ liệu cấu hình không nhạy cảm.


2. Secret - Lưu thông tin nhạy cảm

Một số thông tin không nên lưu trong Git hoặc ConfigMap, ví dụ:

  • Mật khẩu Database
  • API Key
  • JWT Secret
  • TLS Certificate

Kubernetes cung cấp Secret để quản lý các dữ liệu này.

Về cách sử dụng, Secret gần giống ConfigMap: Pod có thể đọc dưới dạng Environment Variables hoặc Volume.

Ghi nhớ: Secret dùng cho dữ liệu nhạy cảm, không phải cấu hình thông thường.


3. Volume - Dữ liệu sống lâu hơn Container

Container có filesystem tạm thời (Ephemeral).

Điều đó có nghĩa là khi Pod bị xóa hoặc tạo lại, mọi dữ liệu ghi bên trong container cũng sẽ biến mất.

Ví dụ:

  • Upload file
  • SQLite Database
  • Cache
  • Log

Đều có thể mất sau khi Pod restart.

Volume là thư mục được mount vào Pod để dữ liệu có thể được chia sẻ giữa các container trong cùng Pod hoặc tồn tại lâu hơn container.

Ghi nhớ: Không phải mọi Volume đều lưu trữ lâu dài. Một số loại Volume vẫn bị xóa khi Pod bị xóa.


4. Persistent Volume (PV) & Persistent Volume Claim (PVC)

Để dữ liệu tồn tại ngay cả khi Pod bị xóa, Kubernetes tách Storage khỏi Pod.

Có hai thành phần chính:

  • Persistent Volume (PV): tài nguyên lưu trữ thực tế trong Cluster.
  • Persistent Volume Claim (PVC): yêu cầu sử dụng một phần tài nguyên lưu trữ.

Pod không làm việc trực tiếp với PV mà chỉ cần khai báo PVC. Kubernetes sẽ tự kết nối PVC với PV phù hợp.

Ghi nhớ: PV là ổ đĩa, còn PVC là yêu cầu sử dụng ổ đĩa.


5. StorageClass - Tự động cấp phát Storage

Nếu phải tạo PV thủ công mỗi lần cần lưu trữ, việc quản lý sẽ rất tốn công.

StorageClass giúp Kubernetes tự động tạo Persistent Volume khi có PVC mới.

Quy trình hoạt động:

  1. Pod yêu cầu PVC.
  2. PVC tham chiếu tới một StorageClass.
  3. StorageClass tự động tạo PV.
  4. PVC được bind với PV.
  5. Pod sử dụng PVC để lưu dữ liệu.

Nhờ đó, người dùng chỉ cần tạo PVC, còn việc cấp phát ổ đĩa sẽ được Kubernetes thực hiện tự động.

Ghi nhớ: StorageClass chính là cơ chế Dynamic Provisioning của Kubernetes.


Tổng kết

Thành phần Vai trò
ConfigMap Lưu cấu hình không nhạy cảm
Secret Lưu thông tin nhạy cảm
Volume Lưu dữ liệu trong vòng đời của Pod hoặc chia sẻ giữa các container
Persistent Volume (PV) Tài nguyên lưu trữ trong Cluster
Persistent Volume Claim (PVC) Yêu cầu sử dụng tài nguyên lưu trữ
StorageClass Tự động tạo Persistent Volume khi cần

Ý tưởng cốt lõi: Kubernetes khuyến khích tách biệt ứng dụng, cấu hình và dữ liệu. Ứng dụng được đóng gói trong Image, cấu hình được quản lý bằng ConfigMap hoặc Secret, còn dữ liệu được lưu trên Volume/PV để đảm bảo không bị mất khi Pod thay đổi.

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí