Alauda Security Service for StackRox 安装指南

本指南提供了安装 Alauda Security Service for StackRox 的详细操作步骤。

目录

安装要求

  • 架构:amd64
  • 内核版本:>=5.8
  • 资源要求:
    • CPU:>=4
    • 内存:>=8GB
  • PostgreSQL:>=13
  • TLS 证书

下载与导入

  1. 从 Custom 门户下载 Alauda Security Service for StackRox。

  2. 使用 Violet 工具将插件上传至平台。

    violet push stackrox-operator.vx.x.x.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password>

安装 StackRox Operator

  1. 登录平台,进入 Administrator 页面。

  2. 在左侧导航栏选择 Marketplace -> OperatorHub,进入 OperatorHub 页面。

  3. 找到 Alauda Security Service for StackRox,点击 Install 进入安装页面。

配置参数:

参数推荐配置
Channel默认 Channel 为 alpha
Version选择需要安装的版本。
Installation ModeCluster:集群下所有命名空间共用一个 Operator 来创建和管理实例,资源占用较低。
Installation Location选择 Recommended:如果不存在,会自动创建。
Upgrade StrategyManual:当 OperatorHub 有新版本时,需要手动确认升级 Operator 到最新版本。
  1. Install Operator 页面选择 Default Configuration,点击 Install 完成 Alauda Security Service for StackRox 的安装。

Central 服务安装

INFO

StackRox Central 服务的部分组件资源消耗较大,建议部署在 infra 节点上,并设置 nodeSelector 和 tolerations,确保组件仅在这些节点上运行。如果您正在评估产品且尚未配置 infra 节点,可以移除这些设置,使组件在所有节点上运行。

有关 infra 节点规划的指导,请参见

安装前操作步骤

  1. 创建 central-db-password secret:
    将密码存储在 password 数据项中。

    kubectl create secret generic central-db-password \
      --from-literal=password=<central db password> \
      -n stackrox-operator
  2. 启用 Ingress 并配置域名证书:
    使用您的证书和密钥创建 TLS secret。

    kubectl create secret tls central-ingress-tls \
      --cert=<path/to/tls.crt> \
      --key=<path/to/tls.key> \
      -n stackrox-operator

通过 UI 安装

  1. 登录平台,进入 Administrator 页面。

  2. 在左侧导航栏选择 Marketplace -> OperatorHub,进入 OperatorHub 页面。

  3. 找到 Alauda Security Service for StackRox,点击卡片进入详情页面。

  4. 切换到 All Instances 标签页,点击 Create,选择 Central 进入 Create Central 页面。

  5. 按提示填写配置参数。

  6. 点击 Create 完成 Central 服务 的安装。


通过 YAML 安装

将以下 YAML 应用到目标集群:

# YAML Deployment Method for StackRox Operator
# Create a StackRox Central Services instance
---
apiVersion: platform.stackrox.io/v1alpha1
kind: Central
metadata:
  name: stackrox-central-services
  namespace: stackrox-operator
  labels: {}
  annotations:
    cpaas.io/display-name: ""
spec:
  egress:
    connectivityPolicy: Online  # Supported: Online/Offline. Offline mode requires manual upload of the vulnerability database.
  central:
    exposure:
      ingress:
        enabled: true
        host: example.com
        tls:
          secretName: central-ingress-tls
      nodePort:
        enabled: true
      loadBalancer:
        enabled: false
    db:
      passwordSecret:
        name: central-db-password
      connectionString: host=central-db.stackrox port=5432 user=postgres sslmode=require  # Specify the database connection string

    # Tolerations Optional
    # If you want this component to only run on specific nodes, you can configure tolerations of tainted nodes.
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/infra
      value: reserved
      operator: Equal
    nodeSelector:
      node-role.kubernetes.io/infra: ""
  

  # scannerV4 Optional
  scannerV4:
    db:
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        value: reserved
        operator: Equal

      nodeSelector:
        node-role.kubernetes.io/infra: ""

    indexer:
      scaling:
        autoScaling: Enabled
        maxReplicas: 5
        minReplicas: 2
        replicas: 3
      tolerations:
        - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        value: reserved
        operator: Equal
      nodeSelector:
        node-role.kubernetes.io/infra: ""

    matcher:
      scaling:
        autoScaling: Enabled
        maxReplicas: 5
        minReplicas: 1
        replicas: 3
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        value: reserved
        operator: Equal
      nodeSelector:
        node-role.kubernetes.io/infra: ""

  # Ingress domain certificate CA or cert. If ingress is not enabled, no configuration is needed.
  tls:
    additionalCAs:
      - content: |-
          -----BEGIN CERTIFICATE-----
          MIIB0TCCAXigAwIBAgIUXvN2ovk16V6+7jUAJpYdEXo1K4UwCgYIKoZIzj0EAwIw
          RzEnMCUGA1UEAxMeU3RhY2tSb3ggQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRwwGgYD
          VQQFExM2MDYyNzAwMjg3MTkxNjM0NDY4MB4XDTI1MDkyNTA2MjQwMFoXDTMwMDky
          NDA2MjQwMFowRzEnMCUGA1UEAxMeU3RhY2tSb3ggQ2VydGlmaWNhdGUgQXV0aG9y
          aXR5MRwwGgYDVQQFExM2MDYyNzAwMjg3MTkxNjM0NDY4MFkwEwYHKoZIzj0CAQYI
          KoZIzj0DAQcDQgAE57RYqus1/v3VcJ/fP+vG4flQ8uunyx2lguQ9cT0VYOZJnKDh
          FQ/58jgEPeHGgu+wU2Mvjumc7qFe1gP/jSuW66NCMEAwDgYDVR0PAQH/BAQDAgEG
          MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKxLpgvy2HnDYZTQw2nIiLdR3fxh
          MAoGCCqGSM49BAMCA0cAMEQCID2uapFJnsdM4BGmnRCx7HqUrwrpBEjXZ98atcKO
          IDCXAiAwuYzXAIMLNfLRakIz+hXxvvGY3+A5ZeRARZQVPatTaQ==
          -----END CERTIFICATE-----
        name: additional-ca

Central 配置说明

参数说明
central.nodeSelector如果 nodeSelector 选择了带污点的节点,使用此参数为 Central 指定污点容忍的 key、value 和 effect。此参数主要用于 infra 节点。
central.tolerations如果 nodeSelector 选择了带污点的节点,使用此参数为 Central 指定污点容忍的 key、value 和 effect。此参数主要用于 infra 节点。
central.exposeMonitoring指定为 true 时,在端口 9090 上暴露 Central 的 Prometheus 指标端点。
central.image.registry自定义镜像仓库地址,覆盖全局的 image.registry 参数,用于 Central 镜像。
central.image.name自定义镜像名称,覆盖默认的 Central 镜像名称(main)。
central.image.tag自定义镜像标签,覆盖默认的 Central 镜像标签。如果在新安装时指定了自定义标签,升级新版本时需手动通过 helm upgrade 命令递增标签。如果您在自己的仓库中镜像了 Central 镜像,请勿修改原始镜像标签。
central.image.fullRefCentral 镜像的完整引用,包括仓库地址、镜像名称和标签。设置此参数会覆盖 central.image.registry、central.image.name 和 central.image.tag 参数。
central.resources.requests.memoryCentral 的内存请求。
central.resources.requests.cpuCentral 的 CPU 请求。
central.resources.limits.memoryCentral 的内存限制。
central.resources.limits.cpuCentral 的 CPU 限制。
central.exposure.loadBalancer.enabled设置为 true 时,使用负载均衡器暴露 Central。
central.exposure.loadBalancer.port暴露 Central 的端口号,默认端口号为 443。
central.exposure.nodePort.enabled设置为 true 时,使用主机端口服务暴露 Central。
central.exposure.nodePort.port暴露 Central 的端口号。若跳过此参数,Alauda Container Platform 会自动分配端口号。Red Hat 建议使用主机端口暴露 StackRox 时不要指定端口号。
central.exposure.ingress.enabled设置为 true 时,使用 ingress 暴露 Central。设置为 false 时禁用所有 ingress 配置。此参数仅适用于 Alauda Container Platform 集群。
central.exposure.ingress.host指定 Central 透传路由的自定义主机名。未设置时,采用 Alauda Container Platform 提供的默认值。此参数仅适用于 Alauda Container Platform 集群。
central.exposure.ingress.ingressClassName指定 Central ingress 的自定义 ingress 类名。
central.exposure.ingress.tls.secretName配置 Central ingress 的 TLS secret。
central.db.passwordSecret.name指定包含密码的 secret,密码存储在 "password" 数据项中。
central.db.connectionString指定对应外部管理数据库的连接字符串。
scannerV4.db.tolerations如果希望该组件仅在特定节点运行,可配置带污点节点的容忍。
scannerV4.db.nodeSelector如果希望该组件仅在特定节点运行,可在此配置 nodeSelector。
scannerV4.indexer.scaling.autoScaling启用时,根据负载动态管理组件副本数,受以下限制参数控制。
scannerV4.indexer.scaling.maxReplicas
scannerV4.indexer.scaling.minReplicas
scannerV4.indexer.scaling.replicas关闭自动扩缩容时,副本数固定为此值。
scannerV4.indexer.tolerations如果希望该组件仅在特定节点运行,可配置带污点节点的容忍。
scannerV4.indexer.nodeSelector如果希望该组件仅在特定节点运行,可在此配置 nodeSelector。
scannerV4.matcher.scaling.autoScaling启用时,根据负载动态管理组件副本数,受以下限制参数控制。
scannerV4.matcher.scaling.maxReplicas
scannerV4.matcher.scaling.minReplicas
scannerV4.matcher.scaling.replicas关闭自动扩缩容时,副本数固定为此值。
scannerV4.matcher.tolerations如果希望该组件仅在特定节点运行,可配置带污点节点的容忍。
scannerV4.matcher.nodeSelector如果希望该组件仅在特定节点运行,可在此配置 nodeSelector。
tls.additionalCAs允许您指定额外的受信任根 CA。

访问 Central 控制台

  • 地址: https://example.com(Central ingress 主机地址)

  • 初始账号: admin

  • 初始密码: 初始密码存储在 stackrox central-htpasswd secret 中。

    kubectl -n stackrox-operator get secret central-htpasswd -o go-template='{{index .data "password" | base64decode}}'

Cluster 服务安装

Cluster 安装前操作步骤

  1. 按照平台指南 Download CLI 下载 CLI 工具。

  2. 运行以下命令生成集群访问证书:

    roxctl central crs generate <cluster name> --output crs.yaml --endpoint <stackrox central address> --password <central admin password>

    密码可从 central-htpasswd secret 中获取。

  3. 创建 Secured Cluster CRs YAML

    kubectl apply -f crs.yaml -n stackrox-operator

Cluster 通过 UI 安装

  1. 登录平台,进入 Administrator 页面。

  2. 在左侧导航栏选择 Marketplace -> OperatorHub,进入 OperatorHub 页面。

  3. 找到 Alauda Security Service for StackRox,点击卡片进入详情页面。

  4. 切换到 All Instances 标签页,点击 Create,选择 Central 进入 Create Cluster Service 页面。

  5. 按提示填写配置参数。

  6. 点击 Create 完成 Cluster 服务 的安装。


Cluster 通过 YAML 安装

将以下 YAML 应用到目标集群:

---
# Create a StackRox Secured Cluster Services instance
---
apiVersion: platform.stackrox.io/v1alpha1
kind: SecuredCluster
metadata:
  name: stackrox-secured-cluster-services
  namespace: stackrox-operator
  labels: {}
  annotations:
    cpaas.io/display-name: ""
spec:
  clusterName: business-1
  centralEndpoint: wss://example.com:443  # Specify the address of StackRox Central Services. If it is in the same cluster as Central, configuration may not be necessary.

  # AdmissionControl Optional
  admissionControl:
    replicas: 3
    tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        value: reserved
        operator: Equal
    nodeSelector:
      node-role.kubernetes.io/infra: ""

  # Sensor Optional
  sensor:
    tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        value: reserved
        operator: Equal
    nodeSelector:
      node-role.kubernetes.io/infra: ""

  # Ingress domain certificate CA or cert. If ingress is not enabled, no configuration is needed.
  tls: 
    additionalCAs:
      content: |-
        -----BEGIN CERTIFICATE-----
        MIIB0TCCAXigAwIBAgIUXvN2ovk16V6+7jUAJpYdEXo1K4UwCgYIKoZIzj0EAwIw
        RzEnMCUGA1UEAxMeU3RhY2tSb3ggQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRwwGgYD
        VQQFExM2MDYyNzAwMjg3MTkxNjM0NDY4MB4XDTI1MDkyNTA2MjQwMFoXDTMwMDky
        NDA2MjQwMFowRzEnMCUGA1UEAxMeU3RhY2tSb3ggQ2VydGlmaWNhdGUgQXV0aG9y
        aXR5MRwwGgYDVQQFExM2MDYyNzAwMjg3MTkxNjM0NDY4MFkwEwYHKoZIzj0CAQYI
        KoZIzj0DAQcDQgAE57RYqus1/v3VcJ/fP+vG4flQ8uunyx2lguQ9cT0VYOZJnKDh
        FQ/58jgEPeHGgu+wU2Mvjumc7qFe1gP/jSuW66NCMEAwDgYDVR0PAQH/BAQDAgEG
        MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKxLpgvy2HnDYZTQw2nIiLdR3fxh
        MAoGCCqGSM49BAMCA0cAMEQCID2uapFJnsdM4BGmnRCx7HqUrwrpBEjXZ98atcKO
        IDCXAiAwuYzXAIMLNfLRakIz+hXxvvGY3+A5ZeRARZQVPatTaQ==
        -----END CERTIFICATE-----
      name: additional-ca
 

Secured Cluster 配置说明

参数说明
clusterName此集群的唯一名称,将显示在 StackRox UI 中。注意:名称一旦设置,无法更改。如需更改,需删除并重新创建该对象以注册新名称的集群。
centralEndpoint连接的 StackRox Central 实例的地址,包括端口号。如果未指定端口且地址包含 https:// 协议,则默认端口为 443。若使用不支持 gRPC 的负载均衡器,请使用 wss:// 前缀指定 WebSocket 协议。注意:留空时,Sensor 会尝试连接运行在同一命名空间的 Central 实例。
admissionControl.replicasadmission control pod 的副本数。
admissionControl.tolerations如果希望该组件仅在特定节点运行,可配置带污点节点的容忍。
admissionControl.nodeSelector如果希望该组件仅在特定节点运行,可在此配置 nodeSelector。
sensor.tolerations如果希望该组件仅在特定节点运行,可配置带污点节点的容忍。
sensor.nodeSelector如果希望该组件仅在特定节点运行,可在此配置 nodeSelector。
tls.additionalCAs允许您指定额外的受信任根 CA。