Kubernetes - Bí mật
Bí mật có thể được định nghĩa là các đối tượng Kubernetes được sử dụng để lưu trữ dữ liệu nhạy cảm như tên người dùng và mật khẩu có mã hóa.
Có nhiều cách tạo ra bí mật trong Kubernetes.
- Tạo từ tệp txt.
- Tạo từ tệp yaml.
Tạo từ tệp văn bản
Để tạo bí mật từ tệp văn bản như tên người dùng và mật khẩu, trước tiên chúng ta cần lưu trữ chúng trong tệp txt và sử dụng lệnh sau.
$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt
Tạo từ tệp Yaml
apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
password: <User Password>
username: <User Name>
Tạo bí mật
$ kubectl create –f Secret.yaml
secrets/tomcat-pass
Sử dụng bí mật
Khi chúng tôi đã tạo ra các bí mật, nó có thể được sử dụng trong một nhóm hoặc bộ điều khiển sao chép dưới dạng:
- Biến môi trường
- Volume
Khi môi trường biến
Để sử dụng bí mật làm biến môi trường, chúng tôi sẽ sử dụng env trong phần thông số kỹ thuật của tệp pod yaml.
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: tomcat-pass
Như âm lượng
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat:7.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"
Cấu hình bí mật làm biến môi trường
apiVersion: v1
kind: ReplicationController
metadata:
name: appname
spec:
replicas: replica_count
template:
metadata:
name: appname
spec:
nodeSelector:
resource-group:
containers:
- name: appname
image:
imagePullPolicy: Always
ports:
- containerPort: 3000
env: -----------------------------> 1
- name: ENV
valueFrom:
configMapKeyRef:
name: appname
key: tomcat-secrets
Trong đoạn mã trên, dưới env định nghĩa, chúng tôi đang sử dụng bí mật làm biến môi trường trong bộ điều khiển sao chép.
Secrets As Volume Mount
apiVersion: v1
kind: pod
metadata:
name: appname
spec:
metadata:
name: appname
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat: 8.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"