1. Secret
1.1 Secret 概念
Secret 概念:
Secret 可以被用户创建在不同的 namespace 下
Secret 可以作为 volume 挂载到一个或多个容器上
Secret 还可以作为容器的环境变量使用
Secret 创建的内容都是经过 base64 编码后得到的
Secret 类型:
Opaque : base64 编码格式的 Secret ,用来存储密码、密钥等。都是通过 base64 编码和解码得到,加密行很弱
kubernetes.io/dockerconfigjson : 用来存储私有 docker registry 的认证信息
kubernetes.io/service-account-token : 用于被 serviceaccount 引用。serviceaccount 创建时 kubernetes 会默认创建对应的 secret 。pod 如果使用了serviceaccount,对应的 secret 会自动挂载到 Pod 的目录:/run/secret/kubernetes.io/serviceaccount
1.2
1. 查看创建 Secret 的命令帮助
--from-literal
选项
--from-file
选项kubectl create secret generic mysecret2 --from-file=./username.txt --from-file=./password.txt
--from-file
选项kubectl create secret generic mysecret3 --from-env-file=./env.txt
1.3 使用 yaml 文件创建 Secret
注意:
data 下 的 value 值 需要经过 base64 编码
stringData 下的 value 值 可以直接自定义字符串
1.4 P
Pod 中使用 Secret 有两种方式:
以卷的方式来挂载
主要用于传递配置文件
以变量的方式来挂载
主要用于给 Pod 传递环境变量
1. 以卷的方式挂载
将生成的 Secret 以 volume 挂载到 Pod 中,模板为:
说明:
就是将 mysecret1 的 value 映射到 /etc/foo/ 目录 中
目录下会有 secret 中定义的 key 作为文件名,value 作为文件内容
这种方式可以作为配置文件,直接传入到 pod 中
readOnly = true, 表示为只读
也可以只挂载 secret 中的一个 key-value,方法:
在
mountPath: "/etc/foo"
这里指定具体的key名称:mountPath: "/etc/foo/username"
将 Secret 键名映射到特定路径,模板为
说明:
username Secret 存储在 /etc/foo/my-group/my-username 文件中而不是 /etc/foo/username 中。
password Secret 存储在 /etc/foo/my-group/my-password 文件中而不是 /etc/foo/password 中。
items 只定义了两个 key-value,因此只挂载这两个,其余不挂载
2. 以环境变量的方式挂载
说明:
2. configMap
用来将非机密性的数据保存到健值对中,使用时可以用作环境变量、命令行参数或者存储卷中的配置文件。
2.1
kubectl create configmap --help
使用选项,与 secret 一样,这里不在赘述
--from-file
通过文件--from-env-file
通过配置文件--from-literal
通过 变量
例子:
2.2 P
configMap 在 Pod 中的使用,与 Secret 的相似,有两种方法:
volume
env 环境变量
模板为:
评论