本页面介绍了如何利用 Runtime Configurator 设置、获取和更新变量。变量是属于 RuntimeConfig 资源的键值对。每个键值对均包含您定义的数据。创建变量后,您可以设置其 watcher 或 waiter。
如需详细了解变量和 Runtime Configurator 服务,请参阅 Runtime Configurator 基础知识文档。
如需了解如何创建 RuntimeConfig 资源,请参阅创建和删除 RuntimeConfig 资源。
准备工作
- 如果要使用本指南中的命令行示例,请安装 “gcloud” 命令行工具。
- 如果希望使用本指南中的 API 示例,请设置 API 访问权限。
- 阅读 Runtime Configurator 基础知识。
- 阅读创建和删除 RuntimeConfig 资源。
创建变量
变量为键值对。变量键可以是平面的,也可以是分层的。例如,以下所有各项都是有效键:
status
users/jane-smith/favorite-color
users/total
只有叶节点键可以赋值。在以上示例中,您无法为以下项分配值:
users
users/jane-smith
这是因为这两个键下都包含其他键。
如需创建变量,请使用 Deployment Manager、Google Cloud CLI 或 API。
Deployment Manager
如需在 Deployment Manager 中创建变量,请指定变量类型:
runtimeconfig.v1beta1.variable
在变量的属性中,提供变量的 name
、location
和 value
:
- name: [NAME]
type: runtimeconfig.v1beta1.variable
properties:
parent: $(ref.[CONFIG_NAME].name)
variable: [VARIABLE_KEY]
[value | text]: [VARIABLE_VALUE]
其中:
[NAME]
是此变量的任意资源名称。这不是变量自身的名称。[CONFIG_NAME]
是此请求的配置资源。[VARIABLE_KEY]
是此变量的键。例如,status
和users/jane-smith/favorite_color
是有效的键。变量键可以包含/
。变量键可以包含数字、字母、短划线和斜线,名称的最大长度为 256 个字符。[VARIABLE_VALUE]
是此变量的值。根据您是要将值指定为明文还是以 based64 编码的字符串,请选择value
或text
属性:value
:如果要将值指定为以 base64 编码的字符串,请使用value
属性。text
:如果要提供明文字符串,请使用text
属性。 该字符串必须是有效的 UTF-8。
gcloud
如需使用 Google Cloud CLI 创建变量,请使用 runtime-config configs variables set
命令:
gcloud beta runtime-config configs variables set [VARIABLE_KEY] \
[VARIABLE_VALUE] --config-name [CONFIG_NAME] [--is-text]
其中:
[VARIABLE_KEY]
是此变量的键,例如,status
和users/jane-smith/favorite_color
是有效的键。变量键可以包含/
。变量键可以包含数字、字母、短划线和斜线,名称的最大长度为 256 个字符。[VARIABLE_VALUE]
是此变量的值。您可以将值指定为明文或以 base64 编码的字符串。如果指定明文值,请提供--is-text
标志;否则,Google Cloud CLI 将以 base64 编码对值进行编码。gcloud beta runtime-config configs variables set [VARIABLE_KEY] \ [VARIABLE_VALUE] --config-name [CONFIG_NAME] --is-text
您还可以通过文件提供变量值。例如:
cat [FILE_NAME] | gcloud beta runtime-config configs variables set [VARIABLE_KEY] --config-name [CONFIG_NAME]
注意:您不需要对此值进行编码,因为
gcloud
将为您进行编码。[CONFIG_NAME]
是应在其中创建此变量的 RuntimeConfig 资源的名称,例如frontend-config
。例如:
gcloud beta runtime-config configs variables set example-variable \ my-test-value --config-name example-config
gcloud CLI 会返回如下响应:
Created [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]].
默认情况下,任何现有变量将会被静默覆盖。如果要保留已存在的变量,请添加 --fail-if-present
标志,这会在变量不存在时才新建一个。
同样,您也可以通过提供 --fail-if-absent
标志来使缺失变量的请求失败。
如需查看此 gcloud
命令的完整参考,请阅读 runtime-config variables set
参考文档。
API
在 REST API 中,向以下 URI 发送 POST
请求以创建新变量:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables
其中,[PROJECT_ID]
是此请求的项目 ID。请求载荷包含指向 RuntimeConfig 资源的 URI 以及密钥的明文值或以 base64 编码的值:
{
"name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]"
"[value | text]": "[VARIABLE_VALUE]" # Choose either 'value' or 'text' but not both
}
其中:
[PROJECT_ID]
是此请求的项目 ID。[CONFIG_NAME]
是此配置的名称。[VARIABLE_KEY]
是此变量的键,例如status
和users/jane-smith/favorite_color
。变量键可以包含/
。变量键可以包含数字、字母、短划线和斜线,名称的最大长度为 256 个字符。[VARIABLE_VALUE]
是此变量的值。根据您是要将值指定为明文还是以 based64 编码的字符串,请选择value
或text
属性:value
:如果要将值指定为以 base64 编码的字符串,请使用value
属性。text
:如果要提供明文字符串,请使用text
属性。 该字符串必须是有效的 UTF-8。
如果成功,API 会返回如下响应:
{ "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]", "value": "dGVhbA==", "updateTime": "2016-04-11T21:49:00.773366134Z" }
如需详细了解该方法,请阅读
variables().create
文档。
更新变量
Deployment Manager
如需在 Deployment Manager 中更新变量,请执行以下操作:
gcloud
使用与创建变量相同的过程来更新变量。
API
在 REST API 中,向以下 URI 发送 PUT
请求以更新变量:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]
其中:
[PROJECT_ID]
是此请求的项目 ID。[CONFIG_NAME]
是此配置的名称。[VARIABLE_VALUE]
是此变量的值。这是以 base64 编码的字符串。
请求的载荷必须是:
{
"[value | text]": "[VARIABLE_VALUE]" # Choose either 'value' or 'text' but not both
}
其中,[VARIABLE_VALUE]
是此变量的值。根据您是要将值指定为明文还是以 based64 编码的字符串,请选择 value
或 text
属性:
value
:如果要将值指定为以 base64 编码的字符串,请使用value
属性。text
:如果要提供明文字符串,请使用text
属性。该字符串必须是有效的 UTF-8。
如果成功,API 会返回如下响应:
{ "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]", "value": "dGVhbA==", "updateTime": "2016-04-11T21:46:11.591713370Z", "state": "UPDATED" }
如需详细了解该方法,请阅读 variables().create
文档。
获取变量值
Deployment Manager
使用以下方法之一获取变量值:
gcloud
如需使用 Google Cloud CLI 创建变量,请使用 runtime-config configs variables get-value
命令:
gcloud beta runtime-config configs variables get-value [VARIABLE_KEY] --config-name [CONFIG_NAME]
其中:
[VARIABLE_KEY]
是此变量的键,例如status
和users/jane-smith/favorite_color
。[CONFIG_NAME]
是此变量的 RuntimeConfig 资源的名称,例如website
。gcloud CLI 会返回如下响应:
example-value
通过使用 list
并提供 --values
标志,您还可以获取自己拥有 runtimeconfig.variables.get
权限的变量及其值的列表。例如:
gcloud beta runtime-config configs variables list --config-name example-config --values
gcloud CLI 会返回如下列表:
NAME UPDATE_TIME VALUE
not-my-favorite-color/shade 2016-04-18T21:14:59.932428461Z orange
not-my-favorite-food/group 2016-04-18T21:14:59.932428461Z vegetables
您没有 get
权限的变量都不包含在内。这包括您拥有 list
权限但没有 get
权限的变量。
如需查看此 gcloud
命令的完整参考,请阅读 runtime-config variables
参考文档。
API
在 REST API 中,向以下 URI 发送 GET
请求以获取变量的值:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]
其中:
[PROJECT_ID]
是此请求的项目 ID。[CONFIG_NAME]
是此配置的名称。[VARIABLE_KEY]
是此请求的名称。
如果请求成功,API 返回的响应将带有以 base64 编码的变量值:
{ "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]", "value": "[VARIABLE_VALUE]", "updateTime": "2016-04-11T21:49:00.773366134Z" }
您必须自行对该值进行解码,才能获取该字符串。如需详细了解该方法,请阅读 variables().get
文档。
如果您希望获取自己拥有 runtimeconfig.variables.get
权限的变量及其值的列表,请使用 returnValues
方法。例如:
GET uri: https://runtimeconfig.googleapis.com/v1beta1/projects/myproject/configs/example-config/variables?returnValues=True
API 会返回您拥有权限的所有变量:
{
"variables": [
{
"name": "projects/compute-writers-project/configs/example-config/variables/not-my-favorite-color/shade",
"updateTime": "2016-04-18T21:14:59.932428461Z",
"value": "b3Jhbmdl"
}
]
}
同样,您必须自行对该值进行解码,才能获取该字符串。
如需详细了解该方法,请阅读 variables().list
文档。
后续步骤
- 了解 Runtime Configurator。
- 监视特定变量。
- 创建 Waiter。
- 创建和删除 RuntimeConfig 资源。
- 参阅 v1beta1 参考。
- 参阅 Runtime Configurator 配额。