目录
前言:配置管理原理
当需要修改很多配置文件时,创建一个配置资源,将配置资源挂载到各个pod当中,给pod所使用,这样就只要修改配置资源就可以了
一:Secret
1.1secret 简介
Secret 解决了密码、token、秘钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用。
Secret:保存加密文件 ;加密数据并存放在Etcd中,让Pod的容器以挂载Volume方式访问
secret 可选参数有三种:
- generic: 通用类型,通常用于存储密码数据。
- tls:此类型仅用于存储私钥和证书。
- docker-registry: 若要保存 docker 仓库的认证信息的话,就必须使用此种类型来创建。
Secret 类型:
- Service Account:用于被 service account 引用。service accout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中。
- Opaque:base64 编码格式的 Secret,用来存储密码、秘钥等。可以通过 base64 --decode 解码获得原始数据,因此安全性弱。
- kubernetes.io/dockerconfigjson:用来存储私有 docker registry 的认证信息
Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:
- 作为挂载到一个或多个容器上的卷 中的文件。
- 作为容器的环境变量。
- 由 kubelet 在为 Pod 拉取镜像时使用。
应用场景:凭据
官方网站:
1.2创建及使用
1.2.1基于文件形式
1.创建用户名和密码文件
[root@master ~]# echo -n 'admin' > username.txt ##创建username文件存放用户名admin;-n:不转行输出
[root@master ~]# echo -n '123456' > password.txt ##创建password文件存放密码123456
2.查看资源
[root@master ~]# kubectl create secret generic db-user-pass --from-file=username.txt --from-file=password.txt ##创以数据库形式的资源,以文件形式导入凭据存放
secret/db-user-pass created
[root@master ~]# k