创建一个包含多个键值对的ConfigMap

定义一个configmap,然后定义一个pod引入这个configmap 键值对就能作为pod的环境变量

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: special-config
  5. data:
  6. SPECIAL_LEVEL: very
  7. SPECIAL_TYPE: charm
  8. ---
  9. apiVersion: v1
  10. kind: Pod
  11. metadata:
  12. name: my-nginx
  13. labels:
  14. name: my-nginx
  15. spec:
  16. containers:
  17. - name: nginx
  18. image: nginx
  19. command: ['sh','-c','env']
  20. resources:
  21. limits:
  22. memory: "128Mi"
  23. cpu: "500m"
  24. envFrom:
  25. - configMapRef:
  26. name: special-config
  27. ports:
  28. - containerPort: 80
  29. hostPort: 30300

创建资源

kubectl create -f config.yaml

查看configmap列表

kubectl get configmap

Secret 秘钥管理

是一种包含少量敏感信息,例如密码、令牌或秘钥的对象,这样的信息可能会被放在Pod yaml中或镜像中

Pod可以用三种方式来使用Secret:

  1. 作为挂载到一个或多个容器上卷的文件
  2. 作为容器的环境变量
  3. 由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

查询信息时不会把真实数据打印出来
image.png
—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
image.png

再结合ConfigMap进行配置分离