配置资源管理:
Secret
Configmap*:1.2加入的新特征。
Secret:保存密码,token,敏感的k8s资源。
这类数据可以直接存放在镜像当中,但是放在secret当中可以更方便的控制,减少暴露的风险。
Secrets的类型
查看
kubectl get secrets
四种方式:
docker-registry :存储docker仓库认证信息,以及docker组件认证信息。 (私有 )
generic:是secret的默认模式,Opaque base64加密编码的secret,用户自定义的密码,密钥等等
tls:TLS/SSL 用于存储证书和私钥,https
系统自建的:kubernetes.io/service-account-token用来访问系统的apiserver。pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信,自动挂载到pod的/run/secret/kubernetes.io/serviceaccount.
pod如何来引用secret
3种方式:
1,挂载的方式,secret挂载到pod当中一个或者多个容器的卷里面。
2,把secret作为容器的环境变量
3,docker-registry可以作为集群拉取镜像时使用。使用secret可以实现免密登录
创建方式:
1,陈述式创建
指定文件提取信息
先创建两个文件
kubectl create secret generic mysecret --from-file=/opt/username.txt --from-file=/opt/password.txt
generic 默认类型,Opaque加密方式
2,声明式创建
将加密信息的方式
把数据加密
vim secret.yaml
data中保存的加密信息。
使用方式:
1,挂载,(最多的方式)
vim test1.yaml
把加密的信息传到指定容器的指定目录当中去,在容器中不是加密的
还可以传文件
kubectl create secret generic mysecret2 --from-file=/etc/passwd --from-file=/etc/shadow
2,传递为容器的环境变量
#我给nginx1.22这个容器里面传了两个环境变量,这两个变量的值从secret来, 分别是两条mysecret1的加密信息
kubectl exec -it mypod1 bash
3,免密登录harbor仓库
kubectl create secret docker-registry myharbor --docker-server=192.168.176.64 --docker-username=admin --docker-password=123456
指定节点拉取
secret的三种方式:
创建可以是陈述式创建
也可以是声明式
引用方式:
挂载使用
设定环境变量
docker-registry
ConfigMap:
保存的是不需要加密的信息。configmap的1.2引入的功能,应用程序会从配置文件,免密参数,以及环境变量中读取配置信息 configmap在创建容器中,给他主任我们需要的配置信息。即可以是单个的属性也可以是整个容器的配置文件。
创建方式:
1,陈述式
mkdir configmap
vim cc.txt
vim cc1.txt
创建
kubectl create configmap game --from-file=/opt/configmap/cc.txt --from-file=/opt/configmap/cc1.txt
查看
信息不是加密的
从指定文件创建,可以是一个,也可以是多个文件
使用字面值创建
kubectl create configmap game1 --from-literal=cc=youqian --from-literal=chen=bianyq
声明式方式创建:
vim configmap.yaml
都是以键值对的方式保存的
引用:
1,作为环境变量
vim configmap.yaml
传入
2,数据卷使用configMap
准备好一个nginx.conf的配置文件
创建configMap
kubectl create configmap nginx-con --from-file=/opt/nginx-configmap/nginx.conf
vim nginx1.yaml
找不到,因为nginx.conf中工作目录错误
1,我们通过数据卷的形式,把配置文件传给了pod内部容器。
2,config的热更新,在pod运行的情况下,对config的配置信息进行修改。直接生效(反应到容器当中)
3,configmap的热更新不会触发pod的滚动更新机制(deployment)
热更新不会重启
直接通过nginx-con更改
kubectl edit cm nginx-con
但nginx没有重启
version/config来触发滚动更新
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/confgi": "20240116"}}}}}'
secret:主要作用的保存加密文件,主要的使用方式就是挂载方式
configMap:主要作用把配置信息传给容器。主要方式也是挂载方式
configMap的热更新:热更新可以直接反映到容器的内部,也不会触发pod的更新机制。如果不是需要重启的配置,都可以直接生效。
version/config来触发滚动更新
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/confgi": "20240116"}}}}}'
需要重启的,可以重启pod。
更新:就是把配置信息重新传到容器内,重启也是一样
configMap:就是把配置信息传给容器,键偉对形式保存的,非加密的信息。