base64
命令
Kubernetes 的 Secret 是使用 base64 进行编码的。以下是使用命令 base64
对字符串进行编码和解码的过程。
- 将字符串编码为 base64 格式。echo 的
-n
选项的用处是不在字符串后添加换行符
echo -n "hello" | base64
结果为
aGVsbG8=
- 将
base64
解码为字符串
echo -n "aGVsbG8=" | base64 -d
结果为
hello
1. 创建 Secret
-
data 和 stringData 的键必须由字母数字字符 ‘-’, ‘_’ 或者 ‘.’ 组成;
-
直接使用 base64 编码后的字符串;
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
- 使用
stringData
让 Kubernetes 自动生成 base64 字符串。并且 Kubernetes 会优先使用 stringData的数据。
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
stringData:
username: administrator
执行后查看结果如下,通过解码可见 username 为 administrator
apiVersion: v1
kind: Secret
metadata:
creationTimestamp: 2018-11-15T20:46:46Z
name: mysecret
namespace: default
resourceVersion: "7579"
uid: 91460ecb-e917-11e8-98f2-025000000001
type: Opaque
data:
username: YWRtaW5pc3RyYXRvcg==
2. 获取详细的 Secret
- 查看当前 Kubernetes 的所有 Secret 列表
kubectl get secrets
- 获取某个 Secret 内具体有哪些字段,这里不会显示具体内容
kubectl describe secrets/db-user-pass
结果如下
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password.txt: 12 bytes
username.txt: 5 bytes
- 获取完整的 Secret 信息。具体使用时,将
mysecret
替换为你想查看的 Secret。获取后将对应字段的 base64 字符串解码即可。
kubectl get secret mysecret -o yaml
示例如下:
apiVersion: v1
kind: Secret
metadata:
creationTimestamp: 2016-01-22T18:41:56Z
name: mysecret
namespace: default
resourceVersion: "164619"
uid: cfee02d6-c137-11e5-8d73-42010af00002
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm