在 Cloud Run for Anthos on Google Cloud 集群中使用 Secret

服务的一个常见使用场景是访问提供用户名和密码的第三方应用。对于 Kubernetes,最佳做法是将这种类型的 Secret 信息存储在 Kubernetes Secret 对象中。如需详细了解如何使用 Secret,请参阅 Kubernetes Secret 文档

启用容器访问 Secret 后,您可以选择以下选项之一:

  • 将 Secret 作为卷装载,并且 Secret 条目在已装载的卷中可作为文件使用。这是推荐做法,因为它可确保您在读取 Secret 时获得最新版本的 Secret。
  • 使用环境变量传递 Secret

本页面介绍了如何创建 Secret,以及如何配置 Cloud Run for Anthos on Google Cloud 来使用该 Secret。

创建 Secret

有关 Secret 的 Kubernetes 文档中所述,可以通过多种方式创建 Secret。为方便起见,以下步骤展示了创建 Secret 的简单方法。

创建 Secret 时,请确保在与运行 Cloud Run 服务的集群相同的命名空间中创建 Secret。在这些说明中,将使用 default 命名空间。

您可以使用文件创建 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 create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'

创建此 Secret 并将其上传到 default 命名空间中可用于集群的位置。

将 Secret 设为对服务可用

创建 Secret 后,您可以使用在创建新服务部署新修订版本时使用的 Cloud Console 或 gcloud 命令行将 Cloud Run 服务作为卷或环境变量提供给 Cloud Run 服务。

控制台

  1. 转到 Cloud Run

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

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

    图片

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

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

  5. 点击创建部署

命令行

要为新服务设置、更新、清除或移除 Secret,请使用 gcloud run deploy 命令。您可以根据需要使用以下任意标志:

例如,要添加或更新 Secret,从而将其设为对 Cloud Run 服务可用,请指定要装载或者要作为环境变量提供的 Secret:

gcloud run deploy SERVICE --update-secrets KEY1=VALUE1,KEY2=VALUE2
  • SERVICE 替换为服务的名称。
  • KEY1=VALUE1,KEY2=VALUE2 替换为所需 Secret 键名和值的列表(以英文逗号分隔)。以正斜杠“/”开头的键是装载路径。所有其他键均对应于环境变量。

您还可以使用 gcloud beta run services update 命令在现有服务中设置、更新、清除或移除密钥。您可以根据需要使用以下任意标志:

gcloud beta run services update SERVICE --image IMAGE_URL --update-secrets KEY1=VALUE1,KEY2=VALUE2

替换

  • IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/myproject/my-image:latest
  • KEY1=VALUE1,KEY2=VALUE2 替换为所需 Secret 键名和值的列表(以英文逗号分隔)。以正斜杠“/”开头的键是装载路径。所有其他键均对应于环境变量。