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

服务的一个常见用例是使用 ConfigMap 将应用代码与配置分开。ConfigMap 类似于 Secret,不同之处在于,Secret 适用于敏感信息,ConfigMap 用于存储非敏感数据(例如连接字符串、公共凭据、主机名和网址等)。如需详细了解如何使用 ConfigMap,请参阅 Google Kubernetes Engine 文档

启用容器访问 ConfigMap 时,您可以选择以下某一选项:

  • 将 ConfigMap 作为卷进行装载,将 ConfigMap 条目作为该装载的卷中的文件。推荐这种做法,因为这样可确保您在读取 ConfigMap 时获得最新版本。
  • 使用环境变量传递 ConfigMap。

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

创建 ConfigMap

正如关于 ConfigMap 的 GKE 文档中所述那样,创建 ConfigMap 的方法有很多。 方便起见,我们采用以下步骤展示创建 ConfigMap 的简单方法。

创建 ConfigMap 时,请确保创建位置为运行 Cloud Run 服务的集群所在命名空间。本说明使用 default 命名空间。

您可以从命令行创建 ConfigMap:

kubectl create configmap name data

其中:

  • name 是 ConfigMap 对象的名称。
  • data 可以是:

    • 包含一个或多个配置文件的目录的路径,使用 --from-file 标志指示。
    • 键值对,每个键值对都使用 --from-literal 标志指定。

例如:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

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

将 ConfigMap 设为服务可用

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

控制台

  1. 转到 Cloud Run

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

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

    图片

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

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

  5. 点击创建部署

命令行

如需设置、更新、清除或移除现有服务的 ConfigMap,请使用 gcloud run services update 命令。您可以根据需要使用以下任意标志:

例如,使用以下命令添加或更新 ConfigMap:

gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2
  • SERVICE 替换为服务的名称。
  • KEY1=VALUE1,KEY2=VALUE2 替换为所需 config-maps 键名和值的列表(以英文逗号分隔)。

您还可以在部署期间使用以下命令设置 ConfigMap:

gcloud run deploy SERVICE --image IMAGE_URL --update-config-maps KEY1=VALUE1,KEY2=VALUE2

IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/myproject/my-image:latest