升级


Red Hat Advanced Cluster Security for Kubernetes 4.7

升级 Red Hat Advanced Cluster Security for Kubernetes

Red Hat OpenShift Documentation Team

摘要

本节介绍了使用 Helm chart 或 roxctl 命令行界面升级 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

流程

  1. 在 OpenShift Container Platform Web 控制台中进入 RHACS Operator 页面。
  2. 在顶部导航菜单中,选择 Secured Cluster
  3. 点实例名称,如 stackrox-secured-cluster-services
  4. 使用以下方法之一更改设置:

    • Form 视图中,在 Per Node SettingsCollector SettingsCollection 下,选择 CORE_BPF
    • YAML 打开 YAML 编辑器并找到 spec.perNode.collector.collection 属性。如果值为 KernelModuleEBPF,请将其改为 CORE_BPF
  5. Save。

1.2. 修改 Central 自定义资源

Central DB 服务需要持久性存储。如果您还没有为 SSD 或高性能的 Central 集群配置默认存储类,您必须重新安装并配置 Central 自定义资源(CR),使用 Central DB 持久性卷声明(PVC)的存储类。

更改 storageClassName 时,由于 Kubernetes 存储层的限制,您无法在绑定后修改声明的存储类;因此您必须重新创建 Central CR。

注意

如果您已经为 Central 配置了默认存储类,请跳过此部分。

流程

  1. 备份和恢复 Central 实例。
  2. 重新安装 RHACS 并配置 Central 自定义资源,如下例所示:

    spec:
      central:
        db:
          isEnabled: Default 
    1
    
          persistence:
            persistentVolumeClaim: 
    2
    
              claimName: central-db
              size: 100Gi
              storageClassName: <storage-class-name>
    Copy to Clipboard Toggle word wrap
    1
    您不能将 IsEnabled 的值改为 Enabled
    2
    如果存在此声明,您的集群将使用现有的声明;否则,它会创建一个新的声明。
  3. 使用 roxctl CLI 恢复 Central 数据库备份。

1.3. 为外部数据库修改 Central 自定义资源

先决条件

  • 您必须在数据库实例中有一个支持 PostgreSQL 13 和具有以下权限的用户的数据库:

    • 对数据库的连接权利。
    • schema 的 UsageCreate
    • 对 schema 中的所有表的 Select, Insert, Update, 和 Delete 权限。
    • 对 schema 中所有序列的 Usage

流程

  1. 使用 OpenShift Container Platform Web 控制台或终端在部署的命名空间中创建密码 secret。

    • 在 OpenShift Container Platform web 控制台中进入 WorkloadsSecrets 页面。使用密钥 password 和值创建一个 Key/Value secret,作为纯文本文件的路径,其中包含调配数据库的超级用户密码。
    • 或者,在终端中运行以下命令:

      $ oc create secret generic external-db-password \ 
      1
      
        --from-file=password=<password.txt> 
      2
      Copy to Clipboard Toggle word wrap
      1
      如果使用 Kubernetes,请输入 kubectl 而不是 oc
      2
      使用纯文本密码的文件的路径替换 password.txt
  2. 进入 OpenShift Container Platform Web 控制台中的 Red Hat Advanced Cluster Security for Kubernetes operator 页面。在顶部导航栏中选择 Central,再选择您要连接到数据库的实例。
  3. 进入 YAML 编辑器视图。
  4. 对于 db.passwordSecret.name,请指定您在前面的步骤中创建的引用的 secret。例如,external-db-password
  5. 对于 db.connectionString,以 keyword=value 格式指定连接字符串,例如 host=< host> port=5432 database=stackrox user=stackrox sslmode=verify-ca
  6. 对于 db.persistence,请删除整个块。
  7. 如果需要,您可以通过在顶层 spec 中添加 TLS 块来为 Central 指定证书颁发机构来信任数据库证书,如下例所示:

    • 使用以下配置更新中央自定义资源:

      spec:
        tls:
          additionalCAs:
          - name: db-ca
            content: |
              <certificate>
        central:
          db:
            isEnabled: Default 
      1
      
            connectionString: "host=<host> port=5432 user=<user> sslmode=verify-ca"
            passwordSecret:
              name: external-db-password
      Copy to Clipboard Toggle word wrap
      1
      您不能将 IsEnabled 的值改为 Enabled
  8. 点击 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 控制台更改订阅频道的说明:

流程

  1. 在 OpenShift Container Platform Web 控制台的 Administrator 视角中,进入 OperatorsInstalled Operators
  2. 点 RHACS Operator。
  3. Subscription 标签页。
  4. Update Channel 下的更新频道的名称。
  5. 选择 stable,然后点 Save
  6. 对于带有 自动批准策略 的订阅,更新会自动开始。返回到 OperatorsInstalled Operators 页面,以监控更新的进度。完成后,状态会变为 SucceededUp to date

    对于采用手动批准策略的订阅,您可以从 Subscription 选项卡中手动批准更新。

1.4.2. 使用命令行更改订阅频道

使用命令行更改订阅频道的说明:

流程

  • 运行以下命令,将订阅频道改为 stable

    $ oc -n rhacs-operator \ 
    1
    
      patch subscriptions.operators.coreos.com rhacs-operator \
      --type=merge --patch='{ "spec": { "channel": "stable" }}'
    Copy to Clipboard Toggle word wrap
    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 版本。

流程

  1. 删除 Operator Lifecycle Manager (OLM)订阅和集群服务版本(CSV):

    重要

    如果使用 Kubernetes,请输入 kubectl 而不是 oc

    1. 要删除 OLM 订阅,请运行以下命令:

      $ oc -n rhacs-operator delete subscription rhacs-operator
      Copy to Clipboard Toggle word wrap

      输出示例

      subscription.operators.coreos.com "rhacs-operator" deleted
      Copy to Clipboard Toggle word wrap

    2. 要删除 CSV,请运行以下命令:

      $ oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
      Copy to Clipboard Toggle word wrap

      输出示例

      clusterserviceversion.operators.coreos.com "rhacs-operator.v4.8.4" deleted
      Copy to Clipboard Toggle word wrap

  2. 安装 RHACS Operator 的早期版本:

    1. 在 OpenShift Web 控制台中,点 OperatorHub
    2. 搜索 Advanced Cluster Security for Kubernetes
    3. 选择并安装 Operator 的早期版本。

      注意

      安装之前的 Operator 版本将 RHACS 回滚到与 Operator 相同的版本。

1.5.2. 使用 Web 控制台回滚 Operator 升级

您可以使用 OpenShift Container Platform Web 控制台回滚 Operator 版本。

先决条件

  • 您可以使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群 Web 控制台。

流程

  1. 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators
  2. 从项目列表中,选择 rhacs-operator
  3. 找到 Advanced Cluster Security for Kubernetes Operator:

    1. 点 overflow 菜单 kebabUninstall Operator

      此时会显示 uninstall Operator 对话框。

    2. 确保删除此 Operator 复选框的所有操作对象实例 是明确的,以避免卸载 Red Hat Advanced Cluster Security for Kubernetes (RHACS)。
    3. Uninstall
  4. 安装早期版本的 RHACS Operator:

    1. 在 OpenShift Web 控制台中,点 OperatorHub
    2. 搜索 Advanced Cluster Security for Kubernetes
    3. 选择并安装 Operator 的早期版本。

      注意

      安装之前的 Operator 版本将 RHACS 回滚到与 Operator 相同的版本。

1.6. Operator 升级问题故障排除

按照以下步骤调查并解决 RHACS Operator 的与升级相关的问题。

1.6.1. 无法调度 Central 数据库

在升级过程中,按照以下说明对 Central DB pod 进行故障排除:

  1. 检查 central-db pod 的状态:

    $ oc -n <namespace> get pod -l app=central-db 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. 如果 pod 的状态为 Pending,请使用 describe 命令获取更多详细信息:

    $ oc -n <namespace> describe po/<central-db-pod-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  3. 您可能会看到 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.
    Copy to Clipboard Toggle word wrap
  4. 此警告信息建议调度的节点没有足够的内存来满足 pod 的资源要求。如果您有一个小的环境,请考虑在节点上增加资源,或添加一个可以支持数据库的更大的节点。

    否则,请考虑在 centraldbresources 下的自定义资源中减少 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 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  • 对于安全集群,运行以下命令检查条件:

    $ oc -n rhacs-operator describe securedclusters.platform.stackrox.io 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

您可以识别条件输出中的配置错误:

输出示例

 Conditions:
    Last Transition Time:  2023-04-19T10:49:57Z
    Status:                False
    Type:                  Deployed
    Last Transition Time:  2023-04-19T10:49:57Z
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2023-04-19T10:59:10Z
    Message:               Deployment.apps "central" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "50": must be less than or equal to cpu limit
    Reason:                ReconcileError
    Status:                True
    Type:                  Irreconcilable
    Last Transition Time:  2023-04-19T10:49:57Z
    Message:               No proxy configuration is desired
    Reason:                NoProxyConfig
    Status:                False
    Type:                  ProxyConfigFailed
    Last Transition Time:  2023-04-19T10:49:57Z
    Message:               Deployment.apps "central" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "50": must be less than or equal to cpu limit
    Reason:                InstallError
    Status:                True
    Type:                  ReleaseFailed
Copy to Clipboard Toggle word wrap

另外,您可以查看 RHACS pod 日志以查找有关此问题的更多信息。运行以下命令来查看日志:

oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager 
1
Copy to Clipboard Toggle word wrap
1
如果使用 Kubernetes,请输入 kubectl 而不是 oc

第 2 章 使用 Helm chart 升级

您必须遵循 RHACS 的特定升级路径,具体取决于您运行的 RHACS 版本。在更新 Helm Chart 并执行升级前,还必须备份 Central 数据库。

如果您使用 Helm chart 安装 RHACS,要升级到最新版本的 RHACS,请执行以下步骤:

  1. 备份 Central 数据库。
  2. (可选)优化 Central 数据库和持久性卷声明(PVC)。
  3. (可选)生成包含 central-services Helm Chart 的 root 证书的 values-private.yaml 配置文件。
  4. 更新 Helm Chart。
  5. 运行 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_TOKENROX_CENTRAL_ADDRESS 环境变量。

流程

  • 运行备份命令:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
    Copy to Clipboard Toggle word wrap

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 请求:

central:
  db:
    resources:
      requests:
        memory: 16Gi
        cpu: 8
      limits:
        memory: 16Gi
        cpu: 8
Copy to Clipboard Toggle word wrap

2.3. 生成 root 证书文件

如果您无法访问用于安装 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的 values-private.yaml 配置文件,请使用以下指令来生成包含 root 证书的 values-private.yaml 配置文件。

如果可以访问 values-private.yaml 配置文件,请在此处跳过该指令。

重要

生成的 values-private.yaml 文件具有敏感配置选项。确保您安全地存储这个文件。

流程

  1. 下载 create_certificate_values_file.sh 脚本。
  2. 使 create_certificate_values_file.sh 脚本可执行:

    $ chmod +x create_certificate_values_file.sh
    Copy to Clipboard Toggle word wrap
  3. 运行 create_certificate_values_file.sh 脚本文件:

    $ create_certificate_values_file.sh values-private.yaml
    Copy to Clipboard Toggle word wrap

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
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令来验证添加的 chart 存储库:

    $ helm search repo -l rhacs/
    Copy to Clipboard Toggle word wrap

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 选项指定配置文件:

    $ helm upgrade -n stackrox stackrox-central-services \
      rhacs/central-services --version <current-rhacs-version> \
    1
    
      -f values-private.yaml \
      --set central.db.password.generate=true \
      --set central.db.serviceTLS.generate=true \
      --set central.db.persistence.persistentVolumeClaim.createClaim=true
    Copy to Clipboard Toggle word wrap
    1
    使用 -f 选项指定 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 Toggle word wrap
    1
    使用 -f 选项指定 YAML 配置文件的路径。
注意

您可以使用 --reuse-values 选项在升级过程中保留之前配置的 Helm 值。如果这样做,您必须在升级到下一个版本前关闭 central-db 创建。

请参见以下命令示例:

$ helm upgrade -n stackrox stackrox-central-services \
  rhacs/central-services --version <current-rhacs-version> --reuse-values \
  -f values-private.yaml \
  --set central.db.password.generate=false \
  --set central.db.serviceTLS.generate=false \
  --set central.db.persistence.persistentVolumeClaim.createClaim=false
Copy to Clipboard Toggle word wrap

2.7. 回滚 Helm 升级

如果升级到新版本失败,您可以回滚到较早版本的 Central。

流程

  1. 运行以下 helm upgrade 命令:

    $ helm upgrade -n stackrox \
      stackrox-central-services rhacs/central-services \
      --version <previous_rhacs_74_version> \ 
    1
    
      --set central.db.enabled=false
    Copy to Clipboard Toggle word wrap
    1
    <previous_rhacs_74_version> 替换为之前安装的 RHACS 版本。
  2. 删除 central-db 持久性卷声明 (PVC):

    $ oc -n stackrox delete pvc central-db 
    1
    Copy to Clipboard Toggle word wrap
    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_TOKENROX_CENTRAL_ADDRESS 环境变量。

流程

  • 运行备份命令:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
    Copy to Clipboard Toggle word wrap

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 
    1
    Copy to Clipboard Toggle word wrap
    1
    根据您的环境,您可能需要管理员删除 roxctl 二进制文件。

3.2.2. 在 Linux 中安装 roxctl CLI

您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。

注意

用于 Linux 的 roxctl CLI 可用于 amd 64、rm64、 ppc64les390x 架构。

流程

  1. 确定目标操作系统的 roxctl 架构:

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
    Copy to Clipboard Toggle word wrap
  2. 下载 roxctl CLI:

    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Linux/roxctl${arch}"
    Copy to Clipboard Toggle word wrap
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
    Copy to Clipboard Toggle word wrap
  4. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

验证

  • 验证您已安装的 roxctl 版本:

    $ roxctl version
    Copy to Clipboard Toggle word wrap

3.2.3. 在 macOS 上安装 roxctl CLI

您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。

注意

macOS 的 roxctl CLI 可用于 amd64arm64 架构。

流程

  1. 确定目标操作系统的 roxctl 架构:

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
    Copy to Clipboard Toggle word wrap
  2. 下载 roxctl CLI:

    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.7.7/bin/Darwin/roxctl${arch}"
    Copy to Clipboard Toggle word wrap
  3. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
    Copy to Clipboard Toggle word wrap
  4. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
    Copy to Clipboard Toggle word wrap
  5. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

验证

  • 验证您已安装的 roxctl 版本:

    $ roxctl version
    Copy to Clipboard Toggle word wrap

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
    Copy to Clipboard Toggle word wrap

验证

  • 验证您已安装的 roxctl 版本:

    $ roxctl version
    Copy to Clipboard Toggle word wrap

3.3. 升级中央集群

在创建了 Central 数据库的备份并使用置备捆绑包生成必要的资源后,下一步是升级 Central 集群。这个过程涉及升级 Central 和 Scanner。

3.3.1. 升级 Central

您可以通过下载和部署更新的镜像,将 Central 更新到最新版本。

重要

如果使用 Kubernetes,请输入 kubectl 而不是 oc

流程

  1. 要更新 Central 镜像,请运行以下命令:

    $ oc -n stackrox set image deploy/central \
    central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
    Copy to Clipboard Toggle word wrap
  2. 要更新 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
    Copy to Clipboard Toggle word wrap
  3. 要更新配置控制器镜像,请运行以下命令:

    $ oc -n stackrox set image deploy/config-controller \
    manager=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7
    Copy to Clipboard Toggle word wrap

验证

  • 验证新 pod 是否已部署:

    $ oc get deploy -n stackrox -o wide
    Copy to Clipboard Toggle word wrap
    $ oc get pod -n stackrox --watch
    Copy to Clipboard Toggle word wrap

3.3.2. 升级扫描器

您可以通过下载和部署更新的镜像将 Scanner 更新至最新版本。

重要

如果使用 Kubernetes,请输入 kubectl 命令而不是 oc 命令。

流程

  1. 如果已创建了自定义 Scanner 配置,则必须在更新 Scanner 配置文件前应用这些更改:

    1. 要生成扫描器,请运行以下命令:

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generate
      Copy to Clipboard Toggle word wrap
    2. 要应用 TLS secret YAML 文件,请运行以下命令:

      $ oc apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yaml
      Copy to Clipboard Toggle word wrap
    3. 要应用 Scanner 配置 YAML 文件,请运行以下命令:

      $ oc apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
      Copy to Clipboard Toggle word wrap
  2. 要更新 Scanner 镜像,请运行以下命令:

    $ oc -n stackrox set image deploy/scanner \
    scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.7.7
    Copy to Clipboard Toggle word wrap
  3. 要更新 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
    Copy to Clipboard Toggle word wrap

验证

  • 要验证新 pod 是否已部署,请运行以下命令:

    $ oc get deploy -n stackrox -o wide
    Copy to Clipboard Toggle word wrap
    $ oc get pod -n stackrox --watch
    Copy to Clipboard Toggle word wrap
3.3.2.1. 为 Scanner 部署编辑 GOMEMLIMIT 环境变量

升级到版本 4.4 要求您手动将 GOMEMLIMIT 环境变量替换为 ROX_MEMLIMIT 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Scanner 部署的变量:

    $ oc -n stackrox edit deploy/scanner 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。

3.3.3. 验证 Central 集群升级

在升级了 Central 和 Scanner 后,验证该中央集群升级已完成。

流程

  • 运行以下命令检查 Central 日志:

    $ oc logs -n stackrox deploy/central -c central 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

成功升级的输出示例

No database restore directory found (this is not an error).
Migrator: 2023/04/19 17:58:54: starting DB compaction
Migrator: 2023/04/19 17:58:54: Free fraction of 0.0391 (40960/1048576) is < 0.7500. Will not compact
badger 2023/04/19 17:58:54 INFO: All 1 tables opened in 2ms
badger 2023/04/19 17:58:55 INFO: Replaying file id: 0 at offset: 846357
badger 2023/04/19 17:58:55 INFO: Replay took: 50.324µs
badger 2023/04/19 17:58:55 DEBUG: Value log discard stats empty
Migrator: 2023/04/19 17:58:55: DB is up to date. Nothing to do here.
badger 2023/04/19 17:58:55 INFO: Got compaction priority: {level:0 score:1.73 dropPrefix:[]}
version: 2023/04/19 17:58:55.189866 ensure.go:49: Info: Version found in the DB was current. We’re good to go!
Copy to Clipboard Toggle word wrap

3.4. 升级所有安全集群

升级中部服务后,您必须升级所有安全的集群。

重要
  • 如果您使用自动升级:

  • 如果您不使用自动升级,则必须在包括 Central 集群在内的所有安全集群中运行本节中的说明。

    • 为确保最佳功能,请为您的安全集群和安装 Central 的集群使用相同的 RHACS 版本。

要完成每个运行 Sensor、Collector 和 Admission Controller 的安全集群的手动升级,请按照本节中的说明操作。

3.4.1. 更新其他镜像

在不使用自动升级时,您必须更新每个安全集群中的 sensor, collector 和 compliance 镜像。

注意

如果使用 Kubernetes,请在此流程中列出的命令中使用 kubectl 而不是 oc

流程

  1. 更新 Sensor 镜像:

    $ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. 更新 Compliance 镜像:

    $ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.7 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  3. 更新 Collector 镜像:

    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.7.7 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  4. 更新准入控制镜像:

    $ 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 Toggle word wrap
重要

如果您使用 roxctl CLI 在 Red Hat OpenShift 上安装 RHACS,则需要迁移安全性上下文约束(SCC)。

如需更多信息,请参阅"添加资源"部分中的"手动升级过程中缓解 SCC"。

当从 4.6 之前的版本升级到 4.6 或更高版本时,您必须修补 sensor 和 admission-control 部署来设置 POD_NAMESPACE 环境变量。

注意

如果使用 Kubernetes,请在此流程中列出的命令中使用 kubectl 而不是 oc

流程

  1. 修补 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"}}}}]'
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,补丁 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"}}}}]'
    Copy to Clipboard Toggle word wrap

3.4.3. 在手动升级过程中迁移 SCC

通过使用 roxctl CLI 在手动升级过程中迁移安全性上下文约束(SCC),您可以无缝转换 Red Hat Advanced Cluster Security for Kubernetes (RHACS)服务以使用 Red Hat OpenShift SCC,确保 Central 和所有安全的集群间的兼容性和最佳安全配置。

流程

  1. 列出在 Central 和所有安全集群中部署的所有 RHACS 服务:

    $ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
    Copy to Clipboard Toggle word wrap

    输出示例

    Name:      admission-control-6f4dcc6b4c-2phwd
               openshift.io/scc: stackrox-admission-control
    #...
    Name:      central-575487bfcb-sjdx8
               openshift.io/scc: stackrox-central
    Name:      central-db-7c7885bb-6bgbd
               openshift.io/scc: stackrox-central-db
    Name:      collector-56nkr
               openshift.io/scc: stackrox-collector
    #...
    Name:      scanner-68fc55b599-f2wm6
               openshift.io/scc: stackrox-scanner
    Name:      scanner-68fc55b599-fztlh
    #...
    Name:      sensor-84545f86b7-xgdwf
               openshift.io/scc: stackrox-sensor
    #...
    Copy to Clipboard Toggle word wrap

    在本例中,您可以看到每个 Pod 都有自己的自定义 SCC,这通过 openshift.io/scc 字段指定。

  2. 添加所需的角色和角色绑定,以使用 Red Hat OpenShift SCC 而不是 RHACS 自定义 SCC。

    要添加所需的角色和角色绑定,为 Central 集群使用 Red Hat OpenShift SCC,请完成以下步骤:

    1. 创建名为 update-central.yaml 的文件,该文件使用以下内容定义角色和角色绑定资源:

      例 3.1. YAML 文件示例

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role 
      1
      
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: use-central-db-scc 
      2
      
        namespace: stackrox 
      3
      
      Rules: 
      4
      
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot-v2
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/managed-by: Helm
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: use-central-scc
        namespace: stackrox
      rules:
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot-v2
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: scanner
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: use-scanner-scc
        namespace: stackrox
      rules:
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot-v2
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding 
      5
      
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.k ubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: central-db-use-scc 
      6
      
        namespace: stackrox
      roleRef: 
      7
      
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-central-db-scc
      subjects: 
      8
      
      - kind: ServiceAccount
        name: central-db
        namespace: stackrox
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: central-use-scc
        namespace: stackrox
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-central-scc
      subjects:
      - kind: ServiceAccount
        name: central
        namespace: stackrox
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: scanner
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: scanner-use-scc
        namespace: stackrox
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-scanner-scc
      subjects:
      - kind: ServiceAccount
        name: scanner
        namespace: stackrox
      - - -
      Copy to Clipboard Toggle word wrap
      1
      本例中的 Kubernetes 资源的类型 Role
      2
      角色资源的名称。
      3
      创建角色的命名空间。
      4
      描述角色资源授予权限。
      5
      本例中的 Kubernetes 资源的类型,即 RoleBinding
      6
      角色绑定资源的名称。
      7
      指定要在同一命名空间中绑定的角色。
      8
      指定绑定到角色的主题。
    2. 运行以下命令,创建 update-central.yaml 文件中指定的角色和角色绑定资源:

      $ oc -n stackrox create -f ./update-central.yaml
      Copy to Clipboard Toggle word wrap
  3. 要添加所需的角色和角色绑定,以便将 Red Hat OpenShift SCC 用于所有安全集群,请完成以下步骤:

    1. 创建名为 upgrade-scs.yaml 的文件,该文件使用以下内容定义角色和角色绑定资源:

      例 3.2. YAML 文件示例

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role  
      1
      
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: collector
           app.kubernetes.io/instance: stackrox-secured-cluster-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-secured-cluster-services
           app.kubernetes.io/version: 4.4.0
           auto-upgrade.stackrox.io/component: sensor
        name: use-privileged-scc  
      2
      
        namespace: stackrox 
      3
      
      rules:  
      4
      
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - privileged
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding 
      5
      
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: collector
           app.kubernetes.io/instance: stackrox-secured-cluster-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-secured-cluster-services
           app.kubernetes.io/version: 4.4.0
           auto-upgrade.stackrox.io/component: sensor
        name: collector-use-scc 
      6
      
        namespace: stackrox
      roleRef: 
      7
      
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-privileged-scc
      subjects: 
      8
      
      - kind: ServiceAccount
        name: collector
        namespace: stackrox
      - - -
      Copy to Clipboard Toggle word wrap
      1
      本例中的 Kubernetes 资源的类型 Role
      2
      角色资源的名称。
      3
      创建角色的命名空间。
      4
      描述角色资源授予权限。
      5
      本例中的 Kubernetes 资源的类型,即 RoleBinding
      6
      角色绑定资源的名称。
      7
      指定要在同一命名空间中绑定的角色。
      8
      指定绑定到角色的主题。
    2. 运行以下命令,创建 upgrade-scs.yaml 文件中指定的角色和角色绑定资源:

      $ oc -n stackrox create -f ./update-scs.yaml
      Copy to Clipboard Toggle word wrap
      重要

      您必须在每个安全集群中运行此命令,以创建 upgrade-scs.yaml 文件中指定的角色和角色绑定。

  4. 删除特定于 RHACS 的 SCC:

    1. 要删除特定于 Central 集群的 SCC,请运行以下命令:

      $ oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scanner
      Copy to Clipboard Toggle word wrap
    2. 要删除特定于所有安全集群的 SCC,请运行以下命令:

      $ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
      Copy to Clipboard Toggle word wrap
      重要

      您必须在每个安全集群中运行此命令,才能删除特定于每个安全集群的 SCC。

验证

  • 运行以下命令,确保所有 pod 都使用正确的 SCC:

    $ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
    Copy to Clipboard Toggle word wrap

    将输出与下表进行比较:

    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 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Sensor 部署的变量:

    $ oc -n stackrox edit deploy/sensor 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。
3.4.3.2. 为 Collector 部署编辑 GOMEMLIMIT 环境变量

升级到版本 4.4 要求您手动将 GOMEMLIMIT 环境变量替换为 ROX_MEMLIMIT 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Collector 部署的变量:

    $ oc -n stackrox edit deploy/collector 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。

升级到版本 4.4 要求您手动将 GOMEMLIMIT 环境变量替换为 ROX_MEMLIMIT 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Admission Controller 部署的变量:

    $ oc -n stackrox edit deploy/admission-control 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。
3.4.3.4. 验证安全集群升级

在升级了安全集群后,验证更新的 pod 是否正常工作。

流程

  • 检查新 pod 是否已部署:

    $ oc get deploy,ds -n stackrox -o wide 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    $ oc get pod -n stackrox --watch 
    1
    Copy to Clipboard Toggle word wrap
    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 节点扫描过程中的步骤进行操作。

流程

  1. 运行以下命令来更新合规性容器之一。

    • 对于禁用了指标的默认合规容器,请运行以下命令:

      $ 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 Toggle word wrap
    • 对于启用了 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"}]}]}}}}'
      Copy to Clipboard Toggle word wrap
  2. 通过执行以下步骤更新 Collector DaemonSet (DS):

    1. 运行以下命令,将新卷挂载添加到 Collector DS 中:

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令添加新 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"}]}]}}}}'
      Copy to Clipboard Toggle word wrap

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 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

3.6.2. 强制回滚 Central

您可以使用强制回滚回滚到较早版本的 Central (在 Central 服务启动后)。

重要

使用强制回滚切换到以前的版本可能会导致数据丢失和功能。

先决条件

  • 执行回滚前,持久性存储必须具有可用磁盘空间。Red Hat Advanced Cluster Security for Kubernetes 使用磁盘空间在升级过程中保留数据库副本。如果磁盘空间不足以存储副本,升级失败,您将无法回滚到较早的版本。

流程

  • 运行以下命令来执行强制回滚:

    • 要强制回滚到以前安装的版本:

      $ oc -n stackrox rollout undo deploy/central 
      1
      Copy to Clipboard Toggle word wrap
      1
      如果使用 Kubernetes,请输入 kubectl 而不是 oc
    • 强制回滚到特定版本:

      1. 编辑 Central 的 ConfigMap

        $ oc -n stackrox edit configmap/central-config 
        1
        Copy to Clipboard Toggle word wrap
        1
        如果使用 Kubernetes,请输入 kubectl 而不是 oc
      2. 更新 maintenance.forceRollbackVersion 键的值:

        data:
          central-config.yaml: |
            maintenance:
              safeMode: false
              compaction:
                 enabled: true
                 bucketFillFraction: .5
                 freeFractionThreshold: 0.75
              forceRollbackVersion: <x.x.x.x> 
        1
        
          ...
        Copy to Clipboard Toggle word wrap
        1
        指定要回滚到的版本。
      3. 更新 Central 镜像版本:

        $ 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 Toggle word wrap
        1
        如果使用 Kubernetes,请输入 kubectl 而不是 oc
        2
        指定要回滚到的版本。它必须与您在 central-config 配置映射中为 maintenance.forceRollbackVersion 键指定的版本相同。

3.7. 验证升级

更新的 Sensors 和 Collector 将继续从每个安全集群报告最新的数据。

在 RHACS 门户中可以看到 Sensor 最后联系 Central 的时间。

流程

  1. 在 RHACS 门户中,进入 Platform ConfigurationSystem Health
  2. 检查以确保 Sensor Upgrade 显示使用 Central 的集群最新。

3.8. 撤销 API 令牌

为了安全起见,红帽建议您撤销用于完成 Central 数据库备份的 API 令牌。

先决条件

  • 升级后,您必须重新加载 RHACS 门户页面并重新接受证书,以便继续使用 RHACS 门户。

流程

  1. 在 RHACS 门户中,进入 Platform ConfigurationIntegrations
  2. 向下滚动到 Authentication Tokens 类别,然后点 API Token
  3. 选中您要撤销的令牌名称前面的复选框。
  4. Revoke
  5. 在确认对话框中,点 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?"
Copy to Clipboard Toggle word wrap

流程

  1. 在点 Download YAML 文件和密钥 之前,确保为安全集群生成的捆绑包启用了将来的升级。
  2. 如果可能,请删除该安全集群并生成一个新的捆绑包,以确保启用了将来的升级。
  3. 如果无法重新创建集群,您可以执行以下操作:

    1. 确保服务帐户 sensor-upgrader 存在于与 Sensor 相同的命名空间中。
    2. 确保存在 ClusterRoleBinding (默认 name: &lt ;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)"
Copy to Clipboard Toggle word wrap

流程

  1. 确保 Secured Cluster 可以访问 registry,并拉取镜像 < image_reference:tag >。
  2. 确保在安全集群中正确配置了镜像 pull secret。

3.9.3. 升级器因为未知原因无法启动

症状

集群页面中会显示以下错误:

"Upgrade initialization error: Pod terminated: (Error)"
Copy to Clipboard Toggle word wrap

流程

  1. 确保 upgrader 有足够的权限来访问集群对象。如需更多信息,请参阅"Upgrader is missing permissions"。
  2. 查看 upgrader 日志以了解更多信息。
3.9.3.1. 获取升级器日志

运行以下命令可以访问日志:

$ kubectl -n <namespace> logs deploy/sensor-upgrader 
1
Copy to Clipboard Toggle word wrap
1
对于 <namespace >,指定运行 Sensor 的命名空间。

通常,升级器部署只在进行升级时短时间内在集群中运行。稍后它会被删除,因此使用编配器 CLI 访问其日志可能需要适当的时间。

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat