Kubernetes第十二曲 配置管理------secret与configmap
一、secret概述
加密数据并存放在etcd中,让pod的容器以挂载volume方式访问
应用场景:凭据,身份令牌
官方文档:https://kubernetes.io/docs/concepts/configuration/secret/
Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。 将这些信息放在 secret 中比放在 Pod 的定义或者 容器镜像 中来说更加安全和灵活
Secret 是一种包含少量敏感信息例如密码、token 或 key 的对象。这样的信息可能会被放在 Pod spec 中或者镜像中;将其放在一个 secret 对象中可以更好地控制它的用途,并降低意外暴露的风险
1.1、 创建secret的方法
用户可以创建 secret,同时系统也创建了一些 secret。
①、内置secret
Service Account 使用 API 凭证自动创建和附加 secret
Kubernetes 自动创建包含访问 API 凭据的 secret,并自动修改您的 pod 以使用此类型的 secret。这样可以安全地访问apiserver
②、创建您自己的sercet
使用 kubectl 创建 Secret
比如有些pod需要访问数据库,这些pod需要使用的用户名和密码可以放到本地宿主机的文件里
资源参数写入到etcd中
如果有多个pod资源,都可以与一个secret建立关系
1.2 、使用secret的方法
要使用 secret,pod 需要引用 secret。
Pod 可以用两种方式使用 secret:
作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里;
当 kubelet 为 pod 拉取镜像时使用。
方式一:
[root@localhost demo]# echo -n 'admin' > ./username.txt
[root@localhost demo]# echo -n '1f2d1e2e67df' > ./password.txt
[root@localhost demo]# kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
secret/db-user-pass created
[root@localhost demo]# kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 61s
[root@localhost demo]# kubectl describe secret db-user-pass
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password.txt: 12 bytes
username.txt: 5 bytes
方式二:
[root@localhost demo]# echo -n 'admin' | base64
YWRtaW4=
[root@localhost demo]# echo -n '1f2d1e2e67df' | base64
MWYyZDFlMmU2N2Rm
[root@localhost demo]# vim secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
[root@localhost demo]#