在 Kubernetes 中,Secret 是一种用于存储敏感数据的对象,如密码、API 密钥等。Secret 对象可以被挂载到容器中,以便容器可以访问这些敏感数据。本文将介绍 Kubernetes 中如何进行 Secret 的管理。
Secret 的类型
Kubernetes 中有两种类型的 Secret:
- Opaque:用于存储任意类型的数据,如密码、证书等。
- TLS:用于存储 TLS 证书和私钥。
创建 Secret
可以使用 kubectl 命令行工具或 YAML 文件创建 Secret。
使用 kubectl
使用 kubectl 命令行工具创建 Opaque 类型的 Secret:
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=password123
使用 kubectl 命令行工具创建 TLS 类型的 Secret:
kubectl create secret tls my-tls-secret --cert=path/to/tls.cert --key=path/to/tls.key
使用 YAML 文件
创建 Opaque 类型的 Secret 的 YAML 文件示例:
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: username: YWRtaW4= password: cGFzc3dvcmQxMjM=
其中,username 和 password 都是经过 base64 编码的字符串。
创建 TLS 类型的 Secret 的 YAML 文件示例:
apiVersion: v1 kind: Secret metadata: name: my-tls-secret type: kubernetes.io/tls data: tls.crt: base64-encoded-cert tls.key: base64-encoded-key
访问 Secret
可以将 Secret 挂载到 Pod 中的容器中,以便容器可以访问这些敏感数据。
挂载 Secret
在 Pod 中的容器中挂载 Secret 的 YAML 文件示例:
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image volumeMounts: - name: my-secret mountPath: /etc/my-secret readOnly: true volumes: - name: my-secret secret: secretName: my-secret
在上述 YAML 文件中,我们定义了一个名为 my-secret 的 Volume,并将其挂载到了容器的 /etc/my-secret 目录下。注意,这个 Volume 是通过 secret 类型指定的。
使用 Secret
在容器中使用 Secret 的示例代码:
const fs = require('fs'); const username = fs.readFileSync('/etc/my-secret/username', 'utf8'); const password = fs.readFileSync('/etc/my-secret/password', 'utf8'); // 使用 username 和 password 访问敏感数据
在上述代码中,我们通过读取 /etc/my-secret 目录下的文件来获取敏感数据。
总结
在 Kubernetes 中,Secret 是一种用于存储敏感数据的对象,可以被挂载到容器中,以便容器可以访问这些敏感数据。本文介绍了如何创建 Secret、如何将 Secret 挂载到容器中,并提供了使用 Secret 的示例代码。希望本文对您了解 Kubernetes 中的 Secret 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c1e95eadd4f0e0ffbe9307