升级
升级 Red Hat Advanced Cluster Security for Kubernetes
摘要
第 1 章 使用 Operator 升级 复制链接链接已复制到粘贴板!
根据您在安装时选择的 Update approval 选项,通过 Red Hat Advanced Cluster Security for Kubernetes (RHACS) Operator 升级会自动或手动执行。
升级时遵循以下准则:
- 如果 Central 的版本早于 3.74,则必须升级到 3.74,然后才能升级到 4.x 版本。有关将 Central 升级到 3.74 版本,请参阅版本 3.74 的升级文档。
-
当从版本 3.74 升级基于 Operator 的中心部署时,首先确保将 Operator 升级模式设置为
Manual
。然后,按照版本 4.0 的升级文档中的流程将 Operator 升级到 4.0,并确保 Central 在线。升级到 4.0 版本后,红帽建议将 Central 升级到最新版本以获取完整功能。
1.1. 准备升级 复制链接链接已复制到粘贴板!
在升级 Red Hat Advanced Cluster Security for Kubernetes (RHACS)版本前,请完成以下步骤:
- 如果您要从 3.74 版本升级,请验证您正在运行 RHACS Operator 3.74 的最新补丁版本。
- 备份现有的 Central 数据库。
-
如果您要升级的集群包含
SecuredCluster
自定义资源(CR),请将 collection 方法改为CORE_BPF
。如需更多信息,请参阅"删除集合方法"。
1.1.1. 更改集合方法 复制链接链接已复制到粘贴板!
如果要升级的集群包含 SecuredCluster
CR,您必须确保在升级前将每个节点集合设置设置为 CORE_BPF
。
流程
- 在 OpenShift Container Platform Web 控制台中进入 RHACS Operator 页面。
- 在顶部导航菜单中,选择 Secured Cluster。
- 点实例名称,如 stackrox-secured-cluster-services。
使用以下方法之一更改设置:
- 在 Form 视图中,在 Per Node Settings → Collector Settings → Collection 下,选择 CORE_BPF。
-
点 YAML 打开 YAML 编辑器并找到
spec.perNode.collector.collection
属性。如果值为KernelModule
或EBPF
,请将其改为CORE_BPF
。
- 点 Save。
1.2. 修改 Central 自定义资源 复制链接链接已复制到粘贴板!
Central DB 服务需要持久性存储。如果您还没有为 SSD 或高性能的 Central 集群配置默认存储类,您必须重新安装并配置 Central
自定义资源(CR),使用 Central DB 持久性卷声明(PVC)的存储类。
更改 storageClassName
时,由于 Kubernetes 存储层的限制,您无法在绑定后修改声明的存储类;因此您必须重新创建 Central CR。
如果您已经为 Central 配置了默认存储类,请跳过此部分。
1.3. 为外部数据库修改 Central 自定义资源 复制链接链接已复制到粘贴板!
先决条件
您必须在数据库实例中有一个支持 PostgreSQL 13 和具有以下权限的用户的数据库:
- 对数据库的连接权利。
-
schema 的
Usage
和Create
。 -
对 schema 中的所有表的
Select
,Insert
,Update
, 和Delete
权限。 -
对 schema 中所有序列的
Usage
。
流程
使用 OpenShift Container Platform Web 控制台或终端在部署的命名空间中创建密码 secret。
-
在 OpenShift Container Platform web 控制台中进入 Workloads → Secrets 页面。使用密钥
password
和值创建一个 Key/Value secret,作为纯文本文件的路径,其中包含调配数据库的超级用户密码。 或者,在终端中运行以下命令:
oc create secret generic external-db-password \ --from-file=password=<password.txt>
$ oc create secret generic external-db-password \
1 --from-file=password=<password.txt>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在 OpenShift Container Platform web 控制台中进入 Workloads → Secrets 页面。使用密钥
- 进入 OpenShift Container Platform Web 控制台中的 Red Hat Advanced Cluster Security for Kubernetes operator 页面。在顶部导航栏中选择 Central,再选择您要连接到数据库的实例。
- 进入 YAML 编辑器视图。
-
对于
db.passwordSecret.name
,请指定您在前面的步骤中创建的引用的 secret。例如,external-db-password
。 -
对于
db.connectionString
,以keyword=value
格式指定连接字符串,例如 host=<host> port=5432 database=stackrox user=stackrox sslmode=verify-ca
-
对于
db.persistence
,请删除整个块。 如果需要,您可以通过在顶层 spec 中添加 TLS 块来为 Central 指定证书颁发机构来信任数据库证书,如下例所示:
使用以下配置更新中央自定义资源:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您不能将
IsEnabled
的值改为Enabled
。
- 点击 Save。
1.4. 更改订阅频道 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台或使用命令行更改 RHACS Operator 的更新频道。要从 RHACS 3.74 升级到 RHACS 4.0,您必须更改更新频道。
您必须为安装 RHACS Operator 的所有集群更改订阅频道,包括 Central 和所有安全集群。
先决条件
- 您必须验证您是否正在使用最新的 RHACS 3.74 Operator,且没有待处理的手动 Operator 升级。
- 您必须验证您是否备份了 Central 数据库。
-
您可以使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群 Web 控制台。
1.4.1. 使用 Web 控制台更改订阅频道 复制链接链接已复制到粘贴板!
使用以下 Web 控制台更改订阅频道的说明:
流程
- 在 OpenShift Container Platform Web 控制台的 Administrator 视角中,进入 Operators → Installed Operators。
- 点 RHACS Operator。
- 点 Subscription 标签页。
- 点 Update Channel 下的更新频道的名称。
- 选择 stable,然后点 Save。
对于带有 自动批准策略 的订阅,更新会自动开始。返回到 Operators → Installed Operators 页面,以监控更新的进度。完成后,状态会变为 Succeeded 和 Up to date。
对于采用手动批准策略的订阅,您可以从 Subscription 选项卡中手动批准更新。
1.4.2. 使用命令行更改订阅频道 复制链接链接已复制到粘贴板!
使用命令行更改订阅频道的说明:
流程
运行以下命令,将订阅频道改为
stable
:oc -n rhacs-operator \ patch subscriptions.operators.coreos.com rhacs-operator \ --type=merge --patch='{ "spec": { "channel": "stable" }}'
$ oc -n rhacs-operator \
1 patch subscriptions.operators.coreos.com rhacs-operator \ --type=merge --patch='{ "spec": { "channel": "stable" }}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
在更新过程中,RHACS Operator 会置备一个名为 central-db
的新部署,您的数据开始迁移。它大约需要 30 分钟,且仅在升级后发生。
1.5. 回滚 Operator 升级 复制链接链接已复制到粘贴板!
要回滚 Operator 升级,您必须执行以下部分中描述的步骤。您可以使用 CLI 或 OpenShift Container Platform Web 控制台回滚 Operator 升级。
如果您要从 RHACS 4.0 回滚,则只能回滚到 RHACS 3.74 的最新补丁版本。
1.5.1. 使用 CLI 回滚 Operator 升级 复制链接链接已复制到粘贴板!
您可以使用命令行界面(CLI)命令回滚 Operator 版本。
流程
删除 Operator Lifecycle Manager (OLM)订阅和集群服务版本(CSV):
重要如果使用 Kubernetes,请输入
kubectl
而不是oc
。要删除 OLM 订阅,请运行以下命令:
oc -n rhacs-operator delete subscription rhacs-operator
$ oc -n rhacs-operator delete subscription rhacs-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
subscription.operators.coreos.com "rhacs-operator" deleted
subscription.operators.coreos.com "rhacs-operator" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除 CSV,请运行以下命令:
oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
$ oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
clusterserviceversion.operators.coreos.com "rhacs-operator.v4.8.4" deleted
clusterserviceversion.operators.coreos.com "rhacs-operator.v4.8.4" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
安装 RHACS Operator 的早期版本:
- 在 OpenShift Web 控制台中,点 OperatorHub。
- 搜索 Advanced Cluster Security for Kubernetes。
选择并安装 Operator 的早期版本。
注意安装之前的 Operator 版本将 RHACS 回滚到与 Operator 相同的版本。
1.5.2. 使用 Web 控制台回滚 Operator 升级 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台回滚 Operator 版本。
先决条件
-
您可以使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群 Web 控制台。
流程
- 在 OpenShift Web 控制台中,点 Operators → Installed Operators。
- 从项目列表中,选择 rhacs-operator。
找到 Advanced Cluster Security for Kubernetes Operator:
点 overflow 菜单
→ Uninstall Operator。
此时会显示 uninstall Operator 对话框。
- 确保删除此 Operator 复选框的所有操作对象实例 是明确的,以避免卸载 Red Hat Advanced Cluster Security for Kubernetes (RHACS)。
- 点 Uninstall。
安装早期版本的 RHACS Operator:
- 在 OpenShift Web 控制台中,点 OperatorHub。
- 搜索 Advanced Cluster Security for Kubernetes。
选择并安装 Operator 的早期版本。
注意安装之前的 Operator 版本将 RHACS 回滚到与 Operator 相同的版本。
1.6. Operator 升级问题故障排除 复制链接链接已复制到粘贴板!
按照以下步骤调查并解决 RHACS Operator 的与升级相关的问题。
1.6.1. 无法调度 Central 数据库 复制链接链接已复制到粘贴板!
在升级过程中,按照以下说明对 Central DB pod 进行故障排除:
检查
central-db
pod 的状态:oc -n <namespace> get pod -l app=central-db
$ oc -n <namespace> get pod -l app=central-db
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
如果 pod 的状态为
Pending
,请使用 describe 命令获取更多详细信息:oc -n <namespace> describe po/<central-db-pod-name>
$ oc -n <namespace> describe po/<central-db-pod-name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
您可能会看到
FailedScheduling
警告信息:Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 54s default-scheduler 0/7 nodes are available: 1 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }, 4 Insufficient cpu. preemption: 0/7 nodes are available: 3 Preemption is not helpful for scheduling, 4 No preemption victims found for incoming pod.
Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 54s default-scheduler 0/7 nodes are available: 1 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }, 4 Insufficient cpu. preemption: 0/7 nodes are available: 3 Preemption is not helpful for scheduling, 4 No preemption victims found for incoming pod.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此警告信息建议调度的节点没有足够的内存来满足 pod 的资源要求。如果您有一个小的环境,请考虑在节点上增加资源,或添加一个可以支持数据库的更大的节点。
否则,请考虑在
central
→db
→resources
下的自定义资源中减少central-db
pod 的资源要求。但是,运行比推荐最小值少的资源的中心可能会导致 RHACS 的性能降低。
1.6.2. Central 或 Secured 集群无法部署 复制链接链接已复制到粘贴板!
当 RHACS Operator 满足以下条件时,您必须检查自定义资源条件以查找问题:
- 如果 Operator 无法部署 Central 或 Secured Cluster
- 如果 Operator 无法将 CR 应用到实际资源
对于 Central,运行以下命令检查条件:
oc -n rhacs-operator describe centrals.platform.stackrox.io
$ oc -n rhacs-operator describe centrals.platform.stackrox.io
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
对于安全集群,运行以下命令检查条件:
oc -n rhacs-operator describe securedclusters.platform.stackrox.io
$ oc -n rhacs-operator describe securedclusters.platform.stackrox.io
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
您可以识别条件输出中的配置错误:
输出示例
另外,您可以查看 RHACS pod 日志以查找有关此问题的更多信息。运行以下命令来查看日志:
oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager
oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager
- 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
第 2 章 使用 Helm chart 升级 复制链接链接已复制到粘贴板!
您必须遵循 RHACS 的特定升级路径,具体取决于您运行的 RHACS 版本。在更新 Helm Chart 并执行升级前,还必须备份 Central 数据库。
如果您使用 Helm chart 安装 RHACS,要升级到最新版本的 RHACS,请执行以下步骤:
- 备份 Central 数据库。
- (可选)优化 Central 数据库和持久性卷声明(PVC)。
-
(可选)生成包含 central-services Helm Chart 的 root 证书的
values-private.yaml
配置文件。 - 更新 Helm Chart。
-
运行
helm upgrade
命令。
为确保最佳功能,您的 secure-cluster-services Helm Chart 和 central-services Helm Chart 需要使用相同的版本。
2.1. 备份 Central 数据库 复制链接链接已复制到粘贴板!
在基础架构灾难的情况下,您可以备份中心数据库,并使用该备份从失败的升级或数据恢复中回滚。
先决条件
-
您必须具有一个 API 令牌,其具有 Red Hat Advanced Cluster Security for Kubernetes 的所有资源的
read
权限。analysts 系统角色具有所有资源的read
权限。 -
已安装了
roxctl
CLI。 -
您已配置了
ROX_API_TOKEN
和ROX_CENTRAL_ADDRESS
环境变量。
流程
运行备份命令:
roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 优化 Central 数据库和 PVC 复制链接链接已复制到粘贴板!
当您升级到 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 4.0 时,RHACS 4.0 会创建一个名为 central-db
的 PostgreSQL 实例,它带有默认持久性卷声明(PVC)。另外,您可以自定义 central-db
或 PVC 配置。
红帽建议以下最小内存和 CPU 请求:
2.3. 生成 root 证书文件 复制链接链接已复制到粘贴板!
如果您无法访问用于安装 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的 values-private.yaml
配置文件,请使用以下指令来生成包含 root 证书的 values-private.yaml
配置文件。
如果可以访问 values-private.yaml
配置文件,请在此处跳过该指令。
生成的 values-private.yaml
文件具有敏感配置选项。确保您安全地存储这个文件。
流程
-
下载
create_certificate_values_file.sh
脚本。 使
create_certificate_values_file.sh
脚本可执行:chmod +x create_certificate_values_file.sh
$ chmod +x create_certificate_values_file.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
create_certificate_values_file.sh
脚本文件:create_certificate_values_file.sh values-private.yaml
$ create_certificate_values_file.sh values-private.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 更新 Helm Chart 仓库 复制链接链接已复制到粘贴板!
在升级到 Red Hat Advanced Cluster Security for Kubernetes 的新版本前,您必须始终更新 Helm chart。
先决条件
- 您必须已添加了 Red Hat Advanced Cluster Security for Kubernetes Helm Chart 仓库。
- 您必须使用 Helm 版本 3.8.3 或更新版本。
流程
更新 Red Hat Advanced Cluster Security for Kubernetes chart 软件仓库。
helm repo update
$ helm repo update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令来验证添加的 chart 存储库:
helm search repo -l rhacs/
$ helm search repo -l rhacs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 运行 Helm 升级命令 复制链接链接已复制到粘贴板!
您可以使用 helm upgrade
命令更新 Red Hat Advanced Cluster Security for Kubernetes (RHACS)。
先决条件
-
您必须有权访问用于安装 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的
values-private.yaml
配置文件。否则,您必须先生成包含 root 证书的values-private.yaml
配置文件,然后才能继续这些命令。
流程
运行 helm upgrade 命令并使用
-f
选项指定配置文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用
-f
选项指定 YAML 配置文件的路径。
helm upgrade -n stackrox stackrox-secured-cluster-services \ rhacs/secured-cluster-services --version <current-rhacs-version> \ -f values-private.yaml
$ helm upgrade -n stackrox stackrox-secured-cluster-services \ rhacs/secured-cluster-services --version <current-rhacs-version> \
1 -f values-private.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用
-f
选项指定 YAML 配置文件的路径。
您可以使用 --reuse-values
选项在升级过程中保留之前配置的 Helm 值。如果这样做,您必须在升级到下一个版本前关闭 central-db
创建。
请参见以下命令示例:
2.7. 回滚 Helm 升级 复制链接链接已复制到粘贴板!
如果升级到新版本失败,您可以回滚到较早版本的 Central。
流程
运行以下
helm upgrade
命令:helm upgrade -n stackrox \ stackrox-central-services rhacs/central-services \ --version <previous_rhacs_74_version> \ --set central.db.enabled=false
$ helm upgrade -n stackrox \ stackrox-central-services rhacs/central-services \ --version <previous_rhacs_74_version> \
1 --set central.db.enabled=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<previous_rhacs_74_version>
替换为之前安装的 RHACS 版本。
删除
central-db
持久性卷声明 (PVC):oc -n stackrox delete pvc central-db
$ oc -n stackrox delete pvc central-db
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
第 3 章 使用 roxctl CLI 手动升级 复制链接链接已复制到粘贴板!
您可以从受支持的旧版本升级到 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的最新版本。
-
只有在使用
roxctl
CLI 安装 RHACS 时,才需要执行手动升级步骤。 - 每个版本升级都有手动步骤,例如从 3.74 升级到 4.0,以及从版本 4.0 升级到 4.1。因此,红帽建议首先从 3.74 升级到 4.0,然后从 4.0 升级到 4.1,然后升级到 4.2,直到安装所选版本为止。对于完全功能,红帽建议升级到最新版本。
要将 RHACS 升级到最新版本,请执行以下步骤:
3.1. 备份 Central 数据库 复制链接链接已复制到粘贴板!
在基础架构灾难的情况下,您可以备份中心数据库,并使用该备份从失败的升级或数据恢复中回滚。
先决条件
-
您必须具有一个 API 令牌,其具有 Red Hat Advanced Cluster Security for Kubernetes 的所有资源的
read
权限。analysts 系统角色具有所有资源的read
权限。 -
已安装了
roxctl
CLI。 -
您已配置了
ROX_API_TOKEN
和ROX_CENTRAL_ADDRESS
环境变量。
流程
运行备份命令:
roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 升级 roxctl CLI 复制链接链接已复制到粘贴板!
要将 roxctl
CLI 升级到最新版本,您必须卸载 roxctl
CLI 的现有版本,然后安装 roxctl
CLI 的最新版本。
3.2.1. 卸载 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程卸载 Linux 上的 roxctl
CLI 二进制文件。
流程
查找并删除
roxctl
二进制文件:ROXPATH=$(which roxctl) && rm -f $ROXPATH
$ ROXPATH=$(which roxctl) && rm -f $ROXPATH
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 根据您的环境,您可能需要管理员删除
roxctl
二进制文件。
3.2.2. 在 Linux 中安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 Linux 上安装 roxctl
CLI 二进制文件。
用于 Linux 的 roxctl
CLI 可用于 amd
64、rm64、
ppc64le
和 s390x
架构。
流程
确定目标操作系统的
roxctl
架构:arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载
roxctl
CLI:curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Linux/roxctl${arch}"
$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Linux/roxctl${arch}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使
roxctl
二进制文件可执行:chmod +x roxctl
$ chmod +x roxctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
roxctl
二进制文件放到PATH
中的目录中:要查看您的
PATH
,请执行以下命令:echo $PATH
$ echo $PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您已安装的
roxctl
版本:roxctl version
$ roxctl version
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. 在 macOS 上安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 macOS 中安装 roxctl
CLI 二进制文件。
macOS 的 roxctl
CLI 可用于 amd64
和 arm64
架构。
流程
确定目标操作系统的
roxctl
架构:arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载
roxctl
CLI:curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Darwin/roxctl${arch}"
$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Darwin/roxctl${arch}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从二进制文件中删除所有扩展属性:
xattr -c roxctl
$ xattr -c roxctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使
roxctl
二进制文件可执行:chmod +x roxctl
$ chmod +x roxctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
roxctl
二进制文件放到PATH
中的目录中:要查看您的
PATH
,请执行以下命令:echo $PATH
$ echo $PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您已安装的
roxctl
版本:roxctl version
$ roxctl version
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.4. 在 Windows 上安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 Windows 上安装 roxctl
CLI 二进制文件。
用于 Windows 的 roxctl
CLI 可用于 amd64
架构。
流程
下载
roxctl
CLI:curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Windows/roxctl.exe
$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Windows/roxctl.exe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您已安装的
roxctl
版本:roxctl version
$ roxctl version
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 升级中央集群 复制链接链接已复制到粘贴板!
在创建了 Central 数据库的备份并使用置备捆绑包生成必要的资源后,下一步是升级 Central 集群。这个过程涉及升级 Central 和 Scanner。
3.3.1. 升级 Central 复制链接链接已复制到粘贴板!
您可以通过下载和部署更新的镜像,将 Central 更新到最新版本。
如果使用 Kubernetes,请输入 kubectl
而不是 oc
。
流程
要更新 Central 镜像,请运行以下命令:
oc -n stackrox set image deploy/central \ central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
$ oc -n stackrox set image deploy/central \ central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更新 Central-db 镜像,请运行以下命令:
oc -n stackrox set image deploy/central-db \ central-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.7.7 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.7.7
$ oc -n stackrox set image deploy/central-db \ central-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.7.7 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.7.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更新配置控制器镜像,请运行以下命令:
oc -n stackrox set image deploy/config-controller \ manager=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
$ oc -n stackrox set image deploy/config-controller \ manager=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证新 pod 是否已部署:
oc get deploy -n stackrox -o wide
$ oc get deploy -n stackrox -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. 升级扫描器 复制链接链接已复制到粘贴板!
您可以通过下载和部署更新的镜像将 Scanner 更新至最新版本。
如果使用 Kubernetes,请输入 kubectl
命令而不是 oc
命令。
流程
如果已创建了自定义 Scanner 配置,则必须在更新 Scanner 配置文件前应用这些更改:
要生成扫描器,请运行以下命令:
roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generate
$ roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要应用 TLS secret YAML 文件,请运行以下命令:
oc apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yaml
$ oc apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要应用 Scanner 配置 YAML 文件,请运行以下命令:
oc apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
$ oc apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要更新 Scanner 镜像,请运行以下命令:
oc -n stackrox set image deploy/scanner \ scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.7.7
$ oc -n stackrox set image deploy/scanner \ scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.7.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更新 Scanner 数据库镜像,请运行以下命令:
oc -n stackrox set image deploy/scanner-db \ db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.7.7 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.7.7
$ oc -n stackrox set image deploy/scanner-db \ db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.7.7 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.7.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证新 pod 是否已部署,请运行以下命令:
oc get deploy -n stackrox -o wide
$ oc get deploy -n stackrox -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2.1. 为 Scanner 部署编辑 GOMEMLIMIT 环境变量 复制链接链接已复制到粘贴板!
升级到版本 4.4 要求您手动将 GOMEMLIMIT
环境变量替换为 ROX_MEMLIMIT
环境变量。您必须为每个部署编辑此变量。
流程
运行以下命令来编辑 Scanner 部署的变量:
oc -n stackrox edit deploy/scanner
$ oc -n stackrox edit deploy/scanner
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
-
将
GOMEMLIMIT
变量替换为ROX_MEMLIMIT
。 - 保存该文件。
3.3.3. 验证 Central 集群升级 复制链接链接已复制到粘贴板!
在升级了 Central 和 Scanner 后,验证该中央集群升级已完成。
流程
运行以下命令检查 Central 日志:
oc logs -n stackrox deploy/central -c central
$ oc logs -n stackrox deploy/central -c central
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
成功升级的输出示例
3.4. 升级所有安全集群 复制链接链接已复制到粘贴板!
升级中部服务后,您必须升级所有安全的集群。
如果您使用自动升级:
- 使用自动升级来更新所有受保护的集群。
- 有关对自动集群升级器问题进行故障排除的详情,请参考 对集群升级进行故障排除。
- 跳过本节中的说明,并按照验证升级和撤销 API 令牌部分中的说明进行操作。
如果您不使用自动升级,则必须在包括 Central 集群在内的所有安全集群中运行本节中的说明。
- 为确保最佳功能,请为您的安全集群和安装 Central 的集群使用相同的 RHACS 版本。
要完成每个运行 Sensor、Collector 和 Admission Controller 的安全集群的手动升级,请按照本节中的说明操作。
3.4.1. 更新其他镜像 复制链接链接已复制到粘贴板!
在不使用自动升级时,您必须更新每个安全集群中的 sensor, collector 和 compliance 镜像。
如果使用 Kubernetes,请在此流程中列出的命令中使用 kubectl
而不是 oc
。
流程
更新 Sensor 镜像:
oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
更新 Compliance 镜像:
oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
更新 Collector 镜像:
oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.7.7
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.7.7
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
更新准入控制镜像:
oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您使用 roxctl
CLI 在 Red Hat OpenShift 上安装 RHACS,则需要迁移安全性上下文约束(SCC)。
如需更多信息,请参阅"添加资源"部分中的"手动升级过程中缓解 SCC"。
当从 4.6 之前的版本升级到 4.6 或更高版本时,您必须修补 sensor 和 admission-control 部署来设置 POD_NAMESPACE
环境变量。
如果使用 Kubernetes,请在此流程中列出的命令中使用 kubectl
而不是 oc
。
流程
修补 sensor 以确保设置了
POD_NAMESPACE
:[[ -z "$(oc -n stackrox get deployment sensor -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment sensor --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'
$ [[ -z "$(oc -n stackrox get deployment sensor -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment sensor --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,补丁 admission-control 以确保设置了
POD_NAMESPACE
:[[ -z "$(oc -n stackrox get deployment admission-control -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment admission-control --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'
$ [[ -z "$(oc -n stackrox get deployment admission-control -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment admission-control --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
3.4.3. 在手动升级过程中迁移 SCC 复制链接链接已复制到粘贴板!
通过使用 roxctl
CLI 在手动升级过程中迁移安全性上下文约束(SCC),您可以无缝转换 Red Hat Advanced Cluster Security for Kubernetes (RHACS)服务以使用 Red Hat OpenShift SCC,确保 Central 和所有安全的集群间的兼容性和最佳安全配置。
流程
列出在 Central 和所有安全集群中部署的所有 RHACS 服务:
oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,您可以看到每个 Pod 都有自己的自定义 SCC,这通过
openshift.io/scc
字段指定。添加所需的角色和角色绑定,以使用 Red Hat OpenShift SCC 而不是 RHACS 自定义 SCC。
要添加所需的角色和角色绑定,为 Central 集群使用 Red Hat OpenShift SCC,请完成以下步骤:
创建名为
update-central.yaml
的文件,该文件使用以下内容定义角色和角色绑定资源:运行以下命令,创建
update-central.yaml
文件中指定的角色和角色绑定资源:oc -n stackrox create -f ./update-central.yaml
$ oc -n stackrox create -f ./update-central.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要添加所需的角色和角色绑定,以便将 Red Hat OpenShift SCC 用于所有安全集群,请完成以下步骤:
创建名为
upgrade-scs.yaml
的文件,该文件使用以下内容定义角色和角色绑定资源:运行以下命令,创建
upgrade-scs.yaml
文件中指定的角色和角色绑定资源:oc -n stackrox create -f ./update-scs.yaml
$ oc -n stackrox create -f ./update-scs.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须在每个安全集群中运行此命令,以创建
upgrade-scs.yaml
文件中指定的角色和角色绑定。
删除特定于 RHACS 的 SCC:
要删除特定于 Central 集群的 SCC,请运行以下命令:
oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scanner
$ oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scanner
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除特定于所有安全集群的 SCC,请运行以下命令:
oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
$ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须在每个安全集群中运行此命令,才能删除特定于每个安全集群的 SCC。
验证
运行以下命令,确保所有 pod 都使用正确的 SCC:
oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将输出与下表进行比较:
Expand 组件 以前的自定义 SCC 新的 Red Hat OpenShift 4 SCC Central
stackrox-central
nonroot-v2
Central-db
stackrox-central-db
nonroot-v2
扫描程序
stackrox-scanner
nonroot-v2
Scanner-db
stackrox-scanner
nonroot-v2
Admission Controller
stackrox-admission-control
restricted-v2
Collector
stackrox-collector
privileged
Sensor
stackrox-sensor
restricted-v2
3.4.3.1. 编辑 Sensor 部署的 GOMEMLIMIT 环境变量 复制链接链接已复制到粘贴板!
升级到版本 4.4 要求您手动将 GOMEMLIMIT
环境变量替换为 ROX_MEMLIMIT
环境变量。您必须为每个部署编辑此变量。
流程
运行以下命令来编辑 Sensor 部署的变量:
oc -n stackrox edit deploy/sensor
$ oc -n stackrox edit deploy/sensor
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
-
将
GOMEMLIMIT
变量替换为ROX_MEMLIMIT
。 - 保存该文件。
3.4.3.2. 为 Collector 部署编辑 GOMEMLIMIT 环境变量 复制链接链接已复制到粘贴板!
升级到版本 4.4 要求您手动将 GOMEMLIMIT
环境变量替换为 ROX_MEMLIMIT
环境变量。您必须为每个部署编辑此变量。
流程
运行以下命令来编辑 Collector 部署的变量:
oc -n stackrox edit deploy/collector
$ oc -n stackrox edit deploy/collector
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
-
将
GOMEMLIMIT
变量替换为ROX_MEMLIMIT
。 - 保存该文件。
3.4.3.3. 编辑 Admission Controller 部署的 GOMEMLIMIT 环境变量 复制链接链接已复制到粘贴板!
升级到版本 4.4 要求您手动将 GOMEMLIMIT
环境变量替换为 ROX_MEMLIMIT
环境变量。您必须为每个部署编辑此变量。
流程
运行以下命令来编辑 Admission Controller 部署的变量:
oc -n stackrox edit deploy/admission-control
$ oc -n stackrox edit deploy/admission-control
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
-
将
GOMEMLIMIT
变量替换为ROX_MEMLIMIT
。 - 保存该文件。
3.4.3.4. 验证安全集群升级 复制链接链接已复制到粘贴板!
在升级了安全集群后,验证更新的 pod 是否正常工作。
流程
检查新 pod 是否已部署:
oc get deploy,ds -n stackrox -o wide
$ oc get deploy,ds -n stackrox -o wide
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watch
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
3.5. 使用 StackRox Scanner 启用 RHCOS 节点扫描 复制链接链接已复制到粘贴板!
如果使用 OpenShift Container Platform,您可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)启用扫描 Red Hat Enterprise Linux CoreOS (RHCOS)节点的扫描漏洞。
先决条件
- 要扫描安全集群的 RHCOS 节点主机,您必须在 OpenShift Container Platform 4.12 或更高版本上安装了安全的集群服务。有关支持的平台和架构的详情,请查看 Red Hat Advanced Cluster Security for Kubernetes 支持列表。有关 RHACS 的生命周期支持信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策。
- 这个步骤描述了如何首次启用节点扫描。如果您要将 Red Hat Advanced Cluster Security for Kubernetes 配置为使用 StackRox Scanner 而不是 Scanner V4,请按照 "使用 StackRox Scanner" 配置 RHCOS 节点扫描过程中的步骤进行操作。
流程
运行以下命令来更新合规性容器之一。
对于禁用了指标的默认合规容器,请运行以下命令:
oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于启用了 Prometheus 指标的合规性容器,请运行以下命令:
oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
通过执行以下步骤更新 Collector DaemonSet (DS):
运行以下命令,将新卷挂载添加到 Collector DS 中:
oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令添加新
NodeScanner
容器:oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.7.7","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.7.7","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 回滚 Central 复制链接链接已复制到粘贴板!
如果升级到新版本失败,您可以回滚到以前版本的 Central。
3.6.1. 正常回滚 Central 复制链接链接已复制到粘贴板!
如果升级 Red Hat Advanced Cluster Security for Kubernetes 失败,您可以回滚到以前版本的 Central。
先决条件
- 执行回滚前,持久性存储必须具有可用磁盘空间。Red Hat Advanced Cluster Security for Kubernetes 使用磁盘空间在升级过程中保留数据库副本。如果磁盘空间不足以存储副本,升级失败,您将无法回滚到较早的版本。
流程
当升级失败时( Central 服务启动前),运行以下命令回滚到以前的版本:
oc -n stackrox rollout undo deploy/central
$ oc -n stackrox rollout undo deploy/central
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
3.6.2. 强制回滚 Central 复制链接链接已复制到粘贴板!
您可以使用强制回滚回滚到较早版本的 Central (在 Central 服务启动后)。
使用强制回滚切换到以前的版本可能会导致数据丢失和功能。
先决条件
- 执行回滚前,持久性存储必须具有可用磁盘空间。Red Hat Advanced Cluster Security for Kubernetes 使用磁盘空间在升级过程中保留数据库副本。如果磁盘空间不足以存储副本,升级失败,您将无法回滚到较早的版本。
流程
运行以下命令来执行强制回滚:
要强制回滚到以前安装的版本:
oc -n stackrox rollout undo deploy/central
$ oc -n stackrox rollout undo deploy/central
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
强制回滚到特定版本:
编辑 Central 的
ConfigMap
:oc -n stackrox edit configmap/central-config
$ oc -n stackrox edit configmap/central-config
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl
而不是oc
。
更新
maintenance.forceRollbackVersion
键的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要回滚到的版本。
更新 Central 镜像版本:
oc -n stackrox \ set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<x.x.x.x>
$ oc -n stackrox \
1 set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<x.x.x.x>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. 验证升级 复制链接链接已复制到粘贴板!
更新的 Sensors 和 Collector 将继续从每个安全集群报告最新的数据。
在 RHACS 门户中可以看到 Sensor 最后联系 Central 的时间。
流程
- 在 RHACS 门户中,进入 Platform Configuration → System Health。
- 检查以确保 Sensor Upgrade 显示使用 Central 的集群最新。
3.8. 撤销 API 令牌 复制链接链接已复制到粘贴板!
为了安全起见,红帽建议您撤销用于完成 Central 数据库备份的 API 令牌。
先决条件
- 升级后,您必须重新加载 RHACS 门户页面并重新接受证书,以便继续使用 RHACS 门户。
流程
- 在 RHACS 门户中,进入 Platform Configuration → Integrations。
- 向下滚动到 Authentication Tokens 类别,然后点 API Token。
- 选中您要撤销的令牌名称前面的复选框。
- 点 Revoke。
- 在确认对话框中,点 Confirm。
3.9. 集群升级器故障排除 复制链接链接已复制到粘贴板!
如果您在为安全集群使用旧的安装方法并启用自动更新时遇到问题,您可以尝试对问题进行故障排除。当升级器失败时,集群视图中可以找到以下错误。
3.9.1. 升级器缺少权限 复制链接链接已复制到粘贴板!
症状
集群页面中会显示以下错误:
Upgrader failed to execute PreflightStage of the roll-forward workflow: executing stage "Run preflight checks": preflight check "Kubernetes authorization" reported errors. This usually means that access is denied. Have you configured this Secured Cluster for automatically receiving upgrades?"
Upgrader failed to execute PreflightStage of the roll-forward workflow: executing stage "Run preflight checks": preflight check "Kubernetes authorization" reported errors. This usually means that access is denied. Have you configured this Secured Cluster for automatically receiving upgrades?"
流程
- 在点 Download YAML 文件和密钥 之前,确保为安全集群生成的捆绑包启用了将来的升级。
- 如果可能,请删除该安全集群并生成一个新的捆绑包,以确保启用了将来的升级。
如果无法重新创建集群,您可以执行以下操作:
-
确保服务帐户
sensor-upgrader
存在于与 Sensor 相同的命名空间中。 -
确保存在 ClusterRoleBinding (默认 name: <
;namespace>:upgrade-sensors
),它将cluster-admin
ClusterRole 赋予sensor-upgrader
服务帐户。
-
确保服务帐户
3.9.2. 因为缺少镜像而无法启动 upgrader 复制链接链接已复制到粘贴板!
症状
集群页面中会显示以下错误:
"Upgrade initialization error: The upgrader pods have trouble pulling the new image: Error pulling image: (...) (<image_reference:tag>: not found)"
"Upgrade initialization error: The upgrader pods have trouble pulling the new image: Error pulling image: (...) (<image_reference:tag>: not found)"
流程
-
确保 Secured Cluster 可以访问 registry,并拉取镜像 <
image_reference:tag
>。 - 确保在安全集群中正确配置了镜像 pull secret。
3.9.3. 升级器因为未知原因无法启动 复制链接链接已复制到粘贴板!
症状
集群页面中会显示以下错误:
"Upgrade initialization error: Pod terminated: (Error)"
"Upgrade initialization error: Pod terminated: (Error)"
流程
- 确保 upgrader 有足够的权限来访问集群对象。如需更多信息,请参阅"Upgrader is missing permissions"。
- 查看 upgrader 日志以了解更多信息。
3.9.3.1. 获取升级器日志 复制链接链接已复制到粘贴板!
运行以下命令可以访问日志:
kubectl -n <namespace> logs deploy/sensor-upgrader
$ kubectl -n <namespace> logs deploy/sensor-upgrader
- 1
- 对于
<namespace
>,指定运行 Sensor 的命名空间。
通常,升级器部署只在进行升级时短时间内在集群中运行。稍后它会被删除,因此使用编配器 CLI 访问其日志可能需要适当的时间。