×

在使用 Compliance Operator 之前,必须确保它已部署在集群中。

Compliance Operator 可能会在托管平台(例如 OpenShift Dedicated、AWS Classic 上的 Red Hat OpenShift Service 和 Microsoft Azure Red Hat OpenShift)上报告不正确的结果。有关更多信息,请参阅知识库文章 Compliance Operator 在托管服务上报告不正确的结果

在部署 Compliance Operator 之前,您需要在集群中定义持久性存储以存储原始结果输出。有关更多信息,请参阅 持久性存储概述管理默认存储类

通过 Web 控制台安装 Compliance Operator

先决条件
  • 您必须拥有 `admin` 权限。

  • 您必须配置 `StorageClass` 资源。

步骤
  1. 在 OpenShift Container Platform Web 控制台中,导航到 **操作符** → **OperatorHub**。

  2. 搜索 Compliance Operator,然后单击 **安装**。

  3. 保留 **安装模式** 和 **命名空间** 的默认选择,以确保操作符将安装到 `openshift-compliance` 命名空间。

  4. 单击 **安装**。

验证

要确认安装是否成功

  1. 导航到 **操作符** → **已安装的操作符** 页面。

  2. 检查 Compliance Operator 是否已安装在 `openshift-compliance` 命名空间中,并且其状态为 `Succeeded`。

如果操作符未成功安装

  1. 导航到 **操作符** → **已安装的操作符** 页面,并检查 `Status` 列中是否存在任何错误或故障。

  2. 导航到 **工作负载** → **Pod** 页面,并检查 `openshift-compliance` 项目中任何报告问题的 Pod 的日志。

如果已修改 `restricted` 安全上下文约束 (SCC) 以包含 `system:authenticated` 组或添加了 `requiredDropCapabilities`,则 Compliance Operator 由于权限问题可能无法正常工作。

您可以为 Compliance Operator 扫描程序 Pod 服务帐户创建一个自定义 SCC。有关更多信息,请参阅 为 Compliance Operator 创建自定义 SCC

使用 CLI 安装 Compliance Operator

先决条件
  • 您必须拥有 `admin` 权限。

  • 您必须配置 `StorageClass` 资源。

步骤
  1. 定义 `Namespace` 对象

    示例 `namespace-object.yaml`
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged (1)
      name: openshift-compliance
    1 在 OpenShift Container Platform 4.17 中,Pod 安全标签必须在命名空间级别设置为 `privileged`。
  2. 创建 `Namespace` 对象

    $ oc create -f namespace-object.yaml
  3. 定义 `OperatorGroup` 对象

    示例 `operator-group-object.yaml`
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance
  4. 创建 `OperatorGroup` 对象

    $ oc create -f operator-group-object.yaml
  5. 定义 `Subscription` 对象

    示例 `subscription-object.yaml`
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
  6. 创建 `Subscription` 对象

    $ oc create -f subscription-object.yaml

如果正在设置全局调度程序功能并启用 `defaultNodeSelector`,则必须手动创建命名空间并使用 `openshift.io/node-selector: “”` 更新 `openshift-compliance` 命名空间(或安装 Compliance Operator 的命名空间)的注释。这将删除默认节点选择器并防止部署失败。

验证
  1. 通过检查 CSV 文件验证安装是否成功

    $ oc get csv -n openshift-compliance
  2. 验证合规性 Operator 正在运行

    $ oc get deploy -n openshift-compliance

在 ROSA 托管控制平面 (HCP) 上安装合规性 Operator

从合规性 Operator 1.5.0 版本开始,该 Operator 已在使用托管控制平面的 Red Hat OpenShift Service on AWS 上进行了测试。

Red Hat OpenShift Service on AWS 托管控制平面集群对由 Red Hat 管理的控制平面访问权限有限制。默认情况下,合规性 Operator 将调度到master节点池中的节点,但在 Red Hat OpenShift Service on AWS 托管控制平面安装中不可用。这要求您以允许 Operator 在可用节点池上进行调度的方式配置Subscription对象。此步骤对于在 Red Hat OpenShift Service on AWS 托管控制平面集群上成功安装是必要的。

先决条件
  • 您必须拥有 `admin` 权限。

  • 您必须配置 `StorageClass` 资源。

步骤
  1. 定义 `Namespace` 对象

    namespace-object.yaml 文件示例
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged (1)
      name: openshift-compliance
    1 在 OpenShift Container Platform 4.17 中,Pod 安全标签必须在命名空间级别设置为 `privileged`。
  2. 运行以下命令创建Namespace对象

    $ oc create -f namespace-object.yaml
  3. 定义 `OperatorGroup` 对象

    operator-group-object.yaml 文件示例
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance
  4. 运行以下命令创建OperatorGroup对象

    $ oc create -f operator-group-object.yaml
  5. 定义 `Subscription` 对象

    subscription-object.yaml 文件示例
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      config:
        nodeSelector:
          node-role.kubernetes.io/worker: "" (1)
    1 更新 Operator 部署以在worker节点上部署。
  6. 运行以下命令创建Subscription对象

    $ oc create -f subscription-object.yaml
验证
  1. 运行以下命令检查集群服务版本 (CSV) 文件,以验证安装是否成功

    $ oc get csv -n openshift-compliance
  2. 使用以下命令验证合规性 Operator 是否正在运行

    $ oc get deploy -n openshift-compliance

如果已修改 `restricted` 安全上下文约束 (SCC) 以包含 `system:authenticated` 组或添加了 `requiredDropCapabilities`,则 Compliance Operator 由于权限问题可能无法正常工作。

您可以为 Compliance Operator 扫描程序 Pod 服务帐户创建一个自定义 SCC。有关更多信息,请参阅 为 Compliance Operator 创建自定义 SCC

在 Hypershift 托管控制平面安装合规性 Operator

可以通过 OperatorHub 创建Subscription文件,在托管控制平面中安装合规性 Operator。

托管控制平面仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能支持范围的更多信息,请参见 技术预览功能支持范围

先决条件
  • 您必须拥有 `admin` 权限。

步骤
  1. 定义一个类似于以下内容的Namespace对象

    示例 `namespace-object.yaml`
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged (1)
      name: openshift-compliance
    1 在 OpenShift Container Platform 4.17 中,Pod 安全标签必须在命名空间级别设置为 `privileged`。
  2. 运行以下命令创建Namespace对象

    $ oc create -f namespace-object.yaml
  3. 定义 `OperatorGroup` 对象

    示例 `operator-group-object.yaml`
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance
  4. 运行以下命令创建OperatorGroup对象

    $ oc create -f operator-group-object.yaml
  5. 定义 `Subscription` 对象

    示例 `subscription-object.yaml`
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      config:
        nodeSelector:
          node-role.kubernetes.io/worker: ""
        env:
        - name: PLATFORM
          value: "HyperShift"
  6. 运行以下命令创建Subscription对象

    $ oc create -f subscription-object.yaml
验证
  1. 通过运行以下命令检查 CSV 文件来验证安装是否成功

    $ oc get csv -n openshift-compliance
  2. 运行以下命令验证合规性 Operator 是否正在运行

    $ oc get deploy -n openshift-compliance

其他资源