跳转至

使用密钥

密钥是一种用于存储和管理密码、OAuth 令牌、SSH、TLS 凭据等敏感信息的资源对象。使用密钥意味着您不需要在应用程序代码中包含敏感的机密数据。

使用场景

您可以在 Pod 中使用密钥,有多种使用场景,主要包括:

  • 作为容器的环境变量使用,提供容器运行过程中所需的一些必要信息。
  • 使用密钥作为 Pod 的数据卷。
  • 在 kubelet 拉取容器镜像时用作镜像仓库的身份认证凭证使用。

使用密钥设置容器的环境变量

您可以通过图形化界面或者终端命令行来使用密钥作为容器的环境变量。

Note

密钥导入是将密钥作为环境变量的值;密钥键值导入是将密钥中某一参数作为环境变量的值。

图形界面操作

在通过镜像创建工作负载时,您可以在环境变量界面通过选择密钥导入密钥键值导入为容器设置环境变量。

  1. 进入镜像创建工作负载页面。

    创建 deployment

  2. 容器配置选择环境变量配置,点击添加环境变量按钮。

    添加环境变量

  3. 在环境变量类型处选择密钥导入密钥键值导入

    密钥导入

    • 当环境变量类型选择为密钥导入时,依次输入变量名前缀密钥的名称。

    • 当环境变量类型选择为密钥键值导入时,依次输入变量名密钥的名称。

命令行操作

如下例所示,您可以在创建工作负载时将密钥设置为环境变量,使用 valueFrom 参数引用 Secret 中的 Key/Value。

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
            optional: false # (1)
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
            optional: false # (2)
  1. 此值为默认值;意味着 "mysecret",必须存在且包含名为 "username" 的主键
  2. 此值为默认值;意味着 "mysecret",必须存在且包含名为 "password" 的主键

使用密钥作为 Pod 的数据卷

图形界面操作

在通过镜像创建工作负载时,您可以通过在数据存储界面选择存储类型为密钥,将密钥作为容器的数据卷。

  1. 进入镜像创建工作负载页面。

    创建deployment

  2. 容器配置选择数据存储配置,在节点路径映射列表点击添加按钮。

    创建deployment

  3. 在存储类型处选择密钥,并依次输入容器路径子路径等信息。

命令行操作

下面是一个通过数据卷来挂载名为 mysecret 的 Secret 的 Pod 示例:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret
      optional: false # (1)
  1. 默认设置,意味着 "mysecret" 必须已经存在

如果 Pod 中包含多个容器,则每个容器需要自己的 volumeMounts 块,不过针对每个 Secret 而言,只需要一份 .spec.volumes 设置。

在 kubelet 拉取容器镜像时用作镜像仓库的身份认证凭证

您可以通过图形化界面或者终端命令行来使用密钥作为镜像仓库身份认证凭证。

图形化操作

在通过镜像创建工作负载时,您可以通过在数据存储界面选择存储类型为密钥,将密钥作为容器的数据卷。

  1. 进入镜像创建工作负载页面。

    创建deployment

  2. 在第二步容器配置时选择基本信息配置,点击选择镜像按钮。

    选择镜像

  3. 在弹框的镜像仓库下拉选择私有镜像仓库名称。关于私有镜像密钥创建请查看创建密钥了解详情。

    选择镜像

  4. 输入私有仓库内的镜像名称,点击确定,完成镜像选择。

Note

创建密钥时,需要确保输入正确的镜像仓库地址、用户名称、密码并选择正确的镜像名称,否则将无法获取镜像仓库中的镜像。

评论