如何在 Kubernetes 中使用 Secrets

Kubernetes 是一个用于容器编排和管理的开源平台,它可以帮助开发者轻松地部署和管理应用程序。在实际应用中,有时候需要在应用程序中使用一些敏感信息,比如密码、证书等,为了保证这些敏感信息的安全,Kubernetes 提供了一种称为 Secrets 的机制。

本文将介绍如何在 Kubernetes 中使用 Secrets。我们会从以下几个方面进行阐述:

  1. 什么是 Kubernetes Secrets
  2. 如何创建和使用 Kubernetes Secrets
  3. Secrets 机制的优势与不足

什么是 Kubernetes Secrets

Kubernetes Secrets 是一种用于存储和管理敏感信息的 Kubernetes 对象,它可以用于存储密码、OAuth 令牌、SSH 密钥、Docker 令牌等等。这些敏感信息被加密保存,只有授权的 Pod 才能够访问。

Kubernetes Secrets 所存储的敏感信息将被作为环境变量、容器卷或者 Docker 镜像等方式被暴露给 Pod。它们可以被用于支持应用程序的配置,或者用于访问其他云服务的 API。

如何创建和使用 Kubernetes Secrets

Kubernetes Secrets 可以通过 kubectl 命令行工具或者 Kubernetes API 来创建和管理。在本文中,我们会通过 kubectl 来演示如何创建和使用 Kubernetes Secrets。

创建 Secrets

首先,我们需要创建一个 Secrets 对象,可以使用 kubectl create secret 命令来创建,如下所示:

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

这个命令将创建一个名为 my-secret 的 Secret 对象,并将其中包含两个以字面值方式引入的敏感信息,即用户名和密码。

另外,我们也可以从文件中引入敏感信息。命令如下所示:

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

这个命令将创建一个名为 my-secret 的 Secret 对象,并将文件 my-app.properties 中的所有内容作为敏感信息。

使用 Secrets

当 Secrets 创建完成后,我们可以将它们引入 Pod 中,供应用程序使用。有多种方式可以做到这件事,在这里我们演示两种方式。

  • 环境变量

我们可以在 Pod 的配置文件中将 Secrets 导入环境变量中,供应用程序使用。例如,我们可以在 Pod 的配置文件中添加如下部分:

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

这个配置文件会将 my-secret 中的 username 和 password 分别导入为 MY_USERNAME 和 MY_PASSWORD 环境变量,供应用程序使用。

  • 挂载为文件

我们也可以将 Secrets 挂载为文件,供应用程序读取。例如,我们可以在 Pod 的配置文件中添加如下部分:

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

这个配置文件会将 my-secret 中的 username 和 password 分别挂载为 /etc/my-app/username.txt 和 /etc/my-app/password.txt 文件,供应用程序读取。

Secrets 机制的优势与不足

优势

  • 安全性

Kubernetes Secrets 使用加密的方式保存敏感信息,并只有授权的 Pod 才能访问,从而保证了存储敏感信息的安全性。

  • 灵活性

Kubernetes Secrets 可以以多种方式供应用程序使用,比如作为环境变量或者卷,从而使得应用程序的开发变得更加灵活。

不足

  • 证书过期

在 Kubernetes Secrets 中存储的证书需要手动进行更新,一旦证书过期,可能会造成一些安全隐患。

  • 不支持动态更新

Kubernetes Secrets 的更新需要手动进行操作。如果我们需要动态地更新密码或者 OAuth 令牌等信息,可能需要一些额外的工作,比如定制控制器等。

示例代码

在本文中,我们以使用环境变量的方式将 Secrets 引入 Pod 中为例,演示如何创建和使用 Kubernetes Secrets。下面是使用 Kubernetes Secrets 的示例代码:

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

在这个示例代码中,我们定义了一个名为 my-secret 的 Secrets 对象,其中包含了一个 username 和一个 password。之后,我们将 Secrets 对象引入到了 Deployments 对象中,其中的 container 通过使用环境变量的方式将 Secrets 引入到了应用程序中。

总结

Kubernetes Secrets 是一个用于存储和管理敏感信息的 Kubernetes 对象,它可以帮助软件开发者轻松地保护应用程序的安全性。本文介绍了如何创建和使用 Kubernetes Secrets,以及 Secrets 机制的优势和不足。同时,我们也提供了示例代码,帮助读者理解如何在 Kubernetes 中使用 Secrets。

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