Kubernetes 中如何进行 Secret 的管理

在 Kubernetes 中,Secret 是一种用于存储敏感数据的对象,如密码、API 密钥等。Secret 对象可以被挂载到容器中,以便容器可以访问这些敏感数据。本文将介绍 Kubernetes 中如何进行 Secret 的管理。

Secret 的类型

Kubernetes 中有两种类型的 Secret:

  1. Opaque:用于存储任意类型的数据,如密码、证书等。
  2. TLS:用于存储 TLS 证书和私钥。

创建 Secret

可以使用 kubectl 命令行工具或 YAML 文件创建 Secret。

使用 kubectl

使用 kubectl 命令行工具创建 Opaque 类型的 Secret:

使用 kubectl 命令行工具创建 TLS 类型的 Secret:

使用 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