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.6 
    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.6 
    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.6 
    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.6
    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
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat