升级

Red Hat Advanced Cluster Security for Kubernetes 3.71

升级 Red Hat Advanced Cluster Security for Kubernetes

Red Hat OpenShift Documentation Team

摘要

本节介绍了使用 Helm chart 或 roxctl 命令行界面升级 Red Hat Advanced Cluster Security for Kubernetes。

第 1 章 使用 Helm chart 升级

如果使用 Helm chart 安装 Red Hat Advanced Cluster Security for Kubernetes,要升级到 Red Hat Advanced Cluster Security for Kubernetes 的最新版本,您必须执行以下操作:

  • 更新 Helm Chart。
  • 更新中央服务 Helm Chart 的配置文件。
  • 升级中央服务 Helm Chart。
  • 更新 secure-cluster-services Helm Chart 的配置文件。
  • 升级 secured-cluster-services Helm chart。
重要

为确保最佳功能,请将同一版本用于 secure-cluster-services Helm Chart 和 central-services Helm Chart。

1.1. 更新 Helm Chart 仓库

在升级到 Red Hat Advanced Cluster Security for Kubernetes 的新版本前,您必须始终更新 Helm chart。

先决条件

  • 您必须已经添加了 Red Hat Advanced Cluster Security for Kubernetes Helm Chart 仓库。

流程

  • 更新 Red Hat Advanced Cluster Security for Kubernetes chart 软件仓库。

    $ helm repo update

验证

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

    $ helm search repo -l rhacs/

1.2. 其他资源

1.3. 在部署 central-services Helm Chart 后更改配置选项

在部署 central-services Helm Chart 后,您可以对任何配置选项进行更改。

流程

  1. 使用新值更新 values-public.yamlvalues-private.yaml 配置文件。
  2. 运行 helm upgrade 命令并使用 -f 选项指定配置文件:

    $ helm upgrade -n stackrox \
      stackrox-central-services rhacs/central-services \
      -f <path_to_values_public.yaml> \
      -f <path_to_values_private.yaml>
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

1.4. 在部署 secure-cluster-services Helm chart 后更改配置选项

在部署 secure-cluster-services Helm Chart 后,您可以对任何配置选项进行更改。

流程

  1. 使用新值更新 values-public.yamlvalues-private.yaml 配置文件。
  2. 运行 helm upgrade 命令并使用 -f 选项指定配置文件:

    $ helm upgrade -n stackrox \
      stackrox-secured-cluster-services rhacs/secured-cluster-services \
      --reuse-values \ 1
      -f <path_to_values_public.yaml> \
      -f <path_to_values_private.yaml>
    1
    您必须指定 --reuse-values 参数,否则 Helm upgrade 命令重置所有之前配置的设置。
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

第 2 章 使用 roxctl CLI 手动升级

您可以从受支持的旧版本升级到 Red Hat Advanced Cluster Security for Kubernetes 的最新版本。

要将 Red Hat Advanced Cluster Security for Kubernetes 升级到最新版本,您必须执行以下操作:

  • 备份中央数据库
  • 升级 Central
  • 升级 roxctl CLI
  • 升级扫描器
  • 验证所有受保护的集群都已升级

2.1. 备份 Central 数据库

在基础架构灾难的情况下,您可以备份中心数据库,并使用该备份从失败的升级或数据恢复中回滚。

先决条件

  • 您必须具有一个 API 令牌,并且具有对 Red Hat Advanced Cluster Security for Kubernetes 的所有资源的 read 权限。analysts 系统角色具有所有资源的 read 权限。
  • 已安装了 roxctl CLI。
  • 您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量。

流程

  • 运行备份命令:

    • 对于 Red Hat Advanced Cluster Security for Kubernetes 3.0.55 及更新版本:

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
    • 对于 Red Hat Advanced Cluster Security for Kubernetes 3.0.54 和更早的版本:

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" central db backup

2.2. 升级中央集群

备份 Central 数据库后,下一步是升级中部集群。此步骤包括 upgrade Central、roxctl CLI 和 Scanner。

2.2.1. 升级 Central

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

先决条件

  • 如果从私有镜像 registry 部署镜像,请先将新镜像推送到私有 registry 中,然后替换本节中的命令中的镜像 registry。

流程

  • 运行以下命令来升级 Central:

    $ oc -n stackrox patch deploy/central -p '{"spec":{"template":{"spec":{"containers":[{"name":"central","env":[{"name":"ROX_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}]}]}}}}' 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    $ oc -n stackrox patch deployment/scanner -p '{"spec":{"template":{"spec":{"containers":[{"name":"scanner","securityContext":{"runAsUser":65534}}]}}}}' 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    $ oc -n stackrox set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.71.3 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    重要
    • 如果您要从 Red Hat Advanced Cluster Security for Kubernetes 3.65.0 升级,必须运行以下命令来创建 stackrox-central-diagnostics 角色:

      $ oc -n stackrox patch role stackrox-central-diagnostics -p '{"rules":[{"apiGroups":["*"],"resources":["deployments","daemonsets","replicasets","configmaps","services"],"verbs":["get","list"]}]}' 1
      1
      如果使用 Kubernetes,请输入 kubectl 而不是 oc
    • 如果您还没有使用 Helm 或 Operator 安装 Red Hat Advanced Cluster Security for Kubernetes,并希望使用 OpenShift OAuth 服务器启用身份验证,您必须运行以下命令:

      $ oc -n stackrox set env deploy/central ROX_ENABLE_OPENSHIFT_AUTH=true
      $ oc -n stackrox patch serviceaccount/central -p '
      {
      "metadata": {
      "annotations": {
      "serviceaccounts.openshift.io/oauth-redirecturi.main": "sso/providers/openshift/callback",
      "serviceaccounts.openshift.io/oauth-redirectreference.main": "{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"central"}}"
      }
      }
      }'

验证

  • 检查新 pod 是否已部署:

    $ oc get deploy -n stackrox -o wide 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    $ oc get pod -n stackrox --watch 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

2.2.2. 升级 roxctl CLI

要将 roxctl CLI 升级到最新版本,您必须卸载 roxctl CLI 的现有版本,然后安装 roxctl CLI 的最新版本。

2.2.2.1. 卸载 roxctl CLI

您可以按照以下流程卸载 Linux 上的 roxctl CLI 二进制文件。

流程

  • 查找并删除 roxctl 二进制文件:

    $ ROXPATH=$(which roxctl) && rm -f $ROXPATH 1
    1
    根据您的环境,您可能需要管理员删除 roxctl 二进制文件。

2.2.2.2. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.71.3/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version

2.2.2.3. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.71.3/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version

2.2.2.4. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.71.3/bin/Windows/roxctl.exe

验证

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

    $ roxctl version

升级 roxctl CLI 后,您可以升级 Scanner。

2.2.3. 升级扫描器

您可以使用 roxctl CLI 将 Scanner 更新至最新版本。

先决条件

  • 如果从私有镜像 registry 部署镜像,您必须首先将新镜像推送到私有 registry 中,然后编辑以下部分中的命令以使用私有镜像 registry 的名称。

流程

  1. 如果已经创建了自定义扫描程序配置,则必须在更新扫描程序配置文件前应用这些更改。

    1. 使用以下 roxctl 命令生成 Scanner:

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generate
    2. 应用 TLS secret YAML 文件:

      • 如果使用 OpenShift Container Platform,请输入以下命令:

        $ oc apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yaml
      • 如果使用 Kubernetes,请输入以下命令:

        $ kubectl apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yaml
    3. 应用 Scanner 配置 YAML 文件:

      • 如果使用 OpenShift Container Platform,请输入以下命令:

        $ oc apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
      • 如果使用 Kubernetes,请输入以下命令:

        $ kubectl apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
  2. 更新 Scanner 镜像:

    • 如果使用 OpenShift Container Platform,请输入以下命令:

      $ oc -n stackrox set image deploy/scanner scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:3.71.3
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl -n stackrox set image deploy/scanner scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:3.71.3
  3. 更新 Scanner 数据库镜像:

    • 如果使用 OpenShift Container Platform,请输入以下命令:

      $ oc -n stackrox set image deploy/scanner-db db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:3.71.3 init-db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:3.71.3
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl -n stackrox set image deploy/scanner-db db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:3.71.3 init-db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:3.71.3

验证

  • 检查新 pod 是否已成功部署:

    • 如果使用 OpenShift Container Platform,请输入以下命令:

      $ oc get pod -n stackrox --watch
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl get pod -n stackrox --watch

2.2.3.1. 升级到 RHACS 版本 3.71

如果您使用 roxctl CLI 和 YAML 文件升级到 RHACS 3.71,则需要执行一些额外的步骤。Scanner DB 镜像不再将 scanner-db-password Kubernetes Secret 挂载到 db Scanner DB 容器中。相反,扫描程序-db-password 仅适用于 init 容器 init-db。因此,您必须将 POSTGRES_PASSWORD_FILE 环境变量添加到 init 容器配置中。init 容器还必须挂载 scanner-db-tls-volumescanner-db-password 卷。如果使用 OpenShift Container Platform 或 Kubernetes,以下小节为 RHACS 提供升级步骤。如需有关 init 容器的更多信息,请参阅 Kubernetes 文档

先决条件

  • 此流程假设 Scanner DB 配置中的 db 容器位于 索引 0 中,它是 容器 列表中的第一个条目;而 scanner-db-password 卷挂载位于 index 2,即第三个条目。

虽然这种情况适用于大多数部署,但在输入这些命令前检查 Scanner DB 的配置。如果您的值不同,则必须通过以下命令调整 …​/containers/x/volumeMounts/y 值。

流程

  1. 应用补丁:

    • 如果使用 OpenShift Container Platform,请输入以下命令:

      $ oc -n stackrox patch deployment.apps/scanner-db --patch '{"spec":{"template":{"spec":{"initContainers":[{"name":"init-db","env":[{"name":"POSTGRES_PASSWORD_FILE","value":"/run/secrets/stackrox.io/secrets/password"}],"command":["/usr/local/bin/docker-entrypoint.sh","postgres","-c","config_file=/etc/postgresql.conf"],"volumeMounts":[{"name":"db-data","mountPath":"/var/lib/postgresql/data"},{"name":"scanner-db-tls-volume","mountPath":"/run/secrets/stackrox.io/certs","readOnly":true},{"name":"scanner-db-password","mountPath":"/run/secrets/stackrox.io/secrets","readOnly":true}],"securityContext":{"runAsGroup":70,"runAsNonRoot":true,"runAsUser":70}}]}}}}'
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl -n stackrox patch deployment.apps/scanner-db --patch '{"spec":{"template":{"spec":{"initContainers":[{"name":"init-db","env":[{"name":"POSTGRES_PASSWORD_FILE","value":"/run/secrets/stackrox.io/secrets/password"}],"command":["/usr/local/bin/docker-entrypoint.sh","postgres","-c","config_file=/etc/postgresql.conf"],"volumeMounts":[{"name":"db-data","mountPath":"/var/lib/postgresql/data"},{"name":"scanner-db-tls-volume","mountPath":"/run/secrets/stackrox.io/certs","readOnly":true},{"name":"scanner-db-password","mountPath":"/run/secrets/stackrox.io/secrets","readOnly":true}],"securityContext":{"runAsGroup":70,"runAsNonRoot":true,"runAsUser":70}}]}}}}'
  2. 删除路径:

    • 如果使用 OpenShift Container Platform,请输入以下命令:

      $ oc -n stackrox patch deployment.apps/scanner-db --type json --patch '[{"op":"remove","path":"/spec/template/spec/containers/0/volumeMounts/2"}]'
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl -n stackrox patch deployment.apps/scanner-db --type json --patch '[{"op":"remove","path":"/spec/template/spec/containers/0/volumeMounts/2"}]'

2.2.4. 验证 Central 集群升级

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

流程

  • 检查 Central 日志:

    如果使用 OpenShift Container Platform,请输入以下命令:

    $ oc logs -n stackrox deploy/central -c central

    如果使用 Kubernetes,请输入以下命令:

    $ kubectl logs -n stackrox deploy/central -c central

成功升级的输出示例

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

2.3. 升级所有安全集群

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

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

    • 使用自动升级来更新所有受保护的集群。
    • 跳过本节中的说明,并按照 验证升级和撤销 API 令牌 部分中的说明进行操作。
  • 如果您不使用自动升级,则必须在包括 Central 集群在内的所有安全集群中运行本节中的说明。

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

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

2.3.1. 更新就绪度探测

如果您要从 Red Hat Advanced Cluster Security for Kubernetes 3.65.0 的以下版本升级,则需要运行以下命令来更新就绪度探测路径。如果您运行的版本高于 3.65,请跳过这一步。

流程

  • 更新就绪度探测路径:

    $ oc -n stackrox patch deploy/sensor -p '{"spec":{"template":{"spec":{"containers":[{"name":"sensor","readinessProbe":{"httpGet":{"path":"/ready"}}}]}}}}' 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

2.3.2. 更新 OpenShift 安全性上下文约束

根据要升级到的 Red Hat Advanced Cluster Security for Kubernetes 的版本,您必须更新特定的 OpenShift Container Platform 安全性上下文约束(SCC)。

警告

只有在 OpenShift Container Platform 中使用 Red Hat Advanced Cluster Security for Kubernetes 时,才运行本节中的命令。否则,请跳过本节中的说明。

流程

  • Red Hat Advanced Cluster Security for Kubernetes 3.64.0 对 SCC 进行了重新命名。如果您要从以下 Red Hat Advanced Cluster Security for Kubernetes 3.64.0 版本升级,则必须删除并重新应用 SCC,否则跳过这一步:

    1. 运行以下命令以更新 Central:

      $ oc apply -f - <<EOF
      kind: SecurityContextConstraints
      apiVersion: security.openshift.io/v1
      metadata:
        name: stackrox-central
        labels:
          app.kubernetes.io/name: stackrox
        annotations:
          kubernetes.io/description: stackrox-central is the security constraint for the central server
          email: support@stackrox.com
          owner: stackrox
      allowHostDirVolumePlugin: false
      allowedCapabilities: []
      allowHostIPC: false
      allowHostNetwork: false
      allowHostPID: false
      allowHostPorts: false
      allowPrivilegeEscalation: false
      allowPrivilegedContainer: false
      defaultAddCapabilities: []
      fsGroup:
        type: MustRunAs
        ranges:
          - max: 4000
            min: 4000
      priority: 0
      readOnlyRootFilesystem: true
      requiredDropCapabilities: []
      runAsUser:
        type: MustRunAs
        uid: 4000
      seLinuxContext:
        type: MustRunAs
      seccompProfiles:
        - '*'
      users:
        - system:serviceaccount:stackrox:central
      volumes:
        - '*'
      EOF
      $ oc delete scc central
    2. 运行以下命令以更新 Scanner:

      $ oc apply -f - <<EOF
      kind: SecurityContextConstraints
      apiVersion: security.openshift.io/v1
      metadata:
        name: stackrox-scanner
        labels:
          app.kubernetes.io/name: stackrox
        annotations:
          email: support@stackrox.com
          owner: stackrox
          kubernetes.io/description: stackrox-scanner is the security constraint for the Scanner container
      priority: 0
      runAsUser:
        type: RunAsAny
      seLinuxContext:
        type: RunAsAny
      seccompProfiles:
        - '*'
      users:
        - system:serviceaccount:stackrox:scanner
      volumes:
        - '*'
      allowHostDirVolumePlugin: false
      allowedCapabilities: []
      allowHostIPC: false
      allowHostNetwork: false
      allowHostPID: false
      allowHostPorts: false
      allowPrivilegeEscalation: false
      allowPrivilegedContainer: false
      defaultAddCapabilities: []
      fsGroup:
        type: RunAsAny
      readOnlyRootFilesystem: false
      requiredDropCapabilities: []
      EOF
      $ oc delete scc scanner
    3. 在每个 OpenShift Secured 集群中运行以下命令:

      $ oc apply -f - <<EOF
      apiVersion: security.openshift.io/v1
      kind: SecurityContextConstraints
      metadata:
        name: stackrox-admission-control
        labels:
          app.kubernetes.io/name: stackrox
          auto-upgrade.stackrox.io/component: "sensor"
        annotations:
          email: support@stackrox.com
          owner: stackrox
          kubernetes.io/description: stackrox-admission-control is the security constraint for the admission controller
      users:
        - system:serviceaccount:stackrox:admission-control
      priority: 0
      runAsUser:
        type: RunAsAny
      seLinuxContext:
        type: RunAsAny
      seccompProfiles:
        - '*'
      supplementalGroups:
        type: RunAsAny
      fsGroup:
        type: RunAsAny
      groups: []
      readOnlyRootFilesystem: true
      allowHostDirVolumePlugin: false
      allowHostIPC: false
      allowHostNetwork: false
      allowHostPID: false
      allowHostPorts: false
      allowPrivilegeEscalation: false
      allowPrivilegedContainer: false
      allowedCapabilities: []
      defaultAddCapabilities: []
      requiredDropCapabilities: []
      volumes:
        - configMap
        - downwardAPI
        - emptyDir
        - secret
      ---
      apiVersion: security.openshift.io/v1
      kind: SecurityContextConstraints
      metadata:
        name: stackrox-collector
        labels:
          app.kubernetes.io/name: stackrox
          auto-upgrade.stackrox.io/component: "sensor"
        annotations:
          email: support@stackrox.com
          owner: stackrox
          kubernetes.io/description: This SCC is based on privileged, hostaccess, and hostmount-anyuid
      users:
        - system:serviceaccount:stackrox:collector
      allowHostDirVolumePlugin: true
      allowPrivilegedContainer: true
      fsGroup:
        type: RunAsAny
      groups: []
      priority: 0
      readOnlyRootFilesystem: true
      runAsUser:
        type: RunAsAny
      seLinuxContext:
        type: RunAsAny
      seccompProfiles:
        - '*'
      supplementalGroups:
        type: RunAsAny
      allowHostIPC: false
      allowHostNetwork: false
      allowHostPID: false
      allowHostPorts: false
      allowPrivilegeEscalation: true
      allowedCapabilities: []
      defaultAddCapabilities: []
      requiredDropCapabilities: []
      volumes:
        - configMap
        - downwardAPI
        - emptyDir
        - hostPath
        - secret
      ---
      apiVersion: security.openshift.io/v1
      kind: SecurityContextConstraints
      metadata:
        name: stackrox-sensor
        labels:
          app.kubernetes.io/name: stackrox
          auto-upgrade.stackrox.io/component: "sensor"
        annotations:
          email: support@stackrox.com
          owner: stackrox
          kubernetes.io/description: stackrox-sensor is the security constraint for the sensor
      users:
        - system:serviceaccount:stackrox:sensor
        - system:serviceaccount:stackrox:sensor-upgrader
      priority: 0
      runAsUser:
        type: RunAsAny
      seLinuxContext:
        type: RunAsAny
      seccompProfiles:
        - '*'
      supplementalGroups:
        type: RunAsAny
      fsGroup:
        type: RunAsAny
      groups: []
      readOnlyRootFilesystem: true
      allowHostDirVolumePlugin: false
      allowHostIPC: false
      allowHostNetwork: false
      allowHostPID: false
      allowHostPorts: false
      allowPrivilegeEscalation: true
      allowPrivilegedContainer: false
      allowedCapabilities: []
      defaultAddCapabilities: []
      requiredDropCapabilities: []
      volumes:
        - configMap
        - downwardAPI
        - emptyDir
        - secret
      EOF
      $ oc delete scc admission-control collector sensor

2.3.3. 更新其他镜像

在不使用自动升级时,您必须更新每个安全集群中的 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:3.71.3 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. 更新 Compliance 镜像:

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

    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:3.71.3 1
    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}
  4. 更新准入控制镜像:

    $ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.71.3

2.3.4. 验证安全集群升级

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

流程

  • 检查新 pod 是否已部署:

    $ oc get deploy,ds -n stackrox -o wide 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    $ oc get pod -n stackrox --watch 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

2.4. 回滚 Central

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

2.4.1. 正常回滚 Central

如果升级 Red Hat Advanced Cluster Security for Kubernetes 失败,您可以回滚到以前版本的 Central。

先决条件

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

流程

  • 当升级失败时( Central 服务启动前),运行以下命令回滚到以前的版本:

    $ oc -n stackrox rollout undo deploy/central 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

2.4.2. 回滚 Central 强制

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

重要

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

先决条件

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

流程

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

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

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

      1. 编辑 Central 的 ConfigMap

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

2.5. 验证升级

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

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

流程

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

2.6. 撤销 API 令牌

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

先决条件

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

流程

  1. 在 RHACS 门户网站中,进入 Platform ConfigurationIntegrations
  2. 向下滚动到 Authentication Tokens 类别,然后点 API Token
  3. 选中您要撤销的令牌名称前面的复选框。
  4. Revoke
  5. 在确认对话框中,点 Confirm

法律通告

Copyright © 2023 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.