Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

ConfigMap trong Kubernetes là gì? Cách tạo và sử dụng ConfigMap chi tiết

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:20/04/2026
Lượt xem

Quy trình sản xuất nội dung

Đánh giá

[esi kkstarratings cache="private" ttl="3"]

Khi làm việc thực tế với Kubernetes, mình nhận ra việc hard-code cấu hình vào container khiến quá trình deploy và cập nhật trở nên rối rắm, dễ lỗi hơn nhiều so với tưởng tượng. Sau khi áp dụng ConfigMap vào các project, mình có thể tách riêng cấu hình khỏi code, giúp quản lý linh hoạt và giảm đáng kể rủi ro khi thay đổi môi trường. Trong bài viết này, mình sẽ chia sẻ cách tạo và sử dụng ConfigMap dựa trên chính trải nghiệm triển khai thực tế để bạn có thể áp dụng ngay vào hệ thống của mình.

Những điểm chính

Đối với mình, ConfigMap không chỉ là một resource cấu hình đơn thuần mà còn là chìa khóa giúp tách biệt config khỏi application, từ đó tối ưu quy trình deploy và vận hành Kubernetes hiệu quả hơn. Để giúp bạn hiểu rõ và áp dụng đúng trong thực tế, bài viết dưới đây sẽ cung cấp các nội dung trọng tâm gồm:

  • Khái niệm: Biết được ConfigMap là một đối tượng API trong Kubernetes được sử dụng để lưu trữ các dữ liệu cấu hình không nhạy cảm dưới dạng các cặp key–value. 
  • Tính năng chính của ConfigMap trong Kubernetes: Hiểu rõ các khả năng như lưu trữ key-value, inject vào Pod và hỗ trợ cấu hình linh hoạt theo từng môi trường triển khai.
  • Mục đích sử dụng ConfigMap trong Kubernetes: Biết khi nào nên dùng ConfigMap để tách config khỏi image, giúp tăng tính tái sử dụng và giảm rủi ro khi cập nhật ứng dụng.
  • Cách sử dụng ConfigMap trong Kubernetes: Hiểu toàn bộ quy trình từ tạo, cấu hình đến áp dụng ConfigMap vào hệ thống thực tế để đảm bảo vận hành ổn định.
  • Biết thêm Vietnix là nhà cung cấp dịch vụ Enterprise Cloud và S3 Object Storage uy tín, chất lượng.
  • Câu hỏi thường gặp: Được giải đáp các thắc mắc về mục đích, cách tạo và sự khác biệt giữa ConfigMap và Secret, giúp củng cố kiến thức và làm rõ các vấn đề kỹ thuật.
những điểm chính

ConfigMap trong Kubernetes là gì?

ConfigMap là một đối tượng API trong Kubernetes được sử dụng để lưu trữ các dữ liệu cấu hình không nhạy cảm dưới dạng các cặp key–value. Mục đích cốt lõi của ConfigMap là thực hiện nguyên tắc decoupling – Tách biệt hoàn toàn mã nguồn của ứng dụng khỏi các tham số cấu hình. Nhờ đó, bạn có thể triển khai cùng một container image trên nhiều môi trường khác nhau (như Dev, Staging, Production) mà chỉ cần thay đổi ConfigMap tương ứng mà không cần phải đóng gói lại image.

ConfigMap là một đối tượng API trong Kubernetes được sử dụng để lưu trữ các dữ liệu cấu hình không nhạy cảm
ConfigMap là một đối tượng API trong Kubernetes được sử dụng để lưu trữ các dữ liệu cấu hình không nhạy cảm

Để chạy ổn định các workload container hóa, doanh nghiệp cần một hạ tầng cloud server đủ mạnh, linh hoạt và tách biệt tài nguyên để không bị phụ thuộc vào giới hạn của từng máy chủ vật lý đơn lẻ. Đây cũng là lý do Vietnix phát triển Enterprise Cloud – Nền tảng cloud server cho phép bạn làm chủ cụm CPU, RAM, Storage riêng biệt trên hạ tầng AMD EPYC và 100% NVMe, dễ dàng khởi tạo, mở rộng hay tối ưu từng cloud server theo nhu cầu thực tế của hệ thống Kubernetes. Liên hệ ngay để được tư vấn chi tiết về dịch vụ!

Tính năng chính của ConfigMap trong Kubernetes

Các tính năng chính của ConfigMap trong Kubernetes có thể kể đến như:

  • Lưu trữ cấu hình linh hoạt: Cho phép lưu trữ các tham số hệ thống, thông số kết nối hoặc toàn bộ nội dung file cấu hình (như .yaml, .properties, .conf) dưới dạng cặp key-value hoặc tập tin thô.
  • Tách biệt mã nguồn và cấu hình: Giữ cho logic xử lý trong mã nguồn hoàn toàn độc lập với các thiết lập môi trường. Điều này giúp đơn giản hóa việc quản lý cấu hình giữa các môi trường Dev/Staging/Production và cho phép tái sử dụng cùng một Container Image duy nhất.
  • Cơ chế phân phối dữ liệu đa dạng: Cung cấp dữ liệu trực tiếp vào Pod thông qua 3 phương thức:
    • Biến môi trường: Truyền trực tiếp vào tiến trình của ứng dụng.
    • Volume Mount: Gắn ConfigMap thành các tệp tin thực tế bên trong thư mục của Container (hỗ trợ cập nhật dữ liệu thời gian thực).
    • Đối số dòng lệnh: Sử dụng các giá trị trong ConfigMap để thiết lập tham số khởi chạy cho ứng dụng.
Tính năng chính của ConfigMap trong Kubernetes
Tính năng chính của ConfigMap trong Kubernetes

Mục đích sử dụng ConfigMap trong Kubernetes

ConfigMap được sử dụng để cung cấp các giá trị cấu hình cho ứng dụng theo cách tách biệt hoàn toàn với mã nguồn và image container, giúp quản lý cấu hình linh hoạt giữa nhiều môi trường triển khai khác nhau. Một số ứng dụng của ConfigMap trong Kubernetes như sau:

  • Tách cấu hình khỏi mã nguồn: ConfigMap cho phép đưa các tham số phụ thuộc môi trường như hostname, IP database, URL dịch vụ bên thứ ba,… ra ngoài, không cần sửa mã nguồn hay build lại container khi thay đổi. Nhờ đó, cùng một image có thể dùng cho dev, staging, production, chỉ cần gán ConfigMap phù hợp cho từng môi trường.​
  • Hỗ trợ thay đổi cấu hình linh hoạt: ConfigMap đặc biệt hữu ích khi các giá trị cấu hình có thể thay đổi độc lập với vòng đời cập nhật code, ví dụ đổi địa chỉ database hoặc endpoint API mà không cần redeploy lại ứng dụng. Ứng dụng chỉ việc đọc lại cấu hình từ biến môi trường hoặc file mount từ ConfigMap là đã áp dụng được thay đổi.
  • Chuẩn bị cấu hình trước khi triển khai: Người quản trị có thể tạo và tinh chỉnh ConfigMap trước khi triển khai Pod, từ đó kiểm soát hành vi của ứng dụng mà không cần chỉnh sửa manifest Deployment. Cách làm này giúp quy trình CI/CD gọn hơn, pipeline chỉ deploy image chuẩn, còn cấu hình được quản lý tách biệt ở tầng cluster.
  • Tăng khả năng port và đa môi trường: Khi ứng dụng được thiết kế để đọc cấu hình từ environment hoặc filesystem, ConfigMap có thể chạy thống nhất cả trong Kubernetes lẫn môi trường local, chỉ khác nguồn cung cấp biến môi trường. Điều này loại bỏ các rào cản khi di chuyển hoặc mở rộng hệ thống trên nhiều môi trường khác nhau.
Mục đích sử dụng ConfigMap
Mục đích sử dụng ConfigMap

Với mình, ConfigMap thực sự phát huy giá trị khi hệ thống bắt đầu có nhiều môi trường và cần thay đổi cấu hình thường xuyên, vì lúc này việc tách config khỏi code giúp giảm rủi ro và tiết kiệm rất nhiều thời gian vận hành. Đặc biệt, khi làm việc với CI/CD, mình thấy rõ việc quản lý cấu hình riêng giúp pipeline gọn gàng và dễ kiểm soát hơn rất nhiều.

1. Tạo ConfigMap bằng nhiều cách

  • Tạo ConfigMap từ file hoặc thư mục:

ConfigMap có thể được tạo trực tiếp từ một hoặc nhiều file cấu hình với tham số –from-file, Kubernetes sẽ lấy tên file hoặc key định nghĩa làm khóa trong ConfigMap. Ví dụ tạo ConfigMap từ thư mục chứa nhiều file cấu hình:​

mkdir configmap-example

wget https://kubernetes.io/examples/configmap/game.properties \

  -O configmap-example/game.properties

wget https://kubernetes.io/examples/configmap/ui.properties \
  -O configmap-example/ui.properties
# Tạo config map
$kubectl create configmap game-config-example --from-file=configmap-example/
configmap/game-config-example created

kubectl describe configmaps game-config-example
ame:         game-config-example
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30

ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice



BinaryData
====

Events:  <none>


kubectl get configmaps game-config-example -o yaml

apiVersion: v1
data:
  game.properties: |-
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    how.nice.to.look=fairlyNice
kind: ConfigMap
metadata:
  creationTimestamp: "2026-03-12T08:50:53Z"
  name: game-config-example
  namespace: default
  resourceVersion: "1721999"
  uid: da2457f8-6ed8-4ac9-b29b-0b46808da397

Trong trường hợp chỉ muốn lấy một file, bạn có thể chỉ định đường dẫn cụ thể:

kubectl create configmap game-config-example-2 \
  --from-file=configmap-example/game.properties
kubectl describe configmap game-config-example-2
  • Tạo ConfigMap từ env file:

Kubernetes hỗ trợ tạo ConfigMap từ env file với định dạng NAME=VALUE trên mỗi dòng thông qua –from-env-file. Ví dụ:

cat configmap-example/game.properties 

kubectl create configmap game-config-env-file-example \
  --from-env-file=configmap-example/game.properties 

kubectl get configmap game-config-env-file-example -o yaml

Cách này tiện khi đã có sẵn file biến môi trường dùng chung cho nhiều môi trường triển khai.

  • Tạo ConfigMap từ giá trị literal và key tùy chỉnh:

Bạn có thể tạo ConfigMap nhanh từ các cặp key value truyền trực tiếp trên dòng lệnh với –from-literal hoặc chỉ định key khác tên file bằng cú pháp –from-file==. Ví dụ:

kubectl create configmap game-config-key-example \
  --from-file=game-key-example-data=configmap-example/game.properties
configmap/game-config-key-example created

kubectl get configmap game-config-key-example -o yaml

apiVersion: v1
data:
  game-key-example-data: |-
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30
kind: ConfigMap
metadata:
  creationTimestamp: "2026-03-12T09:01:18Z"
  name: game-config-key-example
  namespace: default
  resourceVersion: "1724007"
  uid: 6bc77fe4-d5dd-430c-a504-4e63f5fd6e16

Hoặc tạo từ literal:

kubectl create configmap config-example-values \
  --from-literal=example.value=one \
  --from-literal=example-type=2 \
  --from-literal=example.url="http://example.com"
configmap/config-example-values created

kubectl get configmap config-example-values -o yaml

➜  ~ kubectl get configmap config-example-values -o yaml

apiVersion: v1
data:
  example-type: "2"
  example.url: http://example.com
  example.value: one
kind: ConfigMap
metadata:
  creationTimestamp: "2026-03-12T09:01:58Z"
  name: config-example-values
  namespace: default
  resourceVersion: "1724137"
  uid: 6c68568b-3006-4e19-8a92-b4875531d70b
  • Tạo ConfigMap từ manifest YAML:

ConfigMap cũng được định nghĩa như các tài nguyên Kubernetes khác thông qua file YAML với trường data hoặc binaryData. Ví dụ:

apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-config
data:
  database_host: "192.168.0.1"
  debug_mode: "1"
  log_level: "verbose"

Áp dụng vào cluster:

kubectl apply -f demo-config.yaml
configmap/demo-config created

kubectl get configmaps
NAME                           DATA   AGE
demo-config                    3      9s

kubectl describe configmap demo-config
Name:         demo-config
Namespace:    default
Labels:       <none>
Annotations:  <none>
Data
====
database_host:
----
192.168.0.1
debug_mode:
----
1
log_level:
----
verbose
BinaryData
====
Events:  <none>

2. Dùng ConfigMap làm biến môi trường

  • Load toàn bộ ConfigMap vào Pod bằng envFrom:

Cách phổ biến nhất là nạp toàn bộ key value trong ConfigMap thành biến môi trường trong container bằng envFrom.configMapRef. Ví dụ:

apiVersion: v1
kind: Pod
metadata:
  name: env-configmap
spec:
  containers:
    - name: app
      image: busybox:latest
      command: ["/bin/sh", "-c", "printenv"]
      envFrom:
        - configMapRef:
            name: myconfigmap

Triển khai và xem log:

kubectl apply -f env-configmap.yaml
kubectl logs pod/env-configmap

Các key trong ConfigMap như username, access_level sẽ xuất hiện dưới dạng biến môi trường trong Pod.

  • Mapping từng key ConfigMap sang biến môi trường cụ thể:

Khi chỉ cần một hoặc vài giá trị, bạn có thể dùng env.valueFrom.configMapKeyRef để map từng key và đặt tên biến môi trường tùy ý. Ví dụ:

apiVersion: v1
kind: Pod
metadata:
  name: env-configmap
spec:
  containers:
  - name: envars-test-container
    image: nginx
    env:
    - name: CONFIGMAP_USERNAME
      valueFrom:
        configMapKeyRef:
          name: myconfigmap
          key: username

Trong container, biến CONFIGMAP_USERNAME sẽ nhận giá trị từ key username trong ConfigMap, các key khác không được nạp vào môi trường.

  • Sử dụng biến môi trường từ ConfigMap trong command container:

Biến môi trường lấy từ ConfigMap có thể chèn trực tiếp vào trường command hoặc args của Pod để truyền cấu hình cho ứng dụng dưới dạng tham số dòng lệnh. Ví dụ:

apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
spec:
  containers:
    - name: app
      image: demo-app:latest
      env:
        - name: DATABASE_HOST
          valueFrom:
            configMapKeyRef:
              name: demo-config
              key: database_host
      command: ["demo-app", "--database-host", "$(DATABASE_HOST)"]

Khi container khởi động, lệnh thực thi sẽ được bổ sung giá trị host từ ConfigMap mà không cần hardcode trong manifest.

3. Dùng ConfigMap dưới dạng file cấu hình

  • Mount ConfigMap làm volume trong Pod:

ConfigMap có thể được mount vào Pod như một volume read only, mỗi key trong ConfigMap tương ứng với một file dưới thư mục mount. Ví dụ:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    configMap:
      name: myconfigmap

Sau khi Pod chạy, thư mục /etc/foo sẽ chứa các file có tên trùng với key trong ConfigMap, ứng dụng có thể đọc nội dung file để lấy cấu hình.

  • Mount file cấu hình ứng dụng từ ConfigMap:

Với các ứng dụng cần file như application.properties hoặc application.yaml, bạn có thể lưu nội dung file trực tiếp trong ConfigMap rồi mount vào đường dẫn mà ứng dụng đọc cấu hình. Ví dụ:​

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  application.properties: |
    server.port=8080
    database.url=jdbc:mysql://mysql:3306/mydb
    database.user=dbuser
    database.password=dbpassword

Deployment mount file này vào container:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: web-container
        image: my-web-app:latest
        volumeMounts:
        - name: config-volume
          mountPath: /config/application.properties
          subPath: application.properties
      volumes:
      - name: config-volume
        configMap:
          name: app-config
          items:
          - key: application.properties
            path: application.properties

Ứng dụng chỉ cần đọc file /config/application.properties như file cấu hình thông thường.

4. Kết hợp ConfigMap với Deployment và Pod thực tế

  • Truyền cấu hình cho Deployment qua envFrom:

ConfigMap có thể gắn trực tiếp vào Deployment để tất cả Pod của ReplicaSet cùng kế thừa cấu hình. Ví dụ:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: web-container
        image: my-web-app:latest
        envFrom:
        - configMapRef:
            name: web-config

Trong đó web-config là ConfigMap chứa các tham số như server.port, database.url, database.user, database.password.​

  • Mapping nhiều ConfigMap và kiểm tra trong Pod:

Khi cần chia tách cấu hình ứng dụng và cấu hình log, bạn có thể dùng nhiều ConfigMap và map từng key vào biến môi trường tương ứng. Ví dụ:

apiVersion: v1
kind: ConfigMap
metadata:
  name: application-configs
data:
  app.value: "45000"
  app.type: test-application
  app.ui: web
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: application-log-configs
data:
  log_level: WARNING
  log_type: TEXT
---
apiVersion: v1
kind: Pod
metadata:
  name: configmap-example-pod
spec:
  containers:
    - name: configmap-example-busybox
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      env:
        - name: APPLICATION_TYPE
          valueFrom:
            configMapKeyRef:
              name: application-configs
              key: app.type
        - name: APPLICATION_UI_TYPE
          valueFrom:
            configMapKeyRef:
              name: application-configs
              key: app.ui
        - name: LOG_LEVEL
          valueFrom:
            configMapKeyRef:
              name: application-log-configs
              key: log_level
  restartPolicy: Never

Sau khi tạo Pod, bạn có thể dùng kubectl logs kết hợp grep để kiểm tra các biến môi trường đã được set đúng giá trị từ ConfigMap.

Cách sử dụng ConfigMap trong Kubernetes
Cách sử dụng ConfigMap trong Kubernetes

Vietnix – Nhà cung cấp dịch vụ Enterprise Cloud và S3 Object Storage uy tín, chất lượng

Vietnix là nhà cung cấp dịch vụ Enterprise Cloud và S3 Object Storage uy tín, mang đến hạ tầng mạnh mẽ, ổn định và linh hoạt cho doanh nghiệp trong quá trình triển khai và mở rộng hệ thống. Với nền tảng được tối ưu về hiệu năng, khả năng mở rộng linh hoạt cùng các tiêu chuẩn bảo mật cao, Vietnix giúp doanh nghiệp dễ dàng vận hành các workload hiện đại như Kubernetes, lưu trữ dữ liệu lớn và xây dựng hệ thống phân tán hiệu quả. Đây là lựa chọn phù hợp cho các tổ chức đang tìm kiếm giải pháp hạ tầng đáng tin cậy để phát triển bền vững trong môi trường số!

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh

Câu hỏi thường gặp

ConfigMap khác gì so với Secret?

ConfigMap chứa cấu hình không nhạy cảm và không mã hóa dữ liệu, trong khi Secret được thiết kế để lưu thông tin nhạy cảm như mật khẩu, token với cơ chế bảo vệ cao hơn ở mức hệ thống.

Các cách phổ biến để tạo ConfigMap là gì?

Bạn có thể tạo ConfigMap từ file, thư mục, giá trị literal hoặc manifest YAML thông qua lệnh kubectl create configmap hay kubectl apply -f đối với file cấu hình.

ConfigMap trong kubernetes là công cụ cốt lõi giúp quản lý cấu hình ứng dụng một cách linh hoạt, tách biệt khỏi mã nguồn và container image, giúp đơn giản hóa việc triển khai, mở rộng và bảo trì hệ thống trên nhiều môi trường khác nhau. Nhờ sử dụng đúng cách ConfigMap kết hợp với Secret, Deployment và Pod, kiến trúc hạ tầng Kubernetes sẽ dễ kiểm soát hơn, giảm rủi ro sai lệch cấu hình và hỗ trợ doanh nghiệp xây dựng nền tảng ứng dụng ổn định, dễ mở rộng trong dài hạn. Cảm ơn bạn đã theo dõi bài viết!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

kien-thuc-dich-vu

kien-thuc-kubernetes

text
icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG