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.6
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.6
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.6
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.6
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.6
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.7.6
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.6
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.6
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
。