了解如何创建 Secret 并将 Cloud Run for Anthos 服务和修订版本配置为使用该 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 设为对服务可用
您可以在部署新服务或更新现有服务并部署修订版本时使用 Google Cloud 控制台或 Google Cloud CLI 命令行工具来设置 Secret:
控制台
在 Google Cloud 控制台中转到 Cloud Run for Anthos:
如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本。
在高级设置下,点击变量和 Secret。
在“引用密钥”下,从下拉菜单中选择所需的 Secret。
- 在“引用方法”下拉菜单中,选择您要使用 Secret 的方法,即作为卷装载或作为环境变量公开。
- 如果您要使用作为卷装载,请指定路径,然后点击完成。
- 如果要作为环境变量公开:
- 提供变量的名称,并从“键”下拉菜单中选择相应的 Secret 值。
- 点击添加以添加其他 Secret 值。
- 提供变量的名称,并从“键”下拉菜单中选择相应的 Secret 值。
- 点击完成。
点击下一步以转到下一部分。
在配置此服务的触发方式部分,选择您想使用哪个连接来调用服务。
点击创建以将映像部署到 Cloud Run for Anthos,然后等待部署完成。
命令行
您可以使用 Google Cloud CLI 为新服务设置 Secret 或更新现有服务:
对于现有服务,请运行带有以下参数之一的
gcloud run services update
命令来更新 Secret:例如:
gcloud run 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 run deploy
命令来设置 Secret:gcloud run deploy 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"
- 将 IMAGE_URL 替换为对容器映像的引用,例如