本文主要是介绍Kubernetes 中Secret,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1、创建 Secret
- 1.1、通过 kubectl 命令行创建(例如,基于明文)
- 1.2、通过 YAML 配置文件创建
- 2、使用 Secret
- 2.1、作为文件挂载
- 2.2、作为环境变量
- 3、注意事项
在 Kubernetes 中,Secret 是一种用来存储敏感信息的对象,如密码、OAuth 令牌和 SSH 密钥等。Secret 允许你将这些敏感数据安全地传递给 Pods 中的容器,而无需在配置文件或镜像中硬编码这些信息。Kubernetes 会对 Secret 数据进行加密存储,并在使用时解密。
1、创建 Secret
你可以通过多种方式创建 Secret,以下是两种常见的方法:
1.1、通过 kubectl 命令行创建(例如,基于明文)
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secretpassword
这会创建一个名为 my-secret
的 Secret,其中包含了两个键值对(username 和 password)。
1.2、通过 YAML 配置文件创建
对于更复杂的 Secret 或需要版本控制的情况,通常推荐使用 YAML 文件定义 Secret:
apiVersion: v1
kind: Secret
metadata:name: my-secret
type: Opaque # 默认类型,适用于不加密的密钥
data:username: YWRtaW4= # base64 编码的 "admin"password: c2VjcmV0cGFzc3dvcmQ= # base64 编码的 "secretpassword"
注意,数据字段需要 base64 编码。你可以使用 echo -n "your_value" | base64
命令进行编码。
2、使用 Secret
在 Pod 定义中,你可以通过 volume 或 environment variables 将 Secret 挂载到容器中:
2.1、作为文件挂载
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagevolumeMounts:- name: secret-volumemountPath: /var/secretsreadOnly: truevolumes:- name: secret-volumesecret:secretName: my-secret
2.2、作为环境变量
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: USERNAMEvalueFrom:secretKeyRef:name: my-secretkey: username- name: PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: password
3、注意事项
- 尽管 Secret 数据在 etcd 中以加密形式存储,但在使用过程中(例如,挂载为文件时),它们是以明文形式存在的,因此仍然需要确保 Pod 的安全性和隔离性。
- Secret 类型除了
Opaque
外,还有kubernetes.io/tls
和kubernetes.io/dockerconfigjson
等特殊类型,分别用于 TLS 证书和 Docker 登录凭据。 - 考虑使用外部 Secrets 管理解决方案,如 HashiCorp Vault,以增强安全性。
这篇关于Kubernetes 中Secret的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!