第 4 章 在集群中添加 Operator
本指南指导集群管理员将 Operator 安装至 OpenShift Container Platform 集群并将 Operator 订阅到命名空间。
4.1. 安装来自 OperatorHub 的 Operator
作为集群管理员,您可使用 OpenShift Container Platform Web 控制台或 CLI 安装来自 OperatorHub 的 Operator。然后,您可将 Operator 订阅至一个或多个命名空间,供集群上的开发人员使用。
安装过程中,您必须为 Operator 确定以下初始设置:
- 安装模式
- 选择 All namespaces on the cluster (default) 将 Operator 安装至所有命名空间;或选择单个命名空间(如果可用),仅在选定命名空间中安装 Operator。本例选择 All namespaces…,以便 Operator 可用于所有用户和项目。
- 更新频道
- 如果某个 Operator 可通过多个频道获得,则可任选您想要订阅的频道。例如,要通过 stable 频道部署(如果可用),则从列表中选择这个选项。
- 批准策略
- 您可选择自动或手动更新。如果选择自动更新某个已安装的 Operator,则当相应 Operator 有可用的新版本时,Operator Lifecycle Manager (OLM) 将自动升级该 Operator 的运行实例,而无需人为干预。如果选择手动更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准该更新请求,才可将 Operator 更新至新版本。
4.1.1. 使用 Web 控制台从 OperatorHub 安装
此流程以 Cuchbase Operator 为例,使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装并订阅 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。
流程
-
在 Web 控制台中导航至 Operators
OperatorHub 页面。 在 Filter by keyword 方框中滚动或键入关键词(本例中为
Couchbase
),以查找所需 Operator。图 4.1. 通过关键词筛选 Operator
- 选定 Operator。对于社区 Operator 来说,系统会提醒您红帽对这类 Operator 不予认证。您必须确认收到该提醒才可继续。这时会显示 Operator 信息。
- 阅读 Operator 信息并单击 Install。
在 Create Operator Subscription 页面:
任选以下一项:
-
All namespaces on the cluster (default),选择该项会将 Operator 安装至默认
openshift-operators
命名空间,以便供集群中的所有命名空间监视和使用。该选项并非始终可用。 - A specific namespace on the cluster,该项支持您选择单一特定命名空间来安装 Operator。该 Operator 仅限在该单一命名空间中监视和使用。
-
All namespaces on the cluster (default),选择该项会将 Operator 安装至默认
- 选择一个更新频道(如有多个可用)。
- 如前面所述,选择自动或手动批准策略。
单击 Subscribe,以便该 Operator 可供 OpenShift Container Platform 集群上的所选命名空间使用。
如果选择手动批准策略,则订阅的升级状态将保持正在升级,直至您审核并批准该 Install Plan。
图 4.2. 在 Install Plan 页面手动批准
在 Install Plan 页面批准后,订阅的升级状态将变为最新。
如果选择自动批准策略,则升级状态应自动变为最新,而无需人为干预。
图 4.3. 订阅升级状态:最新
当订阅的升级状态变为最新后,选择 Operators
Installed Operators 来验证最终是否出现了 Couchbase ClusterServiceVersion (CSV) 且其 Status 在相关命名空间中最终能否解析为 InstallSucceeded。 注意对于 All namespaces… 安装模式,该状态会在
openshift-operators
命名空间中被解析为 InstallSucceeded,但您如果检查其他命名空间,其状态则会变为 Copied。如果没有:
-
检查“Workloads
Pods”页面上的 openshift-operators
项目(或其他相关命名空间,如果选中 A specific namespace… Installation Mode)中报告问题的 Pod 中的日志,以便进一步排除故障。
-
检查“Workloads
4.1.2. 使用 CLI 从 OperatorHub 安装
您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。使用 oc
命令来创建或更新订阅对象。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 - 在您的本地系统安装 oc 命令。
流程
查看 OperatorHub 中集群可用的 Operator 列表。
$ oc get packagemanifests -n openshift-marketplace NAME CATALOG AGE 3scale-operator Red Hat Operators 91m amq-online Red Hat Operators 91m amq-streams Red Hat Operators 91m ... couchbase-enterprise-certified Certified Operators 91m mariadb Certified Operators 91m mongodb-enterprise Certified Operators 91m ... etcd Community Operators 91m jaeger Community Operators 91m kubefed Community Operators 91m ...
注意适用于您所需 Operator 的 CatalogSource。
检查所需 Operator,以验证其支持的 InstallMode 和可用频道:
$ oc describe packagemanifests <operator_name> -n openshift-marketplace
订阅 Operator 的命名空间必须具有与 Operator 的 InstallMode 相匹配的 OperatorGroup,可采用
AllNamespaces
模式,也可采用SingleNamespace
模式。如果要安装的 Operator 采用AllNamespaces
模式,则表明openshift-operators
命名空间中已有适当的 OperatorGroup。如果要安装的 Operator 采用
SingleNamespace
模式,而您没有适当的 OperatorGroup,则必须创建一个。注意如果选择
SingleNamespace
模式,该流程的 Web 控制台版本会在后台自动为您处理 OperatorGroup 和订阅对象的创建。创建 OperatorGroup 对象 YAML 文件,如
operatorgroup.yaml
:OperatorGroup 示例
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: <operatorgroup_name> namespace: <namespace> spec: targetNamespaces: - <namespace>
创建 OperatorGroup 对象:
$ oc apply -f operatorgroup.yaml
创建一个订阅对象 YAML 文件,以便为 Operator 订阅一个命名空间,如
sub.yaml
:订阅示例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: <operator_name> namespace: openshift-operators 1 spec: channel: alpha name: <operator_name> 2 source: redhat-operators 3 sourceNamespace: openshift-marketplace 4
创建订阅对象:
$ oc apply -f sub.yaml
此时,OLM 已了解所选的 Operator。Operator 的 ClusterServiceVersion (CSV) 应出现在目标命名空间中,由 Operator 提供的 API 应可用于创建。
其他资源
-
要使用 OperatorHub 在集群中安装自定义 Operator,您必须首先将 Operator 工件上传至 Quay.io,然后再将您自己的
OperatorSource
添加至集群中。另外,您还可在 Operator 中添加 Secret 以便进行身份验证。之后,您便可像其他 Operator 一样在集群中管理这个 Operator 了。如需了解具体步骤,请参阅 Testing Operators。
其他资源