4.12. 管理平台 Operator (技术预览)
平台 Operator 是一个基于 OLM 的 Operator,可在 OpenShift Container Platform 集群的第 0 天操作期间或之后安装,并参与集群的生命周期。作为集群管理员,您可以使用 PlatformOperator
API 管理平台 Operator。
平台 Operator 类型只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
4.12.1. 关于平台 Operator
Operator Lifecycle Manager (OLM) 引入了一个新的 Operator 类型,名为 平台 Operator。平台 Operator 是一个基于 OLM 的 Operator,可在 OpenShift Container Platform 集群的第 0 天操作期间或之后安装,并参与集群的生命周期。作为集群管理员,您可以使用平台 Operator 来进一步自定义 OpenShift Container Platform 安装,以满足您的要求和用例。
使用 OpenShift Container Platform 中的现有集群功能功能,集群管理员可能已经禁用了基于 Cluster Version Operator(CVO)的部分组件,因为对于集群安装前的初始负载,它们被视为是非必须的。平台 Operator 通过提供额外的自定义选项来迭代此模型。通过平台 Operator 机制,依赖于 RukPak 组件中的资源,现在可在集群安装时安装基于 OLM 的 Operator,如果 Operator 无法成功安装,则可阻止集群推出部署。
在 OpenShift Container Platform 4.12 中,这个技术预览版本侧重于基本平台 Operator 机制,并构建在即将发布的版本中扩展概念的基础。您可以使用集群范围的 PlatformOperator
API 在启用了 TechPreviewNoUpgrade
功能集的集群中或之后配置 Operator。
其他资源
4.12.1.1. 平台 Operator 的技术预览限制
在 OpenShift Container Platform 4.12 中,平台 Operator 功能的技术预览版本中,以下限制决定是否可以通过平台 Operator 机制安装 Operator:
-
Kubernetes 清单必须使用 Operator Lifecycle Manager (OLM)
registry+v1
捆绑包格式进行打包。 - Operator 无法声明软件包或 group/version/kind (GVK) 依赖项。
-
Operator 无法指定
AllNamespaces
以外的集群服务版本 (CSV) 安装模式 -
Operator 无法指定任何
Webhook
或APIService
定义。 -
所有软件包捆绑包都必须位于
redhat-operators
目录源中。
在考虑这些限制后,可以成功安装以下 Operator:
3scale-operator | amq-broker-rhel8 |
amq-online | amq-streams |
ansible-cloud-addons-operator | apicast-operator |
container-security-operator | eap |
file-integrity-operator | gatekeeper-operator-product |
integration-operator | jws-operator |
kiali-ossm | node-healthcheck-operator |
odf-csi-addons-operator | odr-hub-operator |
openshift-custom-metrics-autoscaler-operator | openshift-gitops-operator |
openshift-pipelines-operator-rh | quay-operator |
red-hat-camel-k | rhpam-kogito-operator |
service-registry-operator | servicemeshoperator |
skupper-operator |
在此技术预览版本中不提供以下功能:
- 集群推出部署后自动升级平台 Operator 软件包
- 扩展平台 Operator 机制以支持任何基于 CVO 的可选组件
4.12.2. 先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 在集群中启用
TechPreviewNoUpgrades
功能集警告启用
TechPreviewNoUpgrade
功能集将无法撤消,并防止次版本更新。不建议在生产环境集群中使用这些功能集。-
仅在集群中启用
redhat-operators
目录源。这是技术预览版本期间的一个限制。 -
oc
命令在工作站上安装。
4.12.3. 在集群创建过程中安装平台 Operator
作为集群管理员,您可以通过在创建集群过程中提供 FeatureGate
和 PlatformOperator
清单来安装平台 Operator。
流程
- 从受支持的基于 OLM 的 Operator 集合中选择一个平台 Operator。有关此集合列表以及当前限制的详情,请参阅"平台 Operator 的技术预览限制"。
-
选择集群安装方法并按照创建
install-config.yaml
文件进行操作。有关准备集群安装的详情,请参阅"选择集群安装方法并为用户准备它"。 创建
install-config.yaml
文件并完成对其所做的任何修改后,切换到包含安装程序的目录并创建清单:$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定包含集群的install-config.yaml
文件的目录名称。
在
<installation_directory>/manifests/
目录中创建一个FeatureGate
对象 YAML 文件,该文件启用了TechPreviewNoUpgrade
功能集,例如feature-gate.yaml
文件:feature-gate.yaml
文件示例apiVersion: config.openshift.io/v1 kind: FeatureGate metadata: annotations: include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" release.openshift.io/create-only: "true" name: cluster spec: featureSet: TechPreviewNoUpgrade 1
- 1
- 启用
TechPreviewNoUpgrade
功能集。
在
<installation_directory>/manifests/
目录中为所选平台 Operator 创建PlatformOperator
对象 YAML 文件,如 Red Hat OpenShift Service Mesh Operator 的service-mesh-po.yaml
文件:service-mesh-po.yaml
文件示例apiVersion: platform.openshift.io/v1alpha1 kind: PlatformOperator metadata: name: service-mesh-po spec: package: name: servicemeshoperator
当您准备好完成集群安装时,请参阅您选择的安装方法并继续运行
openshift-install create cluster
命令。在集群创建过程中,提供的清单用于启用
TechPreviewNoUpgrade
功能集并安装所选平台 Operator。重要无法成功安装平台 Operator 将阻止集群安装过程。
验证
运行以下命令,检查
service-mesh-po
platform Operator 的状态:$ oc get platformoperator service-mesh-po -o yaml
输出示例
... status: activeBundleDeployment: name: service-mesh-po conditions: - lastTransitionTime: "2022-10-24T17:24:40Z" message: Successfully applied the service-mesh-po BundleDeployment resource reason: InstallSuccessful status: "True" 1 type: Installed
- 1
- 等待
Installed
状态报告为True
。
验证
platform-operators-aggregated
集群 Operator 是否已报告Available=True
状态:$ oc get clusteroperator platform-operators-aggregated -o yaml
输出示例
... status: conditions: - lastTransitionTime: "2022-10-24T17:43:26Z" message: All platform operators are in a successful state reason: AsExpected status: "False" type: Progressing - lastTransitionTime: "2022-10-24T17:43:26Z" status: "False" type: Degraded - lastTransitionTime: "2022-10-24T17:43:26Z" message: All platform operators are in a successful state reason: AsExpected status: "True" type: Available
4.12.4. 在集群创建后安装平台 Operator
作为集群管理员,您可以在使用集群范围的 PlatformOperator
API 启用 TechPreviewNoUpgrades
功能集的集群中安装平台 Operator。
流程
- 从受支持的基于 OLM 的 Operator 集合中选择一个平台 Operator。有关此集合列表以及当前限制的详情,请参阅"平台 Operator 的技术预览限制"。
为所选平台 Operator 创建
PlatformOperator
对象 YAML 文件,如 Red Hat OpenShift Service Mesh Operator 的service-mesh-po.yaml
文件:sevice-mesh-po.yaml
文件示例apiVersion: platform.openshift.io/v1alpha1 kind: PlatformOperator metadata: name: service-mesh-po spec: package: name: servicemeshoperator
运行以下命令来创建
PlatformOperator
对象:$ oc apply -f service-mesh-po.yaml
注意如果您的集群没有启用
TechPreviewNoUpgrade
功能集,则对象创建会失败,并显示以下信息:error: resource mapping not found for name: "service-mesh-po" namespace: "" from "service-mesh-po.yaml": no matches for kind "PlatformOperator" in version "platform.openshift.io/v1alpha1" ensure CRDs are installed first
验证
运行以下命令,检查
service-mesh-po
platform Operator 的状态:$ oc get platformoperator service-mesh-po -o yaml
输出示例
... status: activeBundleDeployment: name: service-mesh-po conditions: - lastTransitionTime: "2022-10-24T17:24:40Z" message: Successfully applied the service-mesh-po BundleDeployment resource reason: InstallSuccessful status: "True" 1 type: Installed
- 1
- 等待
Installed
状态报告为True
。
验证
platform-operators-aggregated
集群 Operator 是否已报告Available=True
状态:$ oc get clusteroperator platform-operators-aggregated -o yaml
输出示例
... status: conditions: - lastTransitionTime: "2022-10-24T17:43:26Z" message: All platform operators are in a successful state reason: AsExpected status: "False" type: Progressing - lastTransitionTime: "2022-10-24T17:43:26Z" status: "False" type: Degraded - lastTransitionTime: "2022-10-24T17:43:26Z" message: All platform operators are in a successful state reason: AsExpected status: "True" type: Available
其他资源
4.12.5. 删除平台 Operator
作为集群管理员,您可以删除现有的平台 Operator。Operator Lifecycle Manager (OLM) 执行级联删除。首先,OLM 会删除平台 Operator 的捆绑包部署,然后删除 registry+v1
类型捆绑包中引用的任何对象。
平台 Operator Manager 和捆绑包部署置备程序只管理捆绑包中引用的对象,而不管理任何捆绑包工作负载本身部署的对象。例如,如果捆绑包工作负载会创建一个命名空间,且 Operator 没有配置为在删除 Operator 前进行清理,则它超出了 OLM 范围,以便在平台 Operator 删除过程中删除命名空间。
流程
获取已安装的平台 Operator 列表,找到您要删除的 Operator 的名称:
$ oc get platformoperator
删除所选 Operator 的
PlatformOperator
资源,如 Quay Operator:$ oc delete platformoperator quay-operator
输出示例
platformoperator.platform.openshift.io "quay-operator" deleted
验证
验证平台 Operator 的命名空间最终已被删除,例如 Quay Operator:
$ oc get ns quay-operator-system
输出示例
Error from server (NotFound): namespaces "quay-operator-system" not found
验证
platform-operators-aggregated
集群 Operator 继续报告Available=True
状态:$ oc get co platform-operators-aggregated
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE platform-operators-aggregated 4.12.0-0 True False False 70s