manage create-rsi-patch

创建或更新资源规范注入 (RSI) 补丁。

扩展描述

您可以使用资源规范注入 (RSI) 来创建补丁,以定制 Cloud Pak for Data 环境中的 pod。

您必须是集群管理员或项目管理员才能运行此命令。

重要信息: 仅当您是 Red Hat® OpenShift® Container Platform上的高级用户时,才会创建 RSI 补丁。 您负责确保应用的任何补丁不会将问题引入到 Cloud Pak for Data 安装中。
您可以:
  • 创建 RSI 补丁时更新指定的 pod
  • 使用 apply-rsi-patches 命令可同时应用所有活动的 RSI 补丁。 有关详细信息,请参阅 apply-rsi-patches
应用 RSI 补丁时, RSI Webhook 会重新启动具有满足以下任一条件的相应 pod 选择器标签的任何 pod:
  • 具有过时补丁的 pod
  • 尚未修补的 Pod
提示: 如果您计划应用多个 RSI 补丁,那么批量应用 RSI 补丁的破坏性较小。 有关详细信息,请参阅 manage apply-rsi-patches
如果要创建新补丁,请指定以下选项:
  • --cpd_instance_ns
  • --description
  • --patch_name
  • --patch_spec
  • --patch_type
  • --selector
  • --skip_apply
  • --spec_format
  • --state
如果要更新现有补丁,那么指定的选项取决于您尝试执行的操作。 必须至少指定:
  • --cpd_instance_ns
  • --patch_name
您可以更改现有补丁的以下方面:
--description
您可以更新补丁的描述。
--patch_spec
您可以更改用于定义补丁的 JSON 文件的内容。
--state
您可以使补丁处于活动状态或不活动状态。
--selector
您可以更改应用补丁的 pod。

语法

cpd-cli manage enable-rsi \
--cpd_instance_ns=<project-name> \
--patch_name=<patch-name> \
[--patch_type=rsi_pod_env_var|rsi_pod_label|rsi_pod_annotation|rsi_pod_spec|rsi_pod_init_container|
rsi_pod_side_car_container] \
[--description=<patch-description>] \
[--patch_spec=/tmp/work/rsi/<patch-spec-JSON-file>] \
[--spec_format=json|json-merge|set-env] \
[--selector=<comma-separated-key-value-pairs-representing-the-match-labels>] \
[--state=active|inactive] \
[--skip_apply=true|false] \
[-vv][-vv][-vvv]

参数

enable-rsi 命令没有参数。

选项

选项 描述
--cpd_instance_ns 要在其中创建或更新补丁的项目 (名称空间)。 如果有任何项目与此项目绑定,那么补丁也将应用于绑定项目。
状态
必需。
语法
--cpd_instance_ns=<project-name>
缺省值
No default. User-defined.
有效值
要在其中创建 RSI 功能部件的项目的名称。 必须在此项目中安装 Cloud Pak for Data
--description 补丁的描述。

使用描述来描述补丁的用途和意图。

状态
可选。
语法
--description=<patch-description>
缺省值
No default.
有效值
描述。
--patch_name 要创建或更新的补丁的名称。
状态
必需。
语法
--patch_name=<patch-name>
缺省值
No default. User defined.
有效值
该名称必须遵循以下规则:
  • 不超过 50 个字符。
  • 仅包含小写字母数字字符,连字符 (-) 或句点 (.)。
  • 以字母数字字符开头和结尾。
--patch_spec 包含补丁的 JSON 文件。

将文件保存在 cpd-cli-workspace/olm-utils-workspace/work/rsi/ 目录中。

状态
需要此参数才能创建新补丁。
语法
--patch_spec=/tmp/work/rsi/<patch-spec-JSON-file>
缺省值
No default.
有效值
cpd-cli-workspace/olm-utils-workspace/work/rsi/ 格式指定 JSON 文件的名称: /tmp/work/rsi/<file-name.json>
--patch_type 要创建的补丁的类型。
状态
需要此参数才能创建新补丁。
语法
--patch_type=rsi_pod_env_var|rsi_pod_label|rsi_pod_annotation| rsi_pod_spec|rsi_pod_init_container| rsi_pod_side_car_container
缺省值
No default.
有效值
rsi_pod_env_var
指定此选项以将环境变量添加到 pod 容器。
rsi_pod_label
指定此选项以向 pod 添加标签。
rsi_pod_annotation
指定此选项以向 pod 添加注释。
rsi_pod_spec
指定此选项以将字段添加到 pod 的 spec 部分。
rsi_pod_init_container
4.6.4 或更高版本 此选项在 IBM Cloud Pak® for Data V 4.6.6 或更高版本中可用。
指定此选项以将 init 容器添加到 pod。
rsi_pod_side_car_container
4.6.4 或更高版本 此选项在 IBM Cloud Pak for Data V 4.6.6 或更高版本中可用。
指定此选项以将 sidecar 容器添加到 pod。
--selector 通过指定一个或多个 pod 标签来指定补丁将应用于哪些 pod。

如果指定多个标签,那么补丁将应用于具有所有标签的 pod。 例如,如果指定 app.kubernetes.io/component:zen-core,component:zen-core,那么补丁将应用于具有这两个标签的任何 pod ,即使它们具有其他标签也是如此。

状态
需要此参数才能创建新补丁。
语法
--selector=<comma-separated-key-value-pairs-representing-the-match-labels>
缺省值
No default.
有效值
指定集群中的一个或多个有效 pod 标签。 以逗号分隔列表形式分隔多个标签。
--skip_apply 指定 RSI Webhook 是等待应用补丁,还是立即应用补丁。
状态
可选。
语法
--skip_apply=true|false
缺省值
false

如果省略此选项,那么将使用缺省值。

有效值
false
强制 Webhook 立即应用补丁。
true
等待应用补丁。 下次运行 RSI cronjob 时或运行 apply-rsi-patches 命令时 (以先发生者为准) ,将应用该补丁。
--spec_format 补丁规范 JSON 文件的格式。
状态
可选。
语法
--spec_format=json|json-merge|set-env
缺省值
json-merge

如果省略此选项,那么将使用缺省值。

有效值
json
如果 --patch_spec JSON 文件包含应按顺序应用的补丁操作的 JSON 数组,请指定 json 。 例如:
[{"op":"add","path":"/metadata/labels/label-1","value":"value-1"}]

确保 json 补丁遵循 JavaScript 对象表示法 (JSON) 补丁 (RFC 6902) 标准。

json-merge
如果 --patch_spec JSON 文件包含 JSON pod 规范路径,请指定 json-merge 。 例如:
{"metadata":{"labels":{"label-1": "value-1"}}}

确保 json 补丁遵循 JSON 合并补丁 (RFC 7386) 标准。

set-env
如果 --patch_spec JSON 文件包含键/值对的 JSON 数组,请指定 set-env 。 例如:
[{"name": "env-var-1","value": "env-var-value-1"}]
限制: 仅当您正在创建 rsi_pod_env_var 补丁时,此选项才适用。
--state 指定补丁是否可由 RSI Webhook 应用。
状态
可选。
语法
--state=active|inactive
缺省值
active

如果省略此选项,那么将使用缺省值。

有效值
active
指定 active 以启用 Webhook 来应用补丁。
inactive
指定 inactive 以阻止 Webhook 应用补丁。
-v
-vv
-vvv
显示详细输出。

将列出从最不详细到最详细的选项。

状态
可选。
语法
Verbose 输出
-v
非常详细的输出
-vv
最详细的输出
-vvv
缺省值
Not applicable.
有效值
Not applicable.

示例

注: 以下示例使用建议的安装环境变量。

使用脚本为环境创建具有正确值的环境变量。 有关详细信息,请参阅 最佳实践: 设置安装变量

创建应用于 zen-core Pod 的新环境变量补丁
cpd-cli manage create-rsi-patch \
--cpd_instance_ns=${PROJECT_CPD_INSTANCE} \
--patch_type=rsi_pod_env_var \
--patch_name=sample-env-var-patch \
--patch_spec=/temp/work/rsi/zen-core-env-var.json \
--spec_format=json \
--selector=app.kubernetes.io/component:zen-core,component:zen-core \
--state=active
更新现有补丁以使其处于不活动状态
cpd-cli manage create-rsi-patch \
--cpd_instance_ns=${PROJECT_CPD_INSTANCE} \
--patch_name=my-pod-annotation-patch \
--state=inactive