5.5. Compliance Operator 管理
5.5.1. 安装 Compliance Operator 复制链接链接已复制到粘贴板!
在使用 Compliance Operator 之前,您必须保证在集群中部署它。
所有集群节点都必须具有相同的发行版本,才能使此 Operator 正常工作。例如,对于运行 RHCOS 的节点,所有节点都必须具有相同的 RHCOS 版本。
Compliance Operator 可能会报告有关受管平台(如 OpenShift Dedicated、Red Hat OpenShift Service on AWS Classic)和 Microsoft Azure Red Hat OpenShift 的不正确的结果。如需更多信息,请参阅知识库文章 Compliance Operator 报告受管服务的错误结果。
5.5.1.1. 通过 Web 控制台安装 Compliance Operator 复制链接链接已复制到粘贴板!
先决条件
-
您必须具有
admin
权限。 -
您必须配置了
StorageClass
资源。
流程
-
在 OpenShift Container Platform Web 控制台中导航至 Operators
OperatorHub。 - 搜索 Compliance Operator,然后点 Install。
-
保留 安装模式 和 命名空间 的默认选择,以确保将 Operator 安装到
openshift-compliance
命名空间中。 - 点 Install。
验证
确认安装成功:
-
导航到 Operators
Installed Operators 页面。 -
检查 Compliance Operator 是否已安装在
openshift-compliance
命名空间中,其状态为Succeeded
。
如果 Operator 没有成功安装:
-
导航到 Operators
Installed Operators 页面,并检查 Status
列中是否有任何错误或故障。 -
导航到 Workloads
Pods 页面,检查 openshift-compliance
项目中报告问题的 pod 的日志。
如果 restricted
安全性上下文约束(SCC)已被修改为包含 system:authenticated
组或添加了 requiredDropCapabilities
,则 Compliance Operator 可能会因为权限问题而无法正常工作。
您可以为 Compliance Operator scanner Pod 服务帐户创建自定义 SCC。如需更多信息,请参阅为 Compliance Operator 创建自定义 SCC。
5.5.1.2. 使用 CLI 安装 Compliance Operator 复制链接链接已复制到粘贴板!
先决条件
-
您必须具有
admin
权限。 -
您必须配置了
StorageClass
资源。
流程
定义一个
Namespace
对象:namespace-object.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 OpenShift Container Platform 4.19 中,pod 安全标签必须在命名空间级别设置为
privileged
。
创建
Namespace
对象:oc create -f namespace-object.yaml
$ oc create -f namespace-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义一个
OperatorGroup
对象:operator-group-object.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
OperatorGroup
对象:oc create -f operator-group-object.yaml
$ oc create -f operator-group-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义一个
Subscription
对象:subscription-object.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
Subscription
对象:oc create -f subscription-object.yaml
$ oc create -f subscription-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果要设置全局调度程序功能并启用 defaultNodeSelector
,您必须手动创建命名空间并更新 openshift-compliance
命名空间的注解,或安装 Compliance Operator 的命名空间,使用 openshift.io/node-selector: ""
。这会删除默认节点选择器并防止部署失败。
验证
通过检查 CSV 文件来验证安装是否成功:
oc get csv -n openshift-compliance
$ oc get csv -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Compliance Operator 是否正在运行:
oc get deploy -n openshift-compliance
$ oc get deploy -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从 Compliance Operator 1.5.0 发行版本开始,Operator 会使用 Hosted control plane 针对 Red Hat OpenShift Service on AWS 测试。
在 Red Hat OpenShift Service on AWS 上托管的 control plane 集群限制对由红帽管理的 control plane 的访问。默认情况下,Compliance Operator 将调度到 master
节点池中的节点,该节点在 Red Hat OpenShift Service on AWS Hosted control plane 安装中不可用。这要求您配置 Subscription
对象,以便 Operator 在可用节点池中调度。此步骤是在 Red Hat OpenShift Service on AWS Hosted control plane 集群上成功安装所必需的。
先决条件
-
您必须具有
admin
权限。 -
您必须配置了
StorageClass
资源。
流程
定义一个
Namespace
对象:namespace-object.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 OpenShift Container Platform 4.19 中,pod 安全标签必须在命名空间级别设置为
privileged
。
运行以下命令来创建
Namespace
对象:oc create -f namespace-object.yaml
$ oc create -f namespace-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义一个
OperatorGroup
对象:operator-group-object.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
OperatorGroup
对象:oc create -f operator-group-object.yaml
$ oc create -f operator-group-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义一个
Subscription
对象:subscription-object.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 更新 Operator 部署,以便在
worker
节点上部署。
运行以下命令来创建
Subscription
对象:oc create -f subscription-object.yaml
$ oc create -f subscription-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令检查集群服务版本 (CSV) 文件来验证安装是否成功:
oc get csv -n openshift-compliance
$ oc get csv -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 Compliance Operator 是否正在运行:
oc get deploy -n openshift-compliance
$ oc get deploy -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果 restricted
安全性上下文约束(SCC)已被修改为包含 system:authenticated
组或添加了 requiredDropCapabilities
,则 Compliance Operator 可能会因为权限问题而无法正常工作。
您可以为 Compliance Operator scanner Pod 服务帐户创建自定义 SCC。如需更多信息,请参阅为 Compliance Operator 创建自定义 SCC。
通过创建一个 Subscription
文件,可以使用 OperatorHub 在托管 control plane 中安装 Compliance Operator。
托管的 control plane 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
-
您必须具有
admin
权限。
流程
定义类似如下的
Namespace
对象:namespace-object.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 OpenShift Container Platform 4.19 中,pod 安全标签必须在命名空间级别设置为
privileged
。
运行以下命令来创建
Namespace
对象:oc create -f namespace-object.yaml
$ oc create -f namespace-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义一个
OperatorGroup
对象:operator-group-object.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
OperatorGroup
对象:oc create -f operator-group-object.yaml
$ oc create -f operator-group-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义一个
Subscription
对象:subscription-object.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Subscription
对象:oc create -f subscription-object.yaml
$ oc create -f subscription-object.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,检查 CSV 文件来验证安装是否成功:
oc get csv -n openshift-compliance
$ oc get csv -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 Compliance Operator 是否正在运行:
oc get deploy -n openshift-compliance
$ oc get deploy -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.2. 更新 Compliance Operator 复制链接链接已复制到粘贴板!
作为集群管理员,您可以在 OpenShift Container Platform 集群上更新 Compliance Operator。
将 OpenShift Container Platform 集群更新至 4.14 版本可能会导致 Compliance Operator 无法按预期工作。这是因为一个持续的已知问题。如需更多信息,请参阅 OCPBUGS-18025。
5.5.2.1. 准备 Operator 更新 复制链接链接已复制到粘贴板!
已安装的 Operator 的订阅指定一个更新频道,用于跟踪和接收 Operator 的更新。您可以更改更新频道,以开始跟踪并从更新频道接收更新。
订阅中更新频道的名称可能会因 Operator 而异,但应遵守给定 Operator 中的常规约定。例如,频道名称可能会遵循 Operator 提供的应用程序的次发行版本更新流(1.2
、1.3
)或发行的频率(stable
、fast
)。
您不能将已安装的 Operator 更改为比当前频道旧的频道。
红帽客户门户网站 Labs 包括以下应用程序,可帮助管理员准备更新其 Operator:
您可以使用应用程序搜索基于 Operator Lifecycle Manager 的 Operator,并在不同版本的 OpenShift Container Platform 中验证每个更新频道的可用 Operator 版本。不包含基于 Cluster Version Operator 的 Operator。
5.5.2.2. 更改 Operator 的更新频道 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台更改 Operator 的更新频道。
如果订阅中的批准策略被设置为 Automatic,则更新过程会在所选频道中提供新的 Operator 版本时立即启动。如果批准策略设为 Manual,则必须手动批准待处理的更新。
先决条件
- 之前使用 Operator Lifecycle Manager(OLM)安装的 Operator。
流程
-
在 web 控制台的 Administrator 视角中,导航到 Operators
Installed Operators。 - 点击您要更改更新频道的 Operator 名称。
- 点 Subscription 标签页。
- 点 Update channel 下的更新频道名称。
- 点要更改的更新频道,然后点 Save。
对于带有 自动批准策略 的订阅,更新会自动开始。返回到 Operators
Installed Operators 页面,以监控更新的进度。完成后,状态会变为 Succeeded 和 Up to date。 对于采用手动批准策略的订阅,您可以从 Subscription 选项卡中手动批准更新。
5.5.2.3. 手动批准待处理的 Operator 更新 复制链接链接已复制到粘贴板!
如果已安装的 Operator 的订阅被设置为 Manual,则当其当前更新频道中发布新更新时,在开始安装前必须手动批准更新。
先决条件
- 之前使用 Operator Lifecycle Manager(OLM)安装的 Operator。
流程
-
在 OpenShift Container Platform Web 控制台的 Administrator 视角中,进入 Operators
Installed Operators。 - 处于待定更新的 Operator 会显示 Upgrade available 状态。点您要更新的 Operator 的名称。
- 点 Subscription 标签页。任何需要批准的更新都会在 Upgrade status 旁边显示。例如:它可能会显示 1 requires approval。
- 点 1 requires approval,然后点 Preview Install Plan。
- 检查列出可用于更新的资源。在满意后,点 Approve。
-
返回到 Operators
Installed Operators 页面,以监控更新的进度。完成后,状态会变为 Succeeded 和 Up to date。
5.5.3. 管理 Compliance Operator 复制链接链接已复制到粘贴板!
本节介绍安全性内容的生命周期,包括如何使用合规性内容的更新版本以及如何创建自定义 ProfileBundle
对象。
5.5.3.1. ProfileBundle CR 示例 复制链接链接已复制到粘贴板!
ProfileBundle
对象需要两个信息:包含 contentImage
的容器镜像的 URL 以及包含合规性内容的文件。contentFile
参数相对于文件系统的根目录。您可以定义内置的 rhcos4
ProfileBundle
对象,如下例所示:
5.5.3.2. 更新安全性内容 复制链接链接已复制到粘贴板!
安全内容作为 ProfileBundle
对象引用的容器镜像包括。要准确跟踪从捆绑包(如 Rules 或 Profiles)解析的 ProfileBundles
和 CustomResources 的更新,请使用摘要而不是标签来识别包含合规性内容的容器镜像:
oc -n openshift-compliance get profilebundles rhcos4 -oyaml
$ oc -n openshift-compliance get profilebundles rhcos4 -oyaml
输出示例
- 1
- 安全性容器镜像。
每个 ProfileBundle
都由一个部署来支持。当 Compliance Operator 检测到容器镜像摘要已更改时,会更新部署来反映内容的变化并再次解析内容。使用摘要而不是标签可确保您使用稳定且可预测的配置集集合。
5.5.4. 卸载 Compliance Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台或 CLI 从集群中删除 OpenShift Compliance Operator。
要删除 Compliance Operator,您必须首先删除命名空间中的对象。删除对象后,您可以通过删除 openshift-compliance 项目来删除 Operator 及其命名空间。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 - 必须安装 OpenShift Compliance Operator。
流程
使用 OpenShift Container Platform Web 控制台删除 Compliance Operator:
进入 Operators
Installed Operators Compliance Operator 页面。 - 点 All instances。
-
在 All namespaces 中,点 Options 菜单
删除所有 ScanSettingBinding、ComplainceSuite、ComplianceScan 和 ProfileBundle 对象。
-
切换到 Administration
Operators Installed Operators 页面。 -
点 Compliance Operator 条目
中的 Options 菜单并选择 Uninstall Operator。
-
切换到 Home
Projects 页面。 - 搜索 'compliance'。
点 openshift-compliance 项目
旁边的 Options 菜单,然后选择 Delete Project。
-
通过在对话框中输入
openshift-compliance
并点 Delete 来确认删除。
-
通过在对话框中输入
要删除 Compliance Operator,您必须首先删除命名空间中的对象。删除对象后,您可以通过删除 openshift-compliance 项目来删除 Operator 及其命名空间。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 - 必须安装 OpenShift Compliance Operator。
流程
删除命名空间中的所有对象。
删除
ScanSettingBinding
对象:oc delete ssb --all -n openshift-compliance
$ oc delete ssb --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ScanSetting
对象:oc delete ss --all -n openshift-compliance
$ oc delete ss --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ComplianceSuite
对象:oc delete suite --all -n openshift-compliance
$ oc delete suite --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ComplianceScan
对象:oc delete scan --all -n openshift-compliance
$ oc delete scan --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ProfileBundle
对象:oc delete profilebundle.compliance --all -n openshift-compliance
$ oc delete profilebundle.compliance --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除 Subscription 对象:
oc delete sub --all -n openshift-compliance
$ oc delete sub --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 CSV 对象:
oc delete csv --all -n openshift-compliance
$ oc delete csv --all -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除项目:
oc delete project openshift-compliance
$ oc delete project openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
project.project.openshift.io "openshift-compliance" deleted
project.project.openshift.io "openshift-compliance" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确认已删除命名空间:
oc get project/openshift-compliance
$ oc get project/openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Error from server (NotFound): namespaces "openshift-compliance" not found
Error from server (NotFound): namespaces "openshift-compliance" not found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow