secret ================== secret用于存储一些安全相关的信息。 * Opaque:使用base64编码存储信息,可以通过base64 --decode解码获得原始数据。 从文件中创建Secret ---------------------- 分别创建两个名为username.txt和password.txt的文件 :: $ echo -n "admin" > ./username.txt $ echo -n "1f2d1e2e67df" > ./password.txt 使用kubectl create secret命令创建secret: $ kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt 使用描述文件创建Secret ------------------------ 首先使用base64对数据进行编码 :: $ echo -n 'admin' | base64 YWRtaW4= $ echo -n '123456' | base64 MTIzNDU2 创建一个类型为Secret的描述文件 :: apiVersion: v1 kind: Secret metadata: name: secret1 type: Opaque data: username: YWRtaW4= password: MTIzNDU2 $ kubectl create -f ./secret.yaml secret "secret1" created 查看此Secret :: $ kubectl get secret secret1 -o yaml Secret的使用 ------------- 创建好Secret之后,可以通过两种方式使用: * Volume方式 * 环境变量方式 将Secret挂载到Volume中 ----------------------- 挂载:: apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: nginx volumeMounts: - name: foo mountPath: "/data/" readOnly: true volumes: - name: foo secret: secretName: secret1 进入Pod查看挂载的Secret 将Secret设置为环境变量 ------------------------ 作为环境变量使用 :: apiVersion: v1 kind: Pod metadata: name: secret-env-pod spec: containers: - name: mycontainer image: nginx env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password restartPolicy: Never 需要注意的是,环境变量读取Secret很方便,但无法支持Secret动态更新。 参考资料 ------------