配置管理
1. Secret
2. Configmap
Secret:
加密数据并存放Etcd中,让Pod的容器以挂载Volume方式访问。
应用场景:凭据
ConfigMap:
与Secret类似,区别在于ConfigMap保存的是不需要加密配置信息。
应用场景:应用配置
方式一,手动创建secret:
[root@centos7 ~]# mkdir demo2
[root@centos7 ~]# cd demo2
[root@centos7 demo2]#
[root@centos7 demo2]# echo -n "admin" > ./username.txt
[root@centos7 demo2]# echo -n "1f2d1e2e67df" > ./password.txt
[root@centos7 demo2]# kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
secret/db-user-pass created
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 58s
default-token-7w9tq kubernetes.io/service-account-token 3 5d3h
[root@centos7 demo2]#
方式二,Yaml文件创建secret:
[root@centos7 demo2]#
[root@centos7 demo2]# cat secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
[root@centos7 demo2]#
[root@centos7 demo2]# echo -n 'admin'|base64
YWRtaW4=
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl apply -f secret.yaml
secret/mysecret created
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 4m35s
default-token-7w9tq kubernetes.io/service-account-token 3 5d3h
mysecret Opaque 2 7s
[root@centos7 demo2]#
[root@centos7 demo2]#
secret的使用方式:
volume 挂载方式
以变量名的方式
Configmap的使用方式:
volume 挂载方式
以变量名的方式
[root@centos7 demo2]# cat redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl create configmap redis-config --from-file=./redis.properties
configmap/redis-config created
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl get configmap
NAME DATA AGE
redis-config 1 7s
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl describe cm redis-config
Name: redis-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
redis.properties:
----
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
Events: <none>
[root@centos7 demo2]#
[root@centos7 demo2]# cat cm.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: redis-config
restartPolicy: Never
[root@centos7 demo2]# kubectl apply -f cm.yaml
pod/mypod created
[root@centos7 demo2]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mypod 0/1 Completed 0 23s
[root@centos7 demo2]#
[root@centos7 demo2]#
[root@centos7 demo2]# kubectl logs mypod
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
[root@centos7 demo2]#