《每天5分钟玩转 Kubernetes》10 Secret

2018-12-13  本文已影响4人  SlowGO

Secret 用于保存敏感信息。

创建 secret

mysecret.yml

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
data:
  username: YWRtaW4=
  password: MTIzNDU2

其中 usernamepassword 的值都是 base64 编码后的值,编码方式:

echo -n admin | base64
YWRtaW4=

echo -n 123456 | base64
MTIzNDU2

启动:

kubectl apply -f mysecret.yml

查看 secret

kubectl get secrets mysecret

NAME       TYPE     DATA   AGE
mysecret   Opaque   2      22s

查看详情:

kubectl describe secrets mysecret

Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:
Type:         Opaque

Data
====
password:  6 bytes
username:  5 bytes

只能看到 key,看不到 value。

查看 value:

kubectl edit secrets mysecret
image

base64 解码:

echo -n YWRtaW4= | base64 --decode

admin

pod 中使用 secret

配置文件 mypod-secret.yml:

apiVersion: v1
kind: Pod
metadata:
  name: mypod-secret
spec:
  containers:
    - name: mypod-secret
      image: busybox
      args:
      - /bin/sh
      - -c
      - sleep 10; touch /tmp/healthy; sleep 30000
      volumeMounts:
      - mountPath: "/etc/foo"
        name: foo
        readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

启动:

kubectl apply -f mypod-secret.yml

进入 pod 查看 secret:

kubectl exec -it mypod-secret sh
image

可以看到,每个 key 都被创建成了一个文件,value 以明文保存。

secret 动态更新

以 volume 方式使用 secret 支持动态更新,secret 更新后,容器中的数据也会更新。

把 password 改为 ‘111111’,编码:

echo -n 111111 | base64

MTExMTEx

修改 yaml 配置文件 mysecret.yml 中的 password:

...
  password: MTExMTEx

更新配置:

kubectl apply -f mysecret.yml

进入 pod 查看:

kubectl exec -it mypod-secret sh

/ # cat /etc/foo/password
111111

已经更新了。

上一篇下一篇

猜你喜欢

热点阅读