使用 Secret

了解如何创建 Secret 并配置 Cloud Run for Anthos on Google Cloud 服务和修订版本以使用该 Secret。

服务的常见用例是通过用户名和密码访问第三方应用。对于 Google Kubernetes Engine,最佳做法是将此类敏感信息存储在 Kubernetes Secret 对象中。

为了让您的容器能够访问 Secret,您可以将每个 Secret 作为卷装载,使 Secret 中的条目以文件的形式可用于容器。您应该在装载密钥时装载 Secret,以确保在读取时获取每个 Secret 的最新版本。

您还可以使用环境变量传递 Secret。

创建 Secret

以下步骤仅展示如何创建 Secret,但您可以通过多种方式创建 Secret,如 Secret 主题中所述。

创建 Secret 时,请确保在运行 Cloud Run for Anthos 服务的集群所在的命名空间中创建。在这些示例中,将使用 default 命名空间。

如需在集群的 default 命名空间中创建 Secret,请使用以下命令:

  • 使用文件创建 Secret:

    echo -n 'devuser' > ./username.txt
    echo -n 'S!B\*d$zDsb' > ./password.txt
    kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt
    
  • 仅使用 kubectl 命令创建 Secret:

    kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'
    

将 Secret 设为对服务可用

在部署新的服务或更新现有服务并部署修订版本时,您可以使用 Cloud Console 或 gcloud 命令行工具设置 Secret:

控制台

  1. 转到 Cloud Run for Anthos on Google Cloud

  2. 如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本

  3. 在“高级设置”下,点击变量

    图片

  4. “引用密钥”下,从下拉菜单中选择所需的 Secret。

    • 在“引用方法”下拉菜单中,选择您要使用 Secret 的方法,即作为卷装载或作为环境变量公开。
    • 如果您要使用作为卷装载,请指定路径,然后点击完成
    • 如果要作为环境变量公开:
      1. 提供变量的名称,并从“键”下拉菜单中选择相应的 Secret 值。
      2. 点击添加以添加其他 Secret 值。
      3. 提供变量的名称,并从“键”下拉菜单中选择相应的 Secret 值。
      4. 点击完成

  5. 点击创建部署

命令行

您可以使用以下 gcloud kuberun 命令之一为新服务设置 Secret 或更新现有服务:

  • 对于现有服务,请运行带有以下参数之一的 gcloud kuberun core services update 命令来更新 Secret:

    例如:

    gcloud kuberun core services update SERVICE --update-secrets KEY1=VALUE1,KEY2=VALUE2
    

    您需要将其中的:

    • SERVICE 替换为您的服务名称。
    • KEY1=VALUE1,KEY2=VALUE2 替换为 Secret 的名称和值对的逗号分隔列表。对于每个 KEY,请指定以正斜杠 / 开头的路径,以将 Secret 作为文件装载。或者,您也可以不加正斜杠,将 Secret 作为环境变量装载。为每个 VALUE 指定 Secret 名称。如何指定多个参数
    • 命令参数选项

      如需指定多组键值对,您可以指定多个参数以确保可读性。示例:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
      
  • 对于新服务,请运行带有 --set-secrets 参数的 gcloud kuberun core services create 命令来设置 Secret:

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --set-secrets KEY1=VALUE1,KEY2=VALUE2
    

    您需要将其中的:

    • IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/myproject/my-image:latest
    • SERVICE 替换为您的服务名称。
    • KEY1=VALUE1,KEY2=VALUE2 替换为 Secret 的名称和值对的逗号分隔列表。对于每个 KEY,请指定以正斜杠 / 开头的路径,以将 Secret 作为文件装载。或者,您也可以不加正斜杠,将 Secret 作为环境变量装载。为每个 VALUE 指定 Secret 名称。如何指定多个参数
    • 命令参数选项

      如需指定多组键值对,您可以指定多个参数以确保可读性。示例:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"