总结:解决配置密码密钥等敏感数据的问题。 使用它可以避免以镜像或明文形式暴露这些敏感数据。 可以以环境变量的形式使用。
Secret解决了密码、令牌、密钥等敏感数据的配置问题。 机密可防止这些敏感数据以明文形式暴露给镜像或 Pod 规范。
Secret 可以用作卷变量或环境变量。
使用以下命令行创建机密。
kubectl 创建秘密通用 admin-access --from-file=./username.txt [k4 ]-from-file=./password.txt
输入文件username.txt和password.txt必须手动创建,用于测试的用户名和密码将被保留。 每人都有一个。
如果创建成功,你会看到secret类型是Opaque。
实际上有三个: Kubernetes Secret 类型:
1. 服务帐户:用于访问 Kubernetes API,由 Kubernetes 自动创建并自动放置在 pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中。
2. Opaque:用于以Base64编码格式存储秘密,例如密码和密钥。
3.kubernetes.io/dockerconfigjson:用于存储私有 Docker 注册表凭据。
由于我们刚刚创建的secret是Opaque类型,所以kubectl get Secrets的返回结果显示密码和用户名值都是ba。se64 编码:
在 pod 内使用此秘密也非常容易。 让我们举个例子:
apiVersion: v1kind: Podmetadata:name: Secret-podspec:restartPolicy: Nevervolumes:- name:credentialssecret:secretName: admin [k4 ] accessdefaultMode: 0440containers:- name: Secret-containerimage: alpine :3.8command: [ "/bin/sh", "-c", "cat /etc/foo/username.txt /etc /foo / password.txt" ]volumeMounts:- name:credentialsmountPath:"/etc/foo" readOnly: true
创建一个 pod,自动运行它,并使用 log 命令记录该 pod。将会显示。
我们看到/bin/sh命令被执行了。 cat 命令的输出显示在 pod 挂载目录 /etc/foo 中的 username.txt 和 password.txt 中。 :
获取更多Jerry原创文章,请关注公众号“王子熙”:
评论前必须登录!
注册