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使用限制

 

posted @ 2021-09-29 17:08  羊脂玉净瓶  阅读(176)  评论(0)    收藏  举报