创建一个包含多个键值对的ConfigMap
定义一个configmap,然后定义一个pod引入这个configmap 键值对就能作为pod的环境变量
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm
---
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
labels:
name: my-nginx
spec:
containers:
- name: nginx
image: nginx
command: ['sh','-c','env']
resources:
limits:
memory: "128Mi"
cpu: "500m"
envFrom:
- configMapRef:
name: special-config
ports:
- containerPort: 80
hostPort: 30300
创建资源
kubectl create -f config.yaml
查看configmap列表
kubectl get configmap
Secret 秘钥管理
是一种包含少量敏感信息,例如密码、令牌或秘钥的对象,这样的信息可能会被放在Pod yaml中或镜像中
Pod可以用三种方式来使用Secret:
- 作为挂载到一个或多个容器上卷的文件
- 作为容器的环境变量
- 由kubelet在为pod拉取镜像时使用
创建Secret
kubectl create secret命令将这些文件打包到一个Secret中并在API Server中创建一个对象,Secret对象的名称必须是合法的DNS子域名
generic表示类型
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
查询信息时不会把真实数据打印出来
—from-file默认文件名为键名,也可以指定键名
kubectl create secret generic db-user-pass --from-file=username=./username.txt --from-file=password=./password.txt
也可以不指定文件,直接手打
kubectl create secret generic dev-db-secret --from-literal=username=devuser --from-literal=password=devpassword
部署SpringBoot项目配置分离思路
SpringBoot项目中在yml配置文件中写${MYSQL_SERVER}会读取环境变量MYSQL_SERVER的值${MYSQL_SERVER:localhost}
表示如果没有MYSQL_SERVER的环境变量值就默认使用localhost
再结合ConfigMap进行配置分离