k8s--configMap、secret
k8s--configMap、secretconfigMap是什么创建configMapsecret向容器传递命令行参数在k8s中向应用传递配置数据可以通过环境变量、configmap、secret等方式。configmap和secret都是k8s中的资源,用于将pod的配置分离,便于处理和信息的保密configMap是什么configMap是K8s中用于数据持久化和共享的资源,常用于将其挂载到p
k8s--configMap、secret
在k8s中向应用传递配置数据可以通过环境变量、configmap、secret等方式。
configmap和secret都是k8s中的资源,用于将pod的配置分离,便于处理和信息的保密
configMap是什么
configMap是K8s中用于数据持久化和共享的资源,常用于将其挂载到pod中的容器。configmap是k8s中用于将配置资源映射到pod容器中的一种资源。可以在pod中的容器运行时根据configmap卷中的配置自动更新容器的配置
configMap的本质就是一个键/值对的映射。键名必须是合法的DNS字段,由数字、字母、破折号、下划线以及圆点构成,值可以是短字面量,也可以是完整的配置文件
创建configMap
ConfigMap一般包含多个映射条目。其映射条目可以是短字面量,也可以是文件和文件夹。
使用–from-literal添加字面量,–from-file添加文件或者是文件夹
现在该目录下由如下文件:
#创建一个名为testconfig的configmap资源:
kubectl create configmap testconfig --from-file=pod-nginx.yaml --from-file=zuoye/ --from-file=myzuoye=zuoye.txt --from-literal=user=hxy
#查看testconfig资源
kubectl get configmap testconfig -o yaml
可以看到资源内容如下:
其中的myzuoye是自定义的键名,如果不指定键名,则会使用值的名字作为键名
在使用时需要注意:
1.pod在创建时,若有一个容器使用的configmap不存在则该容器会创建失败,其余的容器成功创建,当使用的configmap创建之后,失败的容器则会自动启动可通过设置configMapKeyRef.optional:true字段避免该情况
2.若configmap中环境变量条目的键名不合法,则在创建环境变量时不会将其作为环境变量去创建,会自动忽略错误键名的条目
3.如果挂载整个卷,则挂载点下的所有文件都会被隐藏,若不想文件被隐藏,则可以通过设置subpath子段,将卷中的某个文件或者某个文件夹挂载到挂载点,并且不会隐藏原来的文件
4.configmap卷中所有文件的默认权限是644,可以在yaml文件中定义defaultMode字段去修改文件的默认权限
5.若挂载部分configmap卷,则在更新confgimap条目之后,不会自动更新挂载点下对应的文件,因为在configma更新之后,k8s会创建一个…data文件,并且将…data文件链接到新的configmap对应的文件夹,从而实现自动更新
secret
secret是K8s中用来传递敏感信息的一种资源,其使用方式与configmap相似。secret条目的内容是采用Base64编码方式,而ConfigMap是以纯文本展示
1.secret只会存储在节点的内存中,不会写入物理内存,所以不会被窃取,因此secret适合用来存储敏感性的信息
2.secret的大小限于1MB
暴露secret资源的方式有两种,一种是将secret条目作为环境变量传递给容器,另一种是将secret条目暴露为卷中的文件,但是往往不建议使用第一种方式,原因有2个,第一个是应用程序在错误报告时会转储环境变量,或者是在启动时会打印在应用日志中,因此会无意中暴露secret的信息;另一个原因是子进程会继承父进程的所有环境变量,因此环境变量就显得不太安全。
向容器传递命令行参数
自制镜像,Dockerfile内容如下:
FROM centos:7
ENTRYPOINT ["echo"]
CMD ["hello"]
制作镜像并运行容器:
docker build -t test .
这里运行了两个容器,第一个容器没有传递参数,则使用默认的参数,第二个容器传递了参数,则会使用传递的参数覆盖默认的参数
更多推荐
所有评论(0)