升级
升级 Red Hat Advanced Cluster Security for Kubernetes
摘要
第 1 章 使用 Operator 升级 复制链接链接已复制到粘贴板!
根据您在安装时选择的 Update approval 选项,通过 Red Hat Advanced Cluster Security for Kubernetes (RHACS) Operator 进行自动或手动升级。
升级时遵循以下准则:
- 如果 Central 的版本早于 3.74,则必须在升级到 4.x 版本前升级到 3.74。有关将 Central 升级到 3.74 版本,请参阅升级文档 3.74。
-
当从 3.74 升级基于 Operator 的 Central 部署时,首先确保 Operator 升级模式设置为
Manual。然后,按照版本 4.0 的升级文档中的步骤将 Operator 升级到 4.0 版本,并确保 Central 在线。升级到 4.0 版本后,红帽建议将 Central 升级到最新版本以获得完整功能。
1.1. 准备升级 复制链接链接已复制到粘贴板!
在升级 Red Hat Advanced Cluster Security for Kubernetes (RHACS)版本前,您必须执行以下步骤:
- 验证您是否正在运行 RHACS Operator 3.74 的最新补丁版本。
- 备份现有的 Central 数据库。
-
如果要升级的集群包含
SecuredCluster自定义资源(CR),请将集合方法改为 EBPF 或 CORE_BPF。如需更多信息,请参阅"更改集合方法"。
1.1.1. 将集合方法改为 EBPF 或 CORE_BPF 复制链接链接已复制到粘贴板!
如果要升级的集群包含 SecuredCluster CR,您必须确保每个节点集合设置没有设置为 KernelModule。如果将集合设置为 KernelModule,请将其改为 EBPF 或 CORE_BPF。CORE_BPF 在版本 4.1 及更高版本中提供。EBPF 是集合的首选值,除非有特定原因使用 CORE_BPF。
流程
- 在 OpenShift Container Platform web 控制台中进入 RHACS Operator 页面。
- 在顶部导航菜单中,选择 Secured Cluster。
- 点实例名称,如 stackrox-secured-cluster-services。
使用以下方法之一:
- 在 Form view 中,在 Per Node Settings → Collector Settings → Collection 下,选择 EBPF 或 CORE_BPF。
-
点 YAML 打开 YAML 编辑器,并找到
spec.perNode.collector.collection属性。如果值为KernelModule,请将其改为EBPF或CORE_BPF。
- 点 Save。
1.2. 修改 Central 自定义资源 复制链接链接已复制到粘贴板!
Central DB 服务需要持久性存储。如果您还没有为作为 SSD 或高性能的 Central 集群配置默认存储类,您必须更新 Central 自定义资源来为 Central DB 持久性卷声明 (PVC) 配置存储类。
如果您已经为 Central 配置了默认存储类,请跳过此部分。
流程
- 使用以下配置更新中央自定义资源:
1.3. 为外部数据库修改 Central 自定义资源 复制链接链接已复制到粘贴板!
外部 PostgreSQL 支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
您必须在数据库实例中有一个支持 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 控制台。
使用 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 选项卡中手动批准更新。
使用命令行更改订阅频道
使用命令行更改订阅频道的说明:
流程
运行以下命令,将订阅频道改为
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. 升级到 4.1 及之后的版本后,删除 Central 附加 PV 复制链接链接已复制到粘贴板!
Kubernetes 和 OpenShift Container Platform 不自动删除持久性卷(PV)。当您从早期版本升级 RHACS 时,名为 stackrox-db 的 Central PV 会保留挂载。但是,在 RHACS 4.1 中,Central 不再需要之前附加的 PV。
PV 具有之前 RHACS 版本使用的数据和持久性文件。您可以使用 PV 在 RHACS 4.1 之前回滚到更早的版本。或者,如果您有一个用于 Central 的大型 RocksDB 备份捆绑包,您可以使用 PV 恢复这些数据。
完成升级到 4.1 后,您可以删除 Central 附加的持久性卷声明(PVC)来释放存储。仅当没有计划从之前的 RocksDB 备份回滚或恢复时,才删除 PVC。
删除 PVC 后,您无法在 RHACS 4.1 之前将 Central 回滚到早期版本,或恢复使用 RocksDB 创建的大型 RocksDB 备份。
删除 Central 附加持久性卷声明(PVC) stackrox-db 以释放存储空间。
流程
在 Central 中添加以下注解:
annotations: platform.stackrox.io/obsolete-central-pvc: "true"
annotations: platform.stackrox.io/obsolete-central-pvc: "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令:
oc -n stackrox describe pvc stackrox-db | grep -i 'Used By'
$ oc -n stackrox describe pvc stackrox-db | grep -i 'Used By' Used By: <none>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 等待您看到过的 By:
<none>。它可能需要几分钟时间。
1.6. 回滚 Operator 升级 复制链接链接已复制到粘贴板!
要回滚 Operator 升级,您必须执行以下部分中描述的步骤。您可以使用 CLI 或 OpenShift Container Platform Web 控制台回滚 Operator 升级。
如果您要从 RHACS 4.0 回滚,则只能回滚到 RHACS 3.74 的最新补丁版本。
1.6.1. 使用 CLI 回滚 Operator 升级 复制链接链接已复制到粘贴板!
您可以使用 CLI 命令回滚 Operator 版本。
流程
运行以下命令来删除 OLM 订阅:
对于 OpenShift Container Platform,运行以下命令:
oc -n rhacs-operator delete subscription rhacs-operator
$ oc -n rhacs-operator delete subscription rhacs-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl -n rhacs-operator delete subscription rhacs-operator
$ kubectl -n rhacs-operator delete subscription rhacs-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令来删除集群服务版本 (CSV):
对于 OpenShift Container Platform,运行以下命令:
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-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
$ kubectl -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
通过选择以下选项之一来确定您要回滚到的早期版本:
如果当前 Central 实例正在运行,请运行以下命令查询 RHACS API 以获取回滚版本:
curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackTo
$ curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackToCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果当前 Central 实例没有运行,请执行以下步骤:
注意这个过程只能在安装
rocksdb数据库时用于 RHACS 版本 3.74 及更早版本。运行以下命令,确保 Central 部署已缩减:
对于 OpenShift Container Platform,运行以下命令:
oc scale -n <central namespace> –replicas=0 deploy/central
$ oc scale -n <central namespace> –replicas=0 deploy/centralCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl scale -n <central namespace> –replicas=0 deploy/central
$ kubectl scale -n <central namespace> –replicas=0 deploy/centralCopy to Clipboard Copied! Toggle word wrap Toggle overflow
将以下 pod 规格保存为 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用您保存的 YAML 文件在 Central 命名空间中创建 pod:
对于 OpenShift Container Platform,运行以下命令:
oc create -n <central namespace> -f pod.yaml
$ oc create -n <central namespace> -f pod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl create -n <central namespace> -f pod.yaml
$ kubectl create -n <central namespace> -f pod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 pod 后,运行以下命令来获取版本:
对于 OpenShift Container Platform,运行以下命令:
oc logs -n <central namespace> get-previous-db-version
$ oc logs -n <central namespace> get-previous-db-versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl logs -n <central namespace> get-previous-db-version
$ kubectl logs -n <central namespace> get-previous-db-versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,编辑
central-config.yamlConfigMap以设置maintenance.forceRollBackVersion:<version>参数:对于 OpenShift Container Platform,运行以下命令:
oc get configmap -n <central namespace> central-config -o yaml | sed -e "s/forceRollbackVersion: none/forceRollbackVersion: <version>/" | oc -n <central namespace> apply -f -
$ oc get configmap -n <central namespace> central-config -o yaml | sed -e "s/forceRollbackVersion: none/forceRollbackVersion: <version>/" | oc -n <central namespace> apply -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl get configmap -n <central namespace> central-config -o yaml | sed -e "s/forceRollbackVersion: none/forceRollbackVersion: <version>/" | kubectl -n <central namespace> apply -f -
$ kubectl get configmap -n <central namespace> central-config -o yaml | sed -e "s/forceRollbackVersion: none/forceRollbackVersion: <version>/" | kubectl -n <central namespace> apply -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 Step 3 中显示的版本字符串为 Central 部署设置镜像,作为镜像标签。例如,运行以下命令:
对于 OpenShift Container Platform,运行以下命令:
oc set image -n <central namespace> deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<version>
$ oc set image -n <central namespace> deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Kubernetes,运行以下命令:
kubectl set image -n <central namespace> deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<version>
$ kubectl set image -n <central namespace> deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确保 Central pod 启动并处于
ready状态。如果 pod 崩溃,请检查日志以查看备份是否已恢复。一个成功的日志消息类似以下示例:Clone to Migrate ".previous", ""
Clone to Migrate ".previous", ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在回滚频道上重新安装 Operator。例如,
3.74.2安装在rhacs-3.74频道中。
1.6.2. 使用 Web 控制台回滚 Operator 升级 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台回滚 Operator 版本。
先决条件
-
您可以使用具有
cluster-admin权限的账户访问 OpenShift Container Platform 集群 Web 控制台。
流程
- 进入到 Operators → Installed Operators 页面。
- 找到 RHACS Operator 并点它。
- 在 Operator Details 页面中,从 Actions 列表中选择 Uninstall Operator。按照此操作,Operator 将停止运行,不再接收更新。
通过选择以下选项之一来确定您要回滚到的早期版本:
如果当前 Central 实例正在运行,您可以通过从终端窗口中运行以下命令来查询 RHACS API 来获取回滚版本:
curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackTo
$ curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackToCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过执行以下步骤来创建 pod 并提取之前的版本:
注意这个过程只能在安装
rocksdb数据库时用于 RHACS 版本 3.74 及更早版本。- 进入到 Workloads → Deployments → central。
- 在 Deployment details 下,点 pod 数旁边的向下箭头,以缩减 pod。
进入到 Workloads → Pods → Create Pod,将 pod 规格的内容粘贴到编辑器中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create。
- 创建 pod 后,点 Logs 选项卡来获取版本字符串。
通过执行以下步骤更新回滚配置:
- 进入到 Workloads → ConfigMaps → central-config,然后从 Actions 列表中选择 Edit ConfigMap。
-
在
central-config.yaml键的值中找到forceRollbackVersion行。 -
将
none替换为3.73.3,然后保存文件。
通过执行以下步骤将 Central 更新至早期版本:
- 进入到 Workloads → Deployments → central,然后从 Actions 列表中选择 Edit Deployment。
- 更新镜像名称,然后保存更改。
验证
确保 Central pod 启动并处于
ready状态。如果 pod 崩溃,请检查日志以查看备份是否已恢复。一个成功的日志消息类似以下示例:Clone to Migrate ".previous", ""
Clone to Migrate ".previous", ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在回滚频道上重新安装 Operator。例如,
3.74.2安装在rhacs-3.74频道中。
1.7. Operator 升级问题故障排除 复制链接链接已复制到粘贴板!
按照以下步骤调查并解决 RHACS Operator 的与升级相关的问题。
1.7.1. 无法调度 Central 数据库 复制链接链接已复制到粘贴板!
在升级过程中,按照以下说明对 Central DB pod 进行故障排除:
检查
central-dbpod 的状态:oc -n <namespace> get pod -l app=central-db
$ oc -n <namespace> get pod -l app=central-db1 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-dbpod 的资源要求。但是,运行比推荐最小值少的资源的中心可能会导致 RHACS 的性能降低。
1.7.2. Central 或 Secured 集群无法部署 复制链接链接已复制到粘贴板!
当 RHACS Operator 时:
- 无法部署 Central 或 Secured 集群。
- 将 CR 更改应用到实际资源失败。
您必须检查自定义资源条件以查找问题。
对于 Central,运行以下命令检查条件:
oc -n rhacs-operator describe centrals.platform.stackrox.io
$ oc -n rhacs-operator describe centrals.platform.stackrox.io1 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.io1 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 数据库。
2.1. 从 RHACS 版本 3.74 及更早版本升级序列 复制链接链接已复制到粘贴板!
从早期版本升级时,请遵循以下指导:
- 如果 Central 的发行版本早于 3.74,则必须在升级到 4.x 版本前升级到最新的 3.74 补丁。有关从早期版本升级到 3.74 的信息,请参阅版本 3.74 的升级文档。
- 当从版本 3.74 升级基于 Helm 的安装时,您可以通过 4.4 升级到 RHACS 版本 4.0 的任何最新版本。但是,为了获得完整的功能,请升级到 4.4 版本。
如果您使用 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.2. 备份 Central 数据库 复制链接链接已复制到粘贴板!
在基础架构灾难的情况下,您可以备份中心数据库,并使用该备份从失败的升级或数据恢复中回滚。
先决条件
-
您必须具有一个 API 令牌,并且具有对 Red Hat Advanced Cluster Security for Kubernetes 的所有资源的
read权限。analysts 系统角色具有所有资源的read权限。 -
已安装了
roxctlCLI。 -
您已配置了
ROX_API_TOKEN和ROX_CENTRAL_ADDRESS环境变量。
流程
运行备份命令:
roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 优化 Central 数据库和 PVC 复制链接链接已复制到粘贴板!
当您升级到 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 4.0 时,RHACS 会创建一个名为 central-db 的 PostgreSQL 实例,并带有默认持久性卷声明 (PVC)。另外,您可以自定义 central-db 或 PVC 配置。
红帽建议以下最小内存和 CPU 请求:
2.4. 生成 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.shCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 更新 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 updateCopy 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.7. 运行 Helm 升级命令 复制链接链接已复制到粘贴板!
您可以使用 helm upgrade 命令更新 Red Hat Advanced Cluster Security for Kubernetes (RHACS)。
先决条件
-
您必须有权访问用于安装 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 的
values-private.yaml配置文件。否则,您必须先生成values-private.yaml配置文件包含 root 证书,然后继续此处的命令。
流程
运行 helm upgrade 命令并使用
-f选项指定配置文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以使用
--reuse-values选项在升级过程中保留之前配置的 Helm 值。如果这样做,在升级到下一个版本前,您必须关闭 central-db 创建。例如,Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8. 升级到 4.1 及之后的版本后,删除 Central 附加 PV 复制链接链接已复制到粘贴板!
Kubernetes 和 OpenShift Container Platform 不自动删除持久性卷(PV)。当您从早期版本升级 RHACS 时,名为 stackrox-db 的 Central PV 会保留挂载。但是,在 RHACS 4.1 中,Central 不再需要之前附加的 PV。
PV 具有之前 RHACS 版本使用的数据和持久性文件。您可以使用 PV 在 RHACS 4.1 之前回滚到更早的版本。或者,如果您有一个用于 Central 的大型 RocksDB 备份捆绑包,您可以使用 PV 恢复这些数据。
完成升级到 4.1 后,您可以删除 Central 附加的持久性卷声明(PVC)来释放存储。仅当没有计划从之前的 RocksDB 备份回滚或恢复时,才删除 PVC。
删除 PVC 后,您无法在 RHACS 4.1 之前将 Central 回滚到早期版本,或恢复使用 RocksDB 创建的大型 RocksDB 备份。
2.8.1. 使用 Helm 删除中央附加 PV 复制链接链接已复制到粘贴板!
删除 Central 附加持久性卷声明(PVC) stackrox-db 以释放存储空间。
流程
运行以下命令:
helm upgrade -n stackrox stackrox-central-services \ rhacs/central-services --version <current-rhacs-version> \ --set central.persistence.none=true$ helm upgrade -n stackrox stackrox-central-services \ rhacs/central-services --version <current-rhacs-version> \ --set central.persistence.none=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. 回滚 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=falseCopy 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-db1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
第 3 章 使用 roxctl CLI 手动升级 复制链接链接已复制到粘贴板!
您可以从受支持的旧版本升级到 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 的最新版本。
-
只有在使用
roxctlCLI 安装 RHACS 时,才需要执行手动升级步骤。 - 每个版本升级都需要遵循手动步骤,例如从 3.74 升级到 4.0 版本,以及从 4.0 升级到 4.1 版本。因此,红帽建议先从 3.74 升级到 4.0,然后从 4.0 升级到 4.1,然后从 4.1 升级到 4.2,直到安装了所选版本。如需完整的功能,红帽建议升级到最新版本。
要将 Red Hat Advanced Cluster Security for Kubernetes 升级到最新版本,您必须执行以下操作:
- 备份中央数据库
-
升级
roxctlCLI - 生成 Central 数据库置备捆绑包
- 升级 Central
- 升级扫描器
- 验证所有升级的安全集群
3.1. 备份 Central 数据库 复制链接链接已复制到粘贴板!
在基础架构灾难的情况下,您可以备份中心数据库,并使用该备份从失败的升级或数据恢复中回滚。
先决条件
-
您必须具有一个 API 令牌,并且具有对 Red Hat Advanced Cluster Security for Kubernetes 的所有资源的
read权限。analysts 系统角色具有所有资源的read权限。 -
已安装了
roxctlCLI。 -
您已配置了
ROX_API_TOKEN和ROX_CENTRAL_ADDRESS环境变量。
流程
运行备份命令:
roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backupCopy 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 $ROXPATH1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 根据您的环境,您可能需要管理员删除
roxctl二进制文件。
3.2.2. 在 Linux 中安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。
用于 Linux 的 roxctl CLI 可用于 amd64、 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 下载
roxctlCLI:curl -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Linux/roxctl${arch}"$ curl -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Linux/roxctl${arch}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使
roxctl二进制文件可执行:chmod +x roxctl
$ chmod +x roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
roxctl二进制文件放到PATH中的目录中:要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您已安装的
roxctl版本:roxctl version
$ roxctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. 在 macOS 上安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。
用于 macOS 的 roxctl CLI 可用于 amd64 架构。
流程
下载
roxctlCLI:curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Darwin/roxctl
$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Darwin/roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从二进制文件中删除所有扩展属性:
xattr -c roxctl
$ xattr -c roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使
roxctl二进制文件可执行:chmod +x roxctl
$ chmod +x roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
roxctl二进制文件放到PATH中的目录中:要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您已安装的
roxctl版本:roxctl version
$ roxctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.4. 在 Windows 上安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 Windows 上安装 roxctl CLI 二进制文件。
amd64 架构提供了适用于 Windows 的 roxctl CLI。
流程
下载
roxctlCLI:curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Windows/roxctl.exe
$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Windows/roxctl.exeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您已安装的
roxctl版本:roxctl version
$ roxctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 生成 Central 数据库置备捆绑包 复制链接链接已复制到粘贴板!
在升级 Central 前,您必须首先生成数据库置备捆绑包。这个捆绑包是一个 tar 归档,它有一个 README 文件、几个 YAML 配置文件,以及在安装过程中帮助的一些脚本。
先决条件
-
您必须有带有
Admin角色的 API 令牌。 -
您必须已安装了
roxctlCLI。
流程
设置
ROX_API_TOKEN和ROX_CENTRAL_ADDRESS环境变量:export ROX_API_TOKEN=<api_token>
$ export ROX_API_TOKEN=<api_token>Copy to Clipboard Copied! Toggle word wrap Toggle overflow export ROX_CENTRAL_ADDRESS=<address>:<port_number>
$ export ROX_CENTRAL_ADDRESS=<address>:<port_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
central db generate命令:roxctl -e $ROX_CENTRAL_ADDRESS central db generate \ <cluster_type> \ <storage> \ --output-dir <bundle_dir> \ --central-db-image registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.3.8
$ roxctl -e $ROX_CENTRAL_ADDRESS central db generate \ <cluster_type> \1 <storage> \2 --output-dir <bundle_dir> \3 --central-db-image registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.3.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow
下一步
- 使用 Central DB 置备捆绑包来创建其他资源。
3.4. 使用 Central DB 置备捆绑包创建资源 复制链接链接已复制到粘贴板!
在升级 Central 集群前,您必须使用 Central DB 置备捆绑包来创建 Central 集群所需的其他资源。这个捆绑包是一个 tar 归档,它有一个 README 文件、几个 YAML 配置文件,以及在安装过程中帮助的一些脚本。
先决条件
- 您必须已生成了一个 Central DB 置备捆绑包。
-
您必须已提取
tar归档捆绑包。
流程
打开提取的捆绑包目录并运行
setup脚本 :./scripts/setup.sh
$ ./scripts/setup.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
deploy-central-db脚本:./deploy-central-db.sh
$ ./deploy-central-db.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 升级中央集群 复制链接链接已复制到粘贴板!
在创建了 Central 数据库的备份并使用置备捆绑包生成必要的资源后,下一步是升级 Central 集群。这个过程涉及升级 Central 和 Scanner。
3.5.1. 升级 Central 复制链接链接已复制到粘贴板!
您可以通过下载和部署更新的镜像,将 Central 更新到最新版本。
流程
运行以下命令以更新 Central 镜像:
oc -n stackrox set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.3.8
$ oc -n stackrox set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.3.81 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
验证
验证新 pod 是否已部署:
oc get deploy -n stackrox -o wide
$ oc get deploy -n stackrox -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. 升级扫描器 复制链接链接已复制到粘贴板!
您可以通过下载和部署更新的镜像将 Scanner 更新至最新版本。
流程
运行以下命令以更新 Scanner 镜像:
oc -n stackrox set image deploy/scanner scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.3.8
$ oc -n stackrox set image deploy/scanner scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.3.81 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
验证
验证新 pod 是否已部署:
oc get deploy -n stackrox -o wide
$ oc get deploy -n stackrox -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. 验证 Central 集群升级 复制链接链接已复制到粘贴板!
在升级了 Central 和 Scanner 后,验证该中央集群升级已完成。
流程
运行以下命令检查 Central 日志:
oc logs -n stackrox deploy/central -c central
$ oc logs -n stackrox deploy/central -c central1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
成功升级的输出示例
3.6. 升级所有安全集群 复制链接链接已复制到粘贴板!
升级中部服务后,您必须升级所有安全的集群。
要完成每个运行 Sensor、Collector 和 Admission Controller 的安全集群的手动升级,请按照本节中的说明操作。
3.6.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.3.8
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.3.81 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.3.8
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.3.81 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.3.8
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.3.81 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
注意如果使用 collector slim 镜像,请运行以下命令:
oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:{rhacs-version}$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:{rhacs-version}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新准入控制镜像:
oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.3.8
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.3.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2. 验证安全集群升级 复制链接链接已复制到粘贴板!
在升级了安全集群后,验证更新的 pod 是否正常工作。
流程
检查新 pod 是否已部署。输入以下命令:
oc get deploy,ds -n stackrox -o wide
$ oc get deploy,ds -n stackrox -o wide1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
输入以下命令:
oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watch1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
3.6.3. 启用 RHCOS 节点扫描 复制链接链接已复制到粘贴板!
如果使用 OpenShift Container Platform,您可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)启用对 Red Hat Enterprise Linux CoreOS (RHCOS) 节点的扫描。
先决条件
- 要扫描安全集群的 RHCOS 节点主机,您必须在 OpenShift Container Platform 4.11 或更高版本上安装了安全集群。如需有关支持的管理和自我管理的 OpenShift Container Platform 版本的更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策。
流程
运行以下命令来更新合规性容器之一。
对于禁用了指标的默认合规容器,请运行以下命令:
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.3.8","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.3.8","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.7. 升级到 4.1 及之后的版本后,删除 Central 附加 PV 复制链接链接已复制到粘贴板!
Kubernetes 和 OpenShift Container Platform 不自动删除持久性卷(PV)。当您从早期版本升级 RHACS 时,名为 stackrox-db 的 Central PV 会保留挂载。但是,在 RHACS 4.1 中,Central 不再需要之前附加的 PV。
PV 具有之前 RHACS 版本使用的数据和持久性文件。您可以使用 PV 在 RHACS 4.1 之前回滚到更早的版本。或者,如果您有一个用于 Central 的大型 RocksDB 备份捆绑包,您可以使用 PV 恢复这些数据。
完成升级到 4.1 后,您可以删除 Central 附加的持久性卷声明(PVC)来释放存储。仅当没有计划从之前的 RocksDB 备份回滚或恢复时,才删除 PVC。
删除 PVC 后,您无法在 RHACS 4.1 之前将 Central 回滚到早期版本,或恢复使用 RocksDB 创建的大型 RocksDB 备份。
3.7.1. 使用 roxctl CLI 删除 Central 附加 PV 复制链接链接已复制到粘贴板!
删除 Central 附加持久性卷声明(PVC) stackrox-db 以释放存储空间。
流程
运行以下命令:
oc get deployment central -n stackrox -o json | jq '(.spec.template.spec.volumes[] | select(.name=="stackrox-db"))={"name": "stackrox-db", "emptyDir": {}}' | oc apply -f -$ oc get deployment central -n stackrox -o json | jq '(.spec.template.spec.volumes[] | select(.name=="stackrox-db"))={"name": "stackrox-db", "emptyDir": {}}' | oc apply -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 它将
spec.template.spec.volumes中的stackrox-db'条目替换为本地 emptyDir。
验证
运行以下命令:
oc -n stackrox describe pvc stackrox-db | grep -i 'Used By'
$ oc -n stackrox describe pvc stackrox-db | grep -i 'Used By' Used By: <none>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 等待您看到过的 By:
<none>。它可能需要几分钟时间。
3.8. 回滚 Central 复制链接链接已复制到粘贴板!
如果升级到新版本失败,您可以回滚到以前版本的 Central。
3.8.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/central1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
3.8.2. 强制回滚 Central 复制链接链接已复制到粘贴板!
您可以使用强制回滚回滚到较早版本的 Central (在 Central 服务启动后)。
使用强制回滚切换到以前的版本可能会导致数据丢失和功能。
先决条件
- 执行回滚前,持久性存储必须具有可用磁盘空间。Red Hat Advanced Cluster Security for Kubernetes 使用磁盘空间在升级过程中保留数据库副本。如果磁盘空间不足以存储副本,升级失败,您将无法回滚到较早的版本。
流程
运行以下命令来执行强制回滚:
要强制回滚到以前安装的版本:
oc -n stackrox rollout undo deploy/central
$ oc -n stackrox rollout undo deploy/central1 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-config1 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.9. 验证升级 复制链接链接已复制到粘贴板!
更新的 Sensors 和 Collector 将继续从每个安全集群报告最新的数据。
在 RHACS 门户中可以看到 Sensor 最后联系 Central 的时间。
流程
- 在 RHACS 门户网站中,进入 Platform Configuration → System Health。
- 检查以确保 Sensor Upgrade 显示使用 Central 的集群最新。
3.10. 撤销 API 令牌 复制链接链接已复制到粘贴板!
为了安全起见,红帽建议您撤销用于完成 Central 数据库备份的 API 令牌。
先决条件
- 升级后,您必须重新加载 RHACS 门户页面并重新接受证书,以便继续使用 RHACS 门户。
流程
- 在 RHACS 门户网站中,进入 Platform Configuration → Integrations。
- 向下滚动到 Authentication Tokens 类别,然后点 API Token。
- 选中您要撤销的令牌名称前面的复选框。
- 点 Revoke。
- 在确认对话框中,点 Confirm。