Giới thiệu
Chúng ta sẽ đề cập đến nội dung gì trong bài viết này?
- Bản đồ cấu hình là gì?
- Redis chính với Bản đồ cấu hình
- Tạo Bản đồ cấu hình từ một tệp
- Tạo Bản đồ cấu hình từ tệp YAML
- Sử dụng Bản đồ cấu hình để đọc dữ liệu cấu hình
Điều kiện tiên quyết
- Triển khai ứng dụng trên AKS | Phần – 1
Trong bài viết trước về Triển khai ứng dụng trên AKS phần 1, bạn đã xem xét quá trình triển khai chính Redis mà bạn đã tạo. Bạn đã thấy cách triển khai liên quan đến ReplicaSet và cách ReplicaSet liên quan đến Pod. Trong phần 2 này, bạn sẽ tạo lại Redis master này với cấu hình dành riêng cho môi trường được cung cấp thông qua ConfigMap. Nhưng trước tiên, hãy cùng khám phá ConfigMap là gì.
Bản đồ cấu hình là gì?
Bạn cũng sẽ chỉnh sửa các ứng dụng mẫu để cung cấp chi tiết cấu hình bằng Bản đồ cấu hình. ConfigMap là một đối tượng được sử dụng để cung cấp chi tiết cấu hình cho Pod. Nó cho phép bạn giữ các cài đặt cấu hình bên ngoài vùng chứa thực tế. Sau đó, bạn có thể cung cấp các chi tiết cấu hình này cho ứng dụng của mình bằng cách kết nối Bản đồ cấu hình với quá trình triển khai của bạn.
Redis chính với Bản đồ cấu hình
Không có gì sai với việc triển khai trước đó. Trong các trường hợp sử dụng thực tế, hiếm khi bạn khởi chạy một ứng dụng mà không có một số cài đặt cấu hình. Trong trường hợp này, chúng tôi sẽ thiết lập cài đặt cấu hình cho redis-master bằng ConfigMap. Bản đồ cấu hình là một cách định cấu hình vùng chứa di động mà không cần có hình ảnh chuyên biệt cho từng cấu hình. Nó có một cặp khóa-giá trị cho dữ liệu cần được đặt trên vùng chứa. Bản đồ cấu hình được sử dụng cho cấu hình không bí mật. Kubernetes có một đối tượng riêng gọi là Bí mật. Bí mật được sử dụng cho các cấu hình chứa dữ liệu quan trọng như mật khẩu.
Trong ví dụ này, chúng ta sẽ tạo một ConfigMap. Trong ConfigMap này, chúng ta sẽ định cấu hình redis-config làm khóa và giá trị sẽ là.
maxmemory: "2mb"
maxmemory-policy: "allkeys-lru"
Bây giờ, hãy tạo ConfigMap này. Có hai cách để tạo Bản đồ cấu hình.
- Tạo Bản đồ cấu hình từ một tệp
- Tạo Bản đồ cấu hình từ tệp YAML
Chúng ta sẽ khám phá từng cái một cách chi tiết.
Tạo Bản đồ cấu hình từ một tệp
Các bước sau đây sẽ giúp chúng tôi tạo Bản đồ cấu hình từ một tệp:
Bước 1. Mở trình soạn thảo mã Azure Cloud Shell bằng cách nhập mã redis-config vào thiết bị đầu cuối. Sao chép và dán hai dòng sau và lưu dưới dạng redis-config.
maxmemory: "2mb"
maxmemory-policy: "allkeys-lru"
Bước 2. Bây giờ bạn có thể tạo Bản đồ cấu hình bằng mã sau.
kubectl create configmap example-redis-config --from-file=redis-config
Bạn sẽ nhận được kết quả như hình bên dưới
configmap/example-redis-config created
Bước 3. Bạn có thể sử dụng lệnh tương tự để mô tả ConfigMap này.
kubectl describe configmap/example-redis-config Kết quả đầu ra sẽ như trong ảnh chụp màn hình bên dưới.
Tạo Bản đồ cấu hình từ tệp YAML
Trong phần này, bạn sẽ tạo lại Bản đồ cấu hình từ phần trước bằng tệp YAML.
Bước 1. Để bắt đầu, hãy xóa ConfigMap đã tạo trước đó.
kubectl delete configmap/example-redis-config
Bước 2. Sao chép và dán các dòng sau vào một tệp có tên example-redis-config.yaml, sau đó lưu tệp.
apiVersion: v1
data:
redis-config: |-
maxmemory 2mb
maxmemory-policy allkeys-lru
kind: ConfigMap
metadata:
name: example-redis-config
namespace: default
Bước 3. Bây giờ bạn có thể tạo lại ConfigMap của mình thông qua lệnh sau.
kubectl create -f example-redis-config.yaml Bạn sẽ nhận được kết quả như hình bên dưới.
configmap/example-redis-config created
Bước 5. Lệnh này trả về kết quả giống như lệnh trước.
Như bạn có thể thấy, bằng cách sử dụng tệp YAML, bạn có thể tạo cùng một Bản đồ cấu hình.
Lưu ý. kubectl get có tùy chọn hữu ích -o, có thể được sử dụng để lấy đầu ra của một đối tượng ở dạng YAML hoặc JSON. Điều này rất hữu ích trong trường hợp bạn thực hiện các thay đổi thủ công đối với hệ thống và muốn xem đối tượng kết quả ở định dạng YAML. Bạn có thể lấy Bản đồ cấu hình hiện tại trong YAML bằng lệnh sau.
kubectl get -o yaml configmap/example-redis-config
Bây giờ bạn đã xác định được ConfigMap, hãy sử dụng nó.
Sử dụng Bản đồ cấu hình để đọc dữ liệu cấu hình
Trong phần này, bạn sẽ cấu hình lại quá trình triển khai redis-master để đọc cấu hình từ ConfgMap.
Bước 1. Để bắt đầu, hãy sửa đổi redis-master-deployment.yaml để sử dụng ConfigMap như sau. Những thay đổi bạn cần thực hiện sẽ được giải thích sau mã nguồn.
Lưu ý. Nếu bạn đã tải xuống mã nguồn từ GitHub thì sẽ có một tệp trong thư mục triển khai:Triển khai ứng dụng trên AKS, được gọi là redis-master-deployment_ Modified.yaml, có những thay đổi cần thiết được áp dụng cho nó.
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: redis-master
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
role: master
tier: backend
replicas: 1
template:
metadata:
labels:
app: redis
role: master
tier: backend
spec:
containers:
- name: master
image: k8s.gcr.io/redis:e2e
command:
- redis-server
- "/redis-master/redis.conf"
env:
- name: MASTER
value: "true"
volumeMounts:
- mountPath: /redis-master
name: config
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
volumes:
- name: config
configMap:
name: example-redis-config
items:
- key: redis-config
path: redis.conf
Hãy cùng tìm hiểu sâu hơn về mã để hiểu các phần khác nhau.
Dòng 24-26
Những dòng này giới thiệu một lệnh sẽ được thực thi khi Pod của bạn khởi động. Trong trường hợp này, thao tác này sẽ khởi động máy chủ redis trỏ đến một tệp cấu hình cụ thể.
command:
- redis-server
- "/redis-master/redis.conf" Dòng 27-29
Hiển thị cách chuyển dữ liệu cấu hình tới vùng chứa đang chạy của bạn. Phương pháp này sử dụng các biến môi trường. Ở dạng Docker, điều này sẽ tương đương với docker run -e "MASTER=true". --name master -p 6379:6379 -m 100M -c 100m -d Kubernetes /redis:v1. Điều này đặt biến môi trường MASTER thành true. Ứng dụng của bạn có thể đọc cài đặt biến môi trường cho cấu hình của nó.
env:
- name: MASTER
value: "true" Dòng 30-32
Những dòng này gắn ổ đĩa có tên config (ổ đĩa này được xác định ở dòng 39-45) trên đường dẫn /redis-master trên vùng chứa đang chạy. Nó sẽ ẩn mọi thứ tồn tại trên /redis-master trên vùng chứa ban đầu. Theo thuật ngữ của Docker, nó sẽ tương đương với docker run -v config:/redis-master. -e "MASTER=TRUE" --name master -p 6379:6379 -m 100M -c 100m -d Kubernetes / redis:v1.
volumeMounts:
- mountPath: /redis-master
name: config
Dòng 40
Cung cấp cho âm lượng cấu hình tên. Tên này sẽ được sử dụng trong bối cảnh của Nhóm này.
name: config Dòng 41-42
Khai báo rằng tập này phải được tải từ bản đồ cấu hình example-redis config. Bản đồ cấu hình này đã tồn tại trong hệ thống. Bạn đã xác định được điều này rồi, vậy là bạn ổn rồi.
configMap:
name: example-redis-config Dòng 43-45
Tại đây, bạn đang tải giá trị của khóa redis-config (cài đặt bộ nhớ tối đa hai dòng) dưới dạng tệp redis.conf.
items:
- key: redis-config
path: redis.conf
Bước 2. Hãy tạo triển khai cập nhật này.
kubectl create -f redis-master-deployment_Modified.yml
Điều này sẽ xuất ra như sau.
deployment.apps/redis-master created
Bước 3. Bây giờ hãy đảm bảo rằng cấu hình đã được áp dụng thành công. Đầu tiên, hãy lấy tên của Pod.
kubectl get pods
Bước 4. Sau đó thực thi vào Pod và xác minh rằng cài đặt đã được áp dụng.
kubectl exec -it redis-master-<pod-id> redis-cli
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "2097152"
127.0.0.1:6379> CONFIG GET maxmemory-policy
"maxmemory-policy"
"allkeys-lru"
127.0.0.1:6379> exit
Tóm lại, bạn vừa thực hiện một phần quan trọng và phức tạp trong việc định cấu hình các ứng dụng gốc trên nền tảng đám mây. Bạn cũng sẽ nhận thấy rằng các ứng dụng phải được cấu hình để đọc cấu hình một cách linh hoạt. Sau khi thiết lập cấu hình cho ứng dụng của mình, bạn đã truy cập vào vùng chứa đang chạy để xác minh cấu hình đang chạy.
Trong phần 2 này, bạn đã định cấu hình Redis Master để tải dữ liệu cấu hình từ ConfigMap. Trong phần 3 cuối cùng tiếp theo, chúng ta sẽ triển khai ứng dụng end-to-end.