内置类型
| Opaque | 用户定义的任意数据 |
|---|---|
| kubernetes.io/service-account-token | 服务账号令牌 |
| 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 | 启动引导令牌数据 |
generic 类型
创建
kubectl create secret generic db-user1 —from-literal=name=user1 —from-literal=password=123456
apiVersion: v1
kind: Secret
metadata:
name: db-user1
data:
name: dXNlcjE= # value 以 base64格式 编码
password: MTIzNDU2
使用文件
echo user2 > name.txt
echo 123456 > password.txt
kubectl create secret generic db-user2 —from-literal=name.txt —from-literal=password.txt
使用
pod env
apiVersion: v1kind: Podmetadata:name: pod-envspec:containers:- name: pod-env-bbimage: busyboxcommand: ["/bin/sh","-c","sleep 3600"]env:- name: my_namevalueFrom:secretKeyRef:name: db-user1key: name- name: my_pwdvalueFrom:secretKeyRef:name: db-user1key: password

pod 卷挂载
挂载全部
apiVersion: v1
kind: Pod
metadata:
name: pod-vol
spec:
volumes:
- name: db
secret:
secretName: db-user1
containers:
- name: pod-vol-bb
image: busybox
command: ["/bin/sh","-c","sleep 3600"]
volumeMounts:
- name: db
mountPath: /db-user

默认 key 对应文件名 , value 对应内容
挂载指定项
apiVersion: v1
kind: Pod
metadata:
name: pod-vol
spec:
volumes:
- name: db
secret:
secretName: db-user1
items:
- key: name
path: sql-name.txt # 相对 mountPath 目录下的文件名
containers:
- name: pod-vol-bb
image: busybox
command: ["/bin/sh","-c","sleep 3600"]
volumeMounts:
- name: db
mountPath: /db-user

dockerconfigjson 类型
创建用户 docker registry 认证的 Secret
kubectl create secret docker-registry XXX \
—docker-server=DOCKER_SERVER \
—docker-username=DOCKER_USER \
—docker-password=DOCKER_PASSWORD
kubectl create secret docker-registry harbor-secret —docker-server=xxx —docker-username=xxx—docker-password=xxx
apiVersion: v1
kind: Secret
metadata:
name: harbor-secret
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: eyJhdXRocyI6eyIyMC4wLjAuNzo4MDk5Ijp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6IjEyMzQ1NiIsImF1dGgiOiJZV1J0YVc0Nk1USXpORFUyIn19fQ==
创建 pod 时引入
apiVersion: v1
kind: Pod
metadata:
name: pod
spec:
containers:
- name: pod
image: 20.0.0.7:8099/ops/nginx:1.7.9
imagePullSecrets:
- name: harbor-secret
service-account-token 类型
用于被 ServiceAccount 引用
ServiceAccout 创建时 k8s 会默认创建对应的 Secret
Pod 如果使用 ServiceAccount,对应的 Secret 会自动挂载到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount/ 目录中

