k8s基础篇-配置管理
云原生要素-配置分离
创建ConfigMap的几种形式
1. 基于文件夹的形式
# 创建文件夹 mkdir /tmp/configmap/conf -p # 在文件夹下创建两个文件 vim first.conf name=tom age=12 vim second.conf address=beijing color=red # 创建configmap的命令 kubectl create configmap cmfromdir --from-file=/tmp/configmap/conf/ # 查看创建的configmap kubectl get cm cmfromdir
2. 基于文件的形式(和文件夹一样,只是--from-file=文件路径,不是文件夹路径)
cd /tmp/configmap/config/
# 创建文件
vim third.conf
sex=male
hobby=girl
# 创建configmap
kubectl create configmap cmfromfile --from-file=/tmp/configmap/conf/third.conf
# 查看configmap
kubectl get cm cmfromfile
# 以yaml格式输出
kubectl get cm cmfromfile -oyaml
apiVersion: v1
data:
third.conf: |
sex=male
hobby=girl
kind: ConfigMap
metadata:
creationTimestamp: "2021-11-11T11:09:45Z"
name: cmfromfile
namespace: ingress-nginx
resourceVersion: "244385"
uid: da6e85e5-9ba4-4f9c-82e6-b81d0b2c9c74
3. 如果以文件形式定义configmap时,想按照自己的习惯指定文件名字,如何去做?
格式:--from-file=我的名字=文件路径
kubectl create configmap cmspecialfile --from-file=myfilename=/tmp/configmap/conf/third.conf
kubectl get cm cmspecialfile -oyaml apiVersion: v1
data:
myfilename: |
sex=male
hobby=girl
kind: ConfigMap
metadata:
creationTimestamp: "2021-11-11T11:23:21Z"
name: cmspecialfile
namespace: ingress-nginx
resourceVersion: "245512"
uid: 69e13941-bd10-4c6a-9b02-e1cbc57e86f1
4. 在创建configmap时,指定名称空间,只需要添加 -n 名称空间 即可
kubectl create configmap cmspecialfile --from-file=myfilename=/tmp/configmap/conf/third.conf -n my-first-ns
5. 基于文件创建环境变量 --file-env-file=变量文件名字
kubectl create configmap cmenvfile --from-env-file=/tmp/configmap/conf/test_env.conf
6. 在命令行直接创建变量
[root@k8s-master ~]# kubectl create cm cmfromliteral --from-literal=name=zhangsan --from-literal=age=12 onfigmap/cmfromliteral created [root@k8s-master ~]# [root@k8s-master ~]# kubectl get cm cmfromliteral -oyaml apiVersion: v1 data: age: "12" name: zhangsan kind: ConfigMap metadata: creationTimestamp: "2021-11-11T11:45:21Z" name: cmfromliteral namespace: ingress-nginx resourceVersion: "247337" uid: 59c32496-ffa1-4ad3-a6a3-3624c02118cb
7. 基于yaml文件的形式(不太方便,通常还是基于文件直接创建)
这里需要注意的是,pod引用configmap时,只能引用同一名称空间下的configmap,不能跨名称空间引用。

使用valueForm定义环境变量

使用ConfigMap有三种方式:
- 第一种是通过环境变量的方式,直接传递给pod
- 使用configmap中指定的key
- 使用configmap中所有的key
- 第二种是通过在pod的命令行下运行的方式(启动命令中)
- 第三种是作为volume的方式挂载到pod内
使用envForm批量生成环境变量

以文件的形式挂载ConfigMap

自动以挂载权限及名称
Secret常用类型
创建Secret的几种形式
使用Secret拉取私有仓库镜像
Secret管理HTTPS证书

使用SubPath解决挂覆盖
spec:
imagePullSecrets:
- name: registry-auth
containers:
- image: reg.ctnrs.com/demo/java-demo:v1
name: java-demo
volumeMounts:
- name: config
mountPath: "/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/application.yml" ## 这里不写目录,写文件
subPath: application.yml ## 指定要挂载的文件
ConfigMap & Secret热更新
ConfigMap & Secret使用限制


浙公网安备 33010602011771号