了解如何创建 ConfigMap,然后将 Knative serving 服务和修订版本配置为使用该 ConfigMap。
服务的一个常见用例是使用 ConfigMap 将应用代码与配置分开。ConfigMap 类似于密文,但不同之处在于您使用密文存储敏感信息,但使用 ConfigMap 存储非敏感数据,例如连接字符串、公共凭据、主机名和网址。您可以在 Google Kubernetes Engine 文档中详细了解如何使用 ConfigMap。
启用容器访问 ConfigMap 时,您可以选择以下某一选项:
- 将 ConfigMap 作为卷进行装载,将 ConfigMap 条目作为该装载的卷中的文件。推荐这种做法,因为这样可确保您在读取 ConfigMap 时获得最新版本。
- 使用环境变量传递 ConfigMap。
创建 ConfigMap
如 GKE 文档的 ConfigMaps 页面中所述,您可以通过多种方式创建 ConfigMap。方便起见,我们采用以下步骤展示创建 ConfigMap 的简单方法。
创建 ConfigMap 时,请确保在与运行 Knative serving 服务的集群所在的命名空间中创建。本说明使用 default
命名空间。
您可以从命令行创建 ConfigMap:
kubectl create configmap NAME DATA
您需要将其中的:
- NAME 是 ConfigMap 对象的名称。
DATA 可以是以下任意一项:
- 包含一个或多个配置文件的每个目录的
--from-file
标志和路径。 - 要添加到 ConfigMap 的每一项的
--from-literal
标志和键值对。
- 包含一个或多个配置文件的每个目录的
例如:
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
创建 ConfigMap 并将其上传到 default
命名空间中可用于集群的位置。
将 ConfigMap 设为服务可用
创建 ConfigMap 后,在您部署新的服务或者更新现有服务并部署修订版本时,可以使用 Google Cloud 控制台或 Google Cloud CLI 将该 ConfigMap 作为卷或环境变量提供给 Knative serving 服务:
控制台
在 Google Cloud 控制台中前往 Knative serving:
如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本。
在高级设置下,点击变量和 Secret。
在“引用 ConfigMap”下,从下拉菜单中选择所需的 ConfigMap。
- 在“引用方法”下拉菜单中,选择要使用 ConfigMap 的方式(以卷的形式装载或作为环境变量公开)。
- 如果您要使用作为卷装载,请指定路径,然后点击完成。
- 如果作为环境变量公开:
- 请提供变量的名称,并从“键”下拉菜单中选择相应的 ConfigMap 值。
- 点击添加以添加其他 ConfigMap 值。
- 请提供变量的名称,并从“键”下拉菜单中选择相应的 ConfigMap 值。
- 点击完成。
点击下一步以转到下一部分。
在配置此服务的触发方式部分,选择您想使用哪个连接来调用服务。
点击创建以将映像部署到 Knative serving,然后等待部署完成。
命令行
您可以使用 Google Cloud CLI 为新服务设置 ConfigMap 或更新现有服务:
对于现有服务,请运行具有以下参数之一的
gcloud run services update
命令来更新 ConfigMap:示例:
gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2
您需要将其中的:
- 将 SERVICE 替换为您的服务名称。
- 将 KEY1=VALUE1,KEY2=VALUE2 替换为对应每个 ConfigMap 的以英文逗号分隔的名称和键值对列表。您可以为每个 KEY 指定装载路径,或提供环境变量。使用正斜杠
/
开头来指定装载路径。所有其他键均对应于环境变量。请为每个 VALUE 指定 ConfigMap 名称。如何指定多个参数。
命令参数选项
如需指定多组键值对,您可以指定多个参数以确保可读性。示例:[...] --update-config-maps "KEY=VALUE1" \ --update-config-maps "KEY=VALUE2" \ --update-config-maps "KEY=VALUE3"
对于新服务,请运行带有
--set-config-maps
参数的gcloud run deploy
命令来设置 ConfigMap:gcloud run deploy SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2
您需要将其中的:
- 将 IMAGE_URL 替换为对容器映像的引用,例如
gcr.io/cloudrun/hello
。 - 将 SERVICE 替换为您的服务名称。
- 将 KEY1=VALUE1,KEY2=VALUE2 替换为对应每个 ConfigMap 的以英文逗号分隔的名称和键值对列表。您可以为每个 KEY 指定装载路径,或提供环境变量。使用正斜杠
/
开头来指定装载路径。所有其他键均对应于环境变量。请为每个 VALUE 指定 ConfigMap 名称。如何指定多个参数。
命令参数选项
如需指定多组键值对,您可以指定多个参数以确保可读性。示例:[...] --update-config-maps "KEY=VALUE1" \ --update-config-maps "KEY=VALUE2" \ --update-config-maps "KEY=VALUE3"
- 将 IMAGE_URL 替换为对容器映像的引用,例如