ConfigMap được sử dụng để lưu trữ dữ liệu không bảo mật. Dữ liệu nằm trong cặp khóa-giá trị. Podscan sử dụng ConfigMap dưới dạng đối số dòng lệnh, biến môi trường hoặc dưới dạng tệp cấu hình trong một tập tin.
Sử dụng ConfigMap, chúng ta có thể tách cấu hình dành riêng cho môi trường khỏi hình ảnh container. Điều này có thể giúp chúng ta tạo các ứng dụng di động của mình. ConfigMap không cung cấp mã hóa nên luôn được khuyến cáo không lưu trữ thông tin bảo mật trong Configmap. Thay vì sử dụng config, secretes có thể được sử dụng để lưu trữ thông tin bí mật hoặc khóa bảo mật hoặc mật khẩu.
Có những cách khác nhau sau đây để sử dụng dữ liệu ConfigMap bên trong Pod:
Trong bài viết này, chúng ta sẽ xem hai ví dụ để truy cập dữ liệu từ configmap. Trong một ví dụ, chúng ta sẽ sử dụng config maps làm biến môi trường trong lệnh pod và trong ví dụ còn lại, chúng ta sẽ điền dữ liệu được lưu trữ trong ConfigMap vào một ổ đĩa.
Configmap có thể được tạo bằng lệnh sau.
Lấy thông tin chi tiết về bản đồ cấu hình mà chúng ta đã tạo.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng chúng ta có dữ liệu "variable_one" và "variable_two" có sẵn trong bản đồ cấu hình mà chúng ta đã tạo.
Bây giờ, có thể truy cập bản đồ cấu hình này trong Pod.
Để truy cập dữ liệu configmap dưới dạng biến môi trường trong lệnh pod, hãy tạo tệp định nghĩa pod có nội dung sau.
Bây giờ, chúng ta đã sẵn sàng để tạo một pod có thể truy cập dữ liệu từ configmap dưới dạng biến môi trường.
Vì pod đã hoàn tất quá trình thực thi và tồn tại vì không có tiến trình nào có thể duy trì hoạt động của pod, chúng ta có thể kiểm tra nhật ký của pod để xem configmap có khả dụng trong pod hay không. Để xác minh điều này, chúng tôi đã sử dụng lệnh echo trong pod để in các giá trị của biến.
Trong ảnh chụp màn hình ở trên, có thể thấy dữ liệu configmap có thể truy cập được trong pod và đã in các giá trị bằng lệnh echo là "một" và "hai".
Dữ liệu Configmap cũng có sẵn dưới dạng tệp trong các ổ đĩa.
Để truy cập dữ liệu configmap thông qua ổ đĩa, hãy tạo định nghĩa pod bằng nội dung sau.
Bây giờ, chúng ta hãy tạo một pod có thể chứa dữ liệu configmap dưới dạng tệp từ ổ đĩa "my-config-volume". Dữ liệu configmap này sẽ có sẵn trong thư mục "/etc/myconfig" trong pod.
Lần này, pod cũng đã thoát thành công vì không có quy trình nào giữ cho pod hoạt động.
Nhưng chúng tôi đã sử dụng lệnh "ls /etc/myconfig" để liệt kê nội dung của thư mục "/etc/myconfig".
Trong nhật ký, chúng tôi có thể thấy dữ liệu configmap có sẵn dưới dạng tệp trong "/etc/myconfig"
Trong ảnh chụp màn hình ở trên, bạn có thể thấy dữ liệu configmap có sẵn trong pod dưới dạng tệp "variable_one" và "variable_two".
Sử dụng ConfigMap, chúng ta có thể tách cấu hình dành riêng cho môi trường khỏi hình ảnh container. Điều này có thể giúp chúng ta tạo các ứng dụng di động của mình. ConfigMap không cung cấp mã hóa nên luôn được khuyến cáo không lưu trữ thông tin bảo mật trong Configmap. Thay vì sử dụng config, secretes có thể được sử dụng để lưu trữ thông tin bí mật hoặc khóa bảo mật hoặc mật khẩu.
Có những cách khác nhau sau đây để sử dụng dữ liệu ConfigMap bên trong Pod:
- Đối số dòng lệnh cho vùng chứa
- Biến môi trường cho vùng chứa
- Thêm tệp vào ổ đĩa chỉ đọc.
- Viết mã để chạy bên trong Pod sử dụng API Kubernetes để đọc ConfigMap.
Trong bài viết này, chúng ta sẽ xem hai ví dụ để truy cập dữ liệu từ configmap. Trong một ví dụ, chúng ta sẽ sử dụng config maps làm biến môi trường trong lệnh pod và trong ví dụ còn lại, chúng ta sẽ điền dữ liệu được lưu trữ trong ConfigMap vào một ổ đĩa.
Điều kiện tiên quyết
- Cụm Kubernetes có ít nhất 1 nút worker.Nếu bạn muốn tìm hiểu cách tạo Cụm Kubernetes, hãy nhấp vào đây. Hướng dẫn này sẽ giúp bạn tạo cụm Kubernetes với 1 Master và 2 Node trên AWS Ubuntu 18.04 EC2 Instances.
Chúng ta sẽ làm gì?
- Tạo Configmap và truy cập dữ liệu của nó
Tạo Configmap và truy cập dữ liệu của nó.
Tạo tệp có định nghĩa config-map sau.
Mã:
vimmy-configmap-demo1.yaml
Mã:
[/b]apiVersion: v1kind: ConfigMapmetadata: name: my-configmap-demo1data: variable_one: one variable_two: two
Configmap có thể được tạo bằng lệnh sau.
Mã:
kubectl create -f my-configmap-demo1.yaml
Mã:
kubectl get configmaps
Mã:
kubectl describe configmaps my-configmap-demo1
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng chúng ta có dữ liệu "variable_one" và "variable_two" có sẵn trong bản đồ cấu hình mà chúng ta đã tạo.
Bây giờ, có thể truy cập bản đồ cấu hình này trong Pod.
Để truy cập dữ liệu configmap dưới dạng biến môi trường trong lệnh pod, hãy tạo tệp định nghĩa pod có nội dung sau.
Mã:
vimmy-pod-with-configmaps-as-environment-variables.yml
Mã:
apiVersion: v1kind: Podmetadata: name: my-pod-configmap-demospec: containers: - name: my-container-configmap-demo image: k8s.gcr.io/busybox command: [ "/bin/sh", "-c", "echo $(variable_one_env) $(variable_two_env)" ] env: - name: variable_one_env valueFrom: configMapKeyRef: name: my-configmap-demo1 key: variable_one - name: variable_two_env valueFrom: configMapKeyRef: name: my-configmap-demo1 key: variable_two restartPolicy: Never
Bây giờ, chúng ta đã sẵn sàng để tạo một pod có thể truy cập dữ liệu từ configmap dưới dạng biến môi trường.
Mã:
kubectl get podss
Mã:
kubectl create -f my-pod-with-configmaps-as-environment-variables.yml
Mã:
kubectl get pod
Vì pod đã hoàn tất quá trình thực thi và tồn tại vì không có tiến trình nào có thể duy trì hoạt động của pod, chúng ta có thể kiểm tra nhật ký của pod để xem configmap có khả dụng trong pod hay không. Để xác minh điều này, chúng tôi đã sử dụng lệnh echo trong pod để in các giá trị của biến.
Mã:
kubectl get pods
Mã:
kubectl logs my-pod-configmap-demo
Trong ảnh chụp màn hình ở trên, có thể thấy dữ liệu configmap có thể truy cập được trong pod và đã in các giá trị bằng lệnh echo là "một" và "hai".
Dữ liệu Configmap cũng có sẵn dưới dạng tệp trong các ổ đĩa.
Để truy cập dữ liệu configmap thông qua ổ đĩa, hãy tạo định nghĩa pod bằng nội dung sau.
Mã:
vim my-pod-with-configmaps-added-to-volume.yml
Mã:
apiVersion: v1kind: Podmetadata: name: my-pod-configmap-demo2spec: containers: - name: my-container-configmap-demo2 hình ảnh: k8s.gcr.io/busybox lệnh: [ "/bin/sh", "-c", "ls /etc/myconfig/" ] volumeMounts: - tên: my-config-volume mountPath: /etc/myconfig volumes: - tên: my-config-volume configMap: tên: my-configmap-demo1 restartPolicy: Không bao giờ
Bây giờ, chúng ta hãy tạo một pod có thể chứa dữ liệu configmap dưới dạng tệp từ ổ đĩa "my-config-volume". Dữ liệu configmap này sẽ có sẵn trong thư mục "/etc/myconfig" trong pod.
Mã:
kubectl get pods
Mã:
kubectl create -f my-pod-with-configmaps-added-to-volume.yml
Mã:
kubectl get pods
Lần này, pod cũng đã thoát thành công vì không có quy trình nào giữ cho pod hoạt động.
Nhưng chúng tôi đã sử dụng lệnh "ls /etc/myconfig" để liệt kê nội dung của thư mục "/etc/myconfig".
Mã:
kubectl get pods
Mã:
kubectl logs my-pod-configmap-demo2
Trong ảnh chụp màn hình ở trên, bạn có thể thấy dữ liệu configmap có sẵn trong pod dưới dạng tệp "variable_one" và "variable_two".