Kubernetes 中使用 Secret 存储敏感信息

在 Kubernetes 中,Secret 是一种用于存储敏感信息的资源对象。它可以用于存储密码、API 密钥等敏感信息,并且可以在容器中使用它们,而不必将它们硬编码到应用程序中。

Secret 的类型

Kubernetes 中有两种类型的 Secret:generic 和 TLS。Generic Secret 用于存储任意类型的敏感信息,而 TLS Secret 用于存储 TLS 证书和私钥。

创建 Secret

要创建一个 Secret,可以使用 kubectl 命令或 YAML 文件进行定义。以下是一个示例 YAML 文件:

----------- --
----- ------
---------
  ----- --------
----- ------
-----
  --------- ------------
  --------- ------------

该 YAML 文件定义了一个名为 mysecret 的 Secret,其中包含了一个用户名和密码。注意,数据必须进行 base64 编码。

要使用 kubectl 命令创建 Secret,可以运行以下命令:

------- ------ ------ ------- -------- ------------------------------ ----------------------------------

在容器中使用 Secret

要在容器中使用 Secret,可以将其挂载为文件或环境变量。

挂载为文件

要将 Secret 挂载为文件,在 Pod 的 spec 中添加以下内容:

-----
  -----------
  - ----- -----------
    -------------
    - ----- ---------------
      ---------- -------------
      --------- ----
  --------
  - ----- ---------------
    -------
      ----------- --------

这将在容器的 /etc/mysecret 目录下创建一个名为 username 和 password 的文件,文件内容为 Secret 中的对应值。

挂载为环境变量

要将 Secret 挂载为环境变量,在容器的 spec 中添加以下内容:

-----
  -----------
  - ----- -----------
    ----
    - ----- --------
      ----------
        -------------
          ----- --------
          ---- --------
    - ----- --------
      ----------
        -------------
          ----- --------
          ---- --------

这将在容器中创建两个环境变量:USERNAME 和 PASSWORD,它们的值分别为 Secret 中的 username 和 password。

总结

Kubernetes 中的 Secret 可以用于存储敏感信息,并且可以在容器中使用它们,而不必将它们硬编码到应用程序中。本文介绍了 Secret 的类型、创建方法以及在容器中使用方法,希望能为大家带来帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d3f749add4f0e0ffc01478