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
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    $ oc -n stackrox patch deployment/scanner -p '{"spec":{"template":{"spec":{"containers":[{"name":"scanner","securityContext":{"runAsUser":65534}}]}}}}' 
    1
    Copy to Clipboard Toggle word wrap
    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
    Copy to Clipboard Toggle word wrap
    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
      Copy to Clipboard Toggle word wrap
      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
      Copy to Clipboard Toggle word wrap
      $ 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"}}"
      }
      }
      }'
      Copy to Clipboard Toggle word wrap

验证

  • 检查新 pod 是否已部署:

    $ oc get deploy -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

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
    Copy to Clipboard Toggle word wrap
    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
    Copy to Clipboard Toggle word wrap
  2. 使 roxctl 二进制文件可执行:

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

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

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

验证

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

    $ roxctl version
    Copy to Clipboard Toggle word wrap

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
    Copy to Clipboard Toggle word wrap
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
    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

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

验证

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

    $ roxctl version
    Copy to Clipboard Toggle word wrap

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

2.2.3. 升级扫描器

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

先决条件

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

流程

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

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

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generate
      Copy to Clipboard Toggle word wrap
    2. 应用 TLS secret YAML 文件:

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

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

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

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

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

        $ kubectl apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
        Copy to Clipboard Toggle word wrap
  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
      Copy to Clipboard Toggle word wrap
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl -n stackrox set image deploy/scanner scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:3.71.3
      Copy to Clipboard Toggle word wrap
  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
      Copy to Clipboard Toggle word wrap
    • 如果使用 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
      Copy to Clipboard Toggle word wrap

验证

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

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

      $ oc get pod -n stackrox --watch
      Copy to Clipboard Toggle word wrap
    • 如果使用 Kubernetes,请输入以下命令:

      $ kubectl get pod -n stackrox --watch
      Copy to Clipboard Toggle word wrap

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}}]}}}}'
      Copy to Clipboard Toggle word wrap
    • 如果使用 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}}]}}}}'
      Copy to Clipboard Toggle word wrap
  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"}]'
      Copy to Clipboard Toggle word wrap
    • 如果使用 Kubernetes,请输入以下命令:

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

2.2.4. 验证 Central 集群升级

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

流程

  • 检查 Central 日志:

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

    $ oc logs -n stackrox deploy/central -c central
    Copy to Clipboard Toggle word wrap

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

    $ kubectl logs -n stackrox deploy/central -c central
    Copy to Clipboard Toggle word wrap

成功升级的输出示例

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat