×

使用 Operator 的中央配置选项

创建 Central 实例时,Operator 会列出以下 `Central` 自定义资源的配置选项。

下表包含外部 PostgreSQL 数据库的设置。

中央设置

参数 描述

central.adminPasswordSecret

指定一个包含 `password` 数据项中管理员密码的密钥。如果省略,操作员会自动生成密码并将其存储在 `central-htpasswd` 密钥的 `password` 项中。

central.defaultTLSSecret

默认情况下,Central 只提供内部 TLS 证书,这意味着您需要在入口或负载均衡器级别处理 TLS 终止。如果您想在 Central 中终止 TLS 并提供自定义服务器证书,您可以指定一个包含证书和私钥的密钥。

central.adminPasswordGenerationDisabled

将此参数设置为 `true` 可禁用自动管理员密码生成。仅在您执行替代身份验证方法的首次设置后才使用此选项。不要将其用于初始安装。否则,您必须重新安装自定义资源才能重新登录。

central.tolerations

如果节点选择器选择了受污染的节点,请使用此参数为 Central 指定污点容忍键、值和效果。此参数主要用于基础设施节点。

central.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

central.exposure.loadBalancer.enabled

将其设置为 `true` 可通过负载均衡器公开 Central。

central.exposure.loadBalancer.port

使用此参数指定负载均衡器的自定义端口。

central.exposure.loadBalancer.ip

使用此参数指定为负载均衡器保留的静态 IP 地址。

central.exposure.route.enabled

设置为true 可通过 Red Hat OpenShift 路由公开 Central。默认值为false

central.exposure.route.host

指定 Central 路由要使用的自定义主机名。保留未设置状态以接受 OpenShift Container Platform 提供的默认值。

central.exposure.nodeport.enabled

设置为true 可通过节点端口公开 Central。默认值为false

central.exposure.nodeport.port

用于指定显式节点端口。

central.monitoring.exposeEndpoint

使用Enabled启用 Central 的监控。启用监控后,RHACS 会在端口号9090上创建一个新的监控服务。默认值为Disabled

central.nodeSelector

如果希望此组件仅在特定节点上运行,可以使用此参数配置节点选择器。

central.resources.limits

使用此参数覆盖 Central 的默认资源限制。

central.resources.requests

使用此参数覆盖 Central 的默认资源请求。

central.imagePullSecrets

使用此参数指定 Central 镜像的镜像拉取密钥。

central.db.passwordSecret.name

指定一个包含password数据项中数据库密码的密钥。仅当您想手动指定连接字符串时才使用此参数。如果省略,则操作符会自动生成密码并将其存储在central-db-password密钥的password项中。

central.db.connectionString

设置此参数将不会部署 Central DB,并且 Central 将使用指定的连接字符串进行连接。如果您为此参数指定了一个值,则还必须为central.db.passwordSecret.name指定一个值。此参数具有以下约束条件:

  • 连接字符串必须采用 PostgreSQL 文档中描述的关键字/值格式。有关更多信息,请参阅“其他资源”部分中的链接。

  • 仅支持 PostgreSQL 13。

  • 不支持通过 PGBouncer 进行连接。

  • 用户必须是能够创建和删除数据库的超级用户。

central.db.tolerations

如果节点选择器选择了受污点的节点,请使用此参数为 Central DB 指定污点容忍键、值和效果。此参数主要用于基础设施节点。

central.db.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

central.db.persistence.hostPath.path

指定主机路径以将持久性数据存储在主机上的目录中。Red Hat 不建议使用此方法。如果需要使用主机路径,必须与节点选择器一起使用。

central.db.persistence.persistentVolumeClaim.claimName

用于管理持久性数据的 PVC 的名称。如果不存在具有给定名称的 PVC,则会创建它。如果未设置,则默认值为central-db。为防止数据丢失,在删除 Central 时不会自动删除 PVC。

central.db.persistence.persistentVolumeClaim.size

通过声明创建持久卷时的大小。默认情况下会自动生成。

central.db.persistence.persistentVolumeClaim.storageClassName

要用于 PVC 的存储类的名称。如果您的集群未配置默认存储类,则必须为此参数提供一个值。

central.db.connectionPoolSize.minConnections

使用此参数覆盖 Central 和 Central DB 之间的默认最小连接池大小。默认值为 10。

central.db.connectionPoolSize.maxConnections

使用此参数覆盖 Central 和 Central DB 之间的默认最大连接池大小。默认值为 90。确保此值不超过 Central DB 支持的最大连接数。

  • 操作员管理的 Central DB 默认支持最多 200 个连接。

  • 对于外部 PostgreSQL 数据库,请检查数据库设置或咨询您的云提供商以了解托管数据库。

central.db.resources.limits

使用此参数覆盖 Central DB 的默认资源限制。

central.db.resources.requests

使用此参数覆盖 Central DB 的默认资源请求。

central.db.nodeSelector

如果希望此组件仅在特定节点上运行,可以使用此参数配置节点选择器。

StackRox 扫描器设置

参数 描述

scanner.analyzer.nodeSelector

如果希望此扫描器仅在特定节点上运行,可以使用此参数配置节点选择器。

scanner.analyzer.tolerations

如果节点选择器选择了受污点的节点,请使用此参数为 StackRox 扫描器指定污点容忍键、值和效果。此参数主要用于基础设施节点。

scanner.analyzer.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

scanner.analyzer.resources.limits

使用此参数覆盖 StackRox 扫描器的默认资源限制。

scanner.analyzer.resources.requests

使用此参数覆盖 StackRox 扫描器的默认资源请求。

scanner.analyzer.scaling.autoScaling

启用后,分析器副本的数量将根据负载动态管理,在指定的限制内。

scanner.analyzer.scaling.maxReplicas

指定分析器自动缩放配置中要使用的最大副本数。

scanner.analyzer.scaling.minReplicas

指定分析器自动缩放配置中要使用的最小副本数。

scanner.analyzer.scaling.replicas

禁用自动缩放时,副本数量始终配置为与此值匹配。

scanner.db.nodeSelector

如果希望此组件仅在特定节点上运行,可以使用此参数配置节点选择器。

scanner.db.tolerations

如果节点选择器选择了受污点的节点,请使用此参数为 StackRox 扫描器数据库指定污点容忍键、值和效果。此参数主要用于基础设施节点。

scanner.db.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

scanner.db.resources.limits

使用此参数覆盖 StackRox 扫描器数据库的默认资源限制。

scanner.db.resources.requests

使用此参数覆盖 StackRox 扫描器数据库的默认资源请求。

scanner.monitoring.exposeEndpoint

使用Enabled启用 StackRox 扫描器的监控。启用监控后,RHACS 会在端口号9090上创建一个新的监控服务。默认值为Disabled

scanner.scannerComponent

如果您不想部署 StackRox 扫描器,可以使用此参数禁用它。如果您禁用了 StackRox 扫描器,则本节中的所有其他设置均无效。Red Hat 不建议禁用 Red Hat Advanced Cluster Security for Kubernetes StackRox 扫描器。如果您启用了扫描器 V4,请不要禁用 StackRox 扫描器。扫描器 V4 需要同时启用 StackRox 扫描器才能提供必要的扫描功能。

扫描器 V4 设置

参数 描述

scannerV4.db.nodeSelector

如果希望此组件仅在特定节点上运行,可以使用此参数配置节点选择器。

scannerV4.db.tolerations

如果节点选择器选择了受污点的节点,请使用此参数为扫描器 V4 数据库指定污点容忍键、值和效果。此参数主要用于基础设施节点。

scannerV4.db.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

scannerV4.db.resources.limits

使用此参数覆盖扫描器 V4 数据库的默认资源限制。

scannerV4.db.resources.requests

使用此参数覆盖扫描器 V4 数据库的默认资源请求。

scannerV4.db.persistence.persistentVolumeClaim.claimName

用于管理扫描器 V4 持久性数据的 PVC 的名称。如果不存在具有给定名称的 PVC,则会创建它。如果未设置,则默认值为scanner-v4-db。为防止数据丢失,在删除 Central 时不会自动删除 PVC。

scannerV4.db.persistence.persistentVolumeClaim.size

用于管理扫描器 V4 持久性数据的 PVC 的大小。

scannerV4.db.persistence.persistentVolumeClaim.storageClassName

要用于 PVC 的存储类的名称。如果您的集群未配置默认存储类,则必须为此参数提供一个值。

scannerV4.indexer.nodeSelector

如果希望此组件仅在特定节点上运行,可以使用此参数配置节点选择器。

scannerV4.indexer.tolerations

如果节点选择器选择了受污点的节点,请使用此参数为扫描器 V4 索引器指定污点容忍键、值和效果。此参数主要用于基础设施节点。

scannerV4.indexer.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

scannerV4.indexer.resources.limits

使用此参数覆盖扫描器 V4 索引器的默认资源限制。

scannerV4.indexer.resources.requests

使用此参数可覆盖扫描器 V4 索引器的默认资源请求。

scannerV4.indexer.scaling.autoScaling

启用后,扫描器 V4 索引器副本的数量将根据负载动态管理,并在指定的限制内。

scannerV4.indexer.scaling.maxReplicas

指定扫描器 V4 索引器自动缩放配置中要使用的最大副本数。

scannerV4.indexer.scaling.minReplicas

指定扫描器 V4 索引器自动缩放配置中要使用的最小副本数。

scannerV4.indexer.scaling.replicas

当扫描器 V4 索引器的自动缩放功能被禁用时,副本数量始终配置为与该值匹配。

scannerV4.matcher.nodeSelector

如果希望此组件仅在特定节点上运行,可以使用此参数配置节点选择器。

scannerV4.matcher.tolerations

如果节点选择器选择了受污染的节点,请使用此参数为扫描器 V4 匹配器指定污染容忍键、值和效果。此参数主要用于基础设施节点。

scannerV4.matcher.hostAliases

使用此参数将主机和 IP 地址注入 Pod 的 hosts 文件。

scannerV4.matcher.resources.limits

使用此参数可覆盖扫描器 V4 匹配器的默认资源限制。

scannerV4.matcher.resources.requests

使用此参数可覆盖扫描器 V4 匹配器的默认资源请求。

scannerV4.matcher.scaling.autoScaling

启用后,扫描器 V4 匹配器副本的数量将根据负载动态管理,并在指定的限制内。

scannerV4.matcher.scaling.maxReplicas

指定扫描器 V4 匹配器自动缩放配置中要使用的最大副本数。

scannerV4.matcher.scaling.minReplicas

指定扫描器 V4 匹配器自动缩放配置中要使用的最小副本数。

scannerV4.matcher.scaling.replicas

当扫描器 V4 匹配器的自动缩放功能被禁用时,副本数量始终配置为与该值匹配。

scannerV4.monitoring.exposeEndpoint

配置扫描器 V4 的监控端点。监控端点允许其他服务收集来自扫描器 V4 的指标,这些指标采用与 Prometheus 兼容的格式。使用Enabled公开监控端点。启用监控时,RHACS 会创建一个新的服务monitoring,端口为 9090,以及一个允许传入连接到该端口的网络策略。默认情况下,这是禁用的。

scannerV4.scannerComponent

启用扫描器 V4。默认值为default,表示禁用。要启用扫描器 V4,请将此参数设置为Enabled

常规和杂项设置

参数 描述

customize.annotations

允许为 Central 部署指定自定义注释。

customize.envVars

高级设置,用于配置环境变量。

egress.connectivityPolicy

配置 RHACS 是否应在线或离线模式下运行。在离线模式下,漏洞定义和内核模块的自动更新被禁用。

misc.createSCCs

指定true以创建 Central 的SecurityContextConstraints (SCC)。设置为true可能会在某些环境中导致问题。

monitoring.openshift.enabled

如果将此选项设置为false,Red Hat Advanced Cluster Security for Kubernetes 将不会设置 Red Hat OpenShift 监控。在 Red Hat OpenShift 4 上默认为true

network.policies

为了在网络级别提供安全性,RHACS 在安装 Central 的命名空间中创建默认的NetworkPolicy资源。这些网络策略允许对特定端口上的特定组件进行入口访问。如果您不希望 RHACS 创建这些策略,请将此参数设置为Disabled。默认值为Enabled

禁用创建默认网络策略可能会中断 RHACS 组件之间的通信。如果禁用创建默认策略,则必须创建自己的网络策略以允许此通信。

overlays

请参阅“使用带有覆盖层的 Operator 自定义安装”。

tls.additionalCAs

受保护集群信任的附加可信 CA 证书。这些证书通常在与使用私有证书颁发机构的服务集成时使用。

使用带有覆盖层的 Operator 自定义安装

了解如何使用 Operator 方法和覆盖层定制 RHACS 的安装。

覆盖层

CentralSecuredCluster自定义资源未将某些低级配置选项作为参数公开时,可以使用.spec.overlays字段进行调整。使用此字段可以修改这些自定义资源生成的 Kubernetes 资源。

.spec.overlays字段包含一系列补丁,按其列出的顺序应用。这些补丁在部署到集群之前由 Operator 对 Kubernetes 资源进行处理。

CentralSecuredCluster中的.spec.overlays字段允许用户以任意方式修改低级 Kubernetes 资源。仅当所需的自定义项无法通过SecuredClusterCentral自定义资源获得时,才使用此功能。

.spec.overlays功能的支持主要受到限制,因为它允许对 Kubernetes 资源进行复杂且高度具体的修改,而这些修改在一个实现到另一个实现之间可能差异很大。这种级别的自定义引入了超出标准使用场景的复杂性,使得难以提供广泛的支持。每次修改都可能独一无二,可能在不同版本的和产品的配置之间以不可预测的方式与 Kubernetes 系统交互。这种可变性意味着对这些自定义的故障排除和保证其稳定性需要特定于每个人的设置的专业知识和理解。因此,虽然此功能增强了根据精确需求定制 Kubernetes 资源的能力,但也必须承担更大的责任以确保配置的兼容性和稳定性,尤其是在升级或更改底层产品期间。

以下示例显示了覆盖层的结构

overlays:
- apiVersion: v1     (1)
  kind: ConfigMap    (2)
  name: my-configmap (3)
  patches:
    - path: .data    (4)
      value: |       (5)
        key1: data2
        key2: data2
1 目标 Kubernetes 资源 ApiVersion,例如apps/v1v1networking.k8s.io/v1
2 资源类型(例如,Deployment、ConfigMap、NetworkPolicy)
3 资源名称,例如my-configmap
4 指向字段的 JSONPath 表达式,例如spec.template.spec.containers[name:central].env[-1]
5 新字段值的 YAML 字符串

添加覆盖层

对于自定义,可以将覆盖层添加到CentralSecuredCluster自定义资源。使用 OpenShift CLI (oc) 或 OpenShift Container Platform Web 控制台进行修改。

如果覆盖层未按预期生效,请检查 RHACS Operator 日志中是否存在任何语法错误或记录的问题。

覆盖层示例

为 Central ServiceAccount 指定 EKS Pod 角色 ARN

central ServiceAccount 添加 Amazon Elastic Kubernetes Service (EKS) Pod 角色 Amazon 资源名称 (ARN) 注释,如下例所示

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
  # ...
  overlays:
  - apiVersion: v1
    kind: ServiceAccount
    name: central
    patches:
      - path: metadata.annotations.eks\.amazonaws\.com/role-arn
        value: "\"arn:aws:iam:1234:role\""

将环境变量注入 Central 部署

将环境变量注入central部署,如下例所示

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
  # ...
  overlays:
  - apiVersion: apps/v1
    kind: Deployment
    name: central
    patches:
    - path: spec.template.spec.containers[name:central].env[-1]
      value: |
        name: MY_ENV_VAR
        value: value

使用入口规则扩展网络策略

allow-ext-to-central网络策略的 999 端口流量添加入口规则,如下例所示

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
    # ...
    overlays:
    - apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      name: allow-ext-to-central
      patches:
        - path: spec.ingress[-1]
          value: |
            ports:
            - port: 999
              protocol: TCP

修改 ConfigMap 数据

修改central-endpoints ConfigMap 数据,如下例所示

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
    # ...
    overlays:
    - apiVersion: v1
      kind: ConfigMap
      name: central-endpoints
      patches:
      - path: data
        value: |
          endpoints.yaml: |
            disableDefault: false

Central部署添加容器

central部署添加一个新容器,如下例所示。

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
    # ...
    overlays:
    - apiVersion: apps/v1
      kind: Deployment
      name: central
      patches:
        - path: spec.template.spec.containers[-1]
      value: |
        name: nginx
        image: nginx
        ports:
          - containerPort: 8000
            name: http
            protocol: TCP