文章目录
Secret介绍
k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了。
Secret 类似于 ConfigMap 但专门用于保存机密数据。
Secret 类型
内置类型 | 用法 |
---|---|
Opaque | 用户定义的任意数据 |
kubernetes.io/service-account-tokensymotion | 服务账号令牌 |
kubernetes.io/dockercfg | ~/.dockercfg 文件的序列化形式 |
kubernetes.io/dockerconfigjson | ~/.docker/config.json 文件的序列化形式 |
kubernetes.io/basic-auth | 用于基本身份认证的凭据 |
kubernetes.io/ssh-auth | 用于 SSH 身份认证的凭据 |
kubernetes.io/tls | 用于 TLS 客户端或者服务器端的数据 |
bootstrap.kubernetes.io/token | 启动引导令牌数据 |
kubectl 创建类型
$ kubectl create secret dotfile -h
Create a secret with specified type.
A docker-registry type secret is for accessing a container registry.
A generic type secret indicate an Opaque secret type.
A tls type secret holds TLS certificate and its associated key.
Available Commands:
docker-registry Create a secret for use with a Docker registry
generic Create a secret from a local file, directory, or literal value
tls Create a TLS secret
docker-registry
: 连接私有镜像仓库的凭证generic
: 常见 secret, 该类型 secret 与 configmap 使用相同tls
: 提供 tls 证书, 在 service mesh 中自动挂载
Secret 使用
使用场景:
Opaque 类型 Secret 的使用
创建
1. kubectl create
$ kubectl create secret generic dotfile --from-literal=username=admin --from-literal=password=123456
$ kubectl get secret dotfile -oyaml
apiVersion: v1
data:
password: MTIzNDU2
username: YWRtaW4=
kind: Secret
metadata:
creationTimestamp: "2024-01-09T07:45:19Z"
name: dotfile
namespace: default
resourceVersion: "621858"
uid: ce3a3332-5b97-4af0-8312-ced355786e64
type: Opaque
$ echo -n "YWRtaW4=" | base64 -d
admin
2. yaml
以 yaml 方式创建需要你提前进行 base64
$ echo -n "admin" | base64
YWRtaW4=
$ echo -n "123456" | base64
MTIzNDU2
apiVersion: v1
kind: Secret
metadata:
name: dotfile
namespace: default
type: Opaque
data:
password