配置管理
1.相关概念
就是用来给pod在初始化阶段传参的一种方式,给pod直接初始化配置文件。
secret-->保存密码,token,密钥等敏感的k8s数据,放在secret中,可以减少加密信息暴露的风险。
configmap: 与secret类似,保存需要的信息传入到pod当中去,configmap存储的是不需要加密的信息。(k8s1.20版本之后的新机制)可以传配置文件,命令行参数,或者环境变量直接导入到pod中去。
2. secret类型
类型 | 说明 |
opaque : base64 | 编码格式的secret,用来存储用户自定义的密码,密钥等等,默认类型。(generic就是opaque) |
kubernetes.io/dockerconfigjson | 用来保存docker仓库的认证信息 |
tls | 用来存储TLS/SSL证书和密钥-->https |
kubernetes.io/service-account-token: k8 | k8s自动创建,用来访问apiserver的secret,只要创建了pod都会自动使用seret,和apiserver通信,自动挂载到pod的目录/run/secrets/kubernetes.io/serviceaccount |
3.pod使用secret的场景
- 挂载,把配置挂载到容器内的卷中,文件的形式
- 作为容器的环境变量
- 拉取镜像的使用
4.secret实例
命令行创建
使用yaml文件
挂载使用
把变量形式secret保存到pod当中
5.configmap实例
指定目录
指定文件-->推荐
kubectl create configmap 名称 --from-file=绝对路径 --from-file=绝对路径 --from-file=绝对路径
#可以直接在命令行指定单个或多个文件
使用yaml文件
- valueFrom
- envFrom
声明在cm的yaml文件当中(配置文件的内容较长,不推荐)
#整个写在configmap里面再传进去,以nginx的配置文件为例
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-conf
data: |
worker_processes 2;
events {
worker_connections 1024;
}
http {
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8081;
server_name localhost;
charset utf-8;
location / {
root html;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#确保文件的缩进格式是正确的,所以不推荐
6.configMap的热更新
在不修改configmap的配置文件,同时也不停止pod的情况下,对配置文件进行修改,同步到pod的配置文件当中去。
kubectl create cm nginx-conf --from-file=/opt/configmap/nginx.conf
原配置文件中的端口号是8081
kubectl edit cm nginx-conf #配置出错了可以用命令行修改
当修改了cm-配置文件,基于同一配置文件生成的pod都会改变