2.10. 创建 Operator 管理的服务实例
在 'odo' 中创建 Operator 管理的服务实例只是一个技术预览功能。技术预览功能不被红帽产品服务等级协议 (SLA) 支持,且可能在功能方面有缺陷。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
Operators 是打包、部署和管理 Kubernetes 应用程序的一个方法。通过 odo
,您可以从 Operator 提供的自定义资源定义(CRD)创建服务实例。然后,您可以在项目中使用这些实例,并将其链接到您的组件。
要从 Operator 创建服务,您必须确保 Operator 在它的 metadata
中定义了有效值才能启动请求的服务。odo
使用 Operator 的 metadata.annotations.alm-examples
YAML 文件启动该服务。如果此 YAML 具有占位符值或示例值,服务将无法启动。您可以修改 YAML 文件,使用修改后的值启动服务。要了解如何修改 YAML 文件并启动服务,请参阅通过 YAML 文件创建服务。
2.10.1. 先决条件
安装
oc
CLI 并登录到集群。- 请注意,集群的配置决定了可用的服务。要访问 Operator 服务,集群管理员必须首先在集群上安装相应的 Operator。如需了解更多相关信息,请参阅 在集群中添加 Operator。
-
安装
odo
CLI。 -
启用实验模式。要在
odo
中启用实验模式,请运行:odo preference set Experimental true
或者使用环境变量odo config set --env ODO_EXPERIMENTAL=true
。
2.10.2. 创建一个项目
创建一个项目来在一个独立的空间内保存源代码、测试并对库进行管理。
流程
登陆到一个OpenShift Container Platform集群。
$ odo login -u developer -p developer
创建一个项目:
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myproject
2.10.3. 列出来自于集群中安装的 Operator 的可用服务
使用 odo
,可以显示集群中安装的 Operator 列表及其提供的服务。
要列出当前项目中安装的 Operator,请运行:
$ odo catalog list services
命令列出 Operators 和 CRD。该命令的输出显示集群中安装的 Operator。例如:
Operators available in the cluster NAME CRDs etcdoperator.v0.9.4 EtcdCluster, EtcdBackup, EtcdRestore mongodb-enterprise.v1.4.5 MongoDB, MongoDBUser, MongoDBOpsManager
etcdoperator.v0.9.4
是 Operator,EtcdCluster
、EtcdBackup
和EtcdRestore
是 Operator 提供的 CRD。
2.10.4. 从 Operator 创建服务
如果 Operator 在 metadata
中定义了有效值来启动请求的服务,您可以通过 odo service create
来使用服务。
将服务的 YAML 作为本地驱动器上的文件输出:
$ oc get csv/etcdoperator.v0.9.4 -o yaml
验证服务的值是否有效:
apiVersion: etcd.database.coreos.com/v1beta2 kind: EtcdCluster metadata: name: example spec: size: 3 version: 3.2.13
从
etcdoperator.v0.9.4
Operator 启动EtcdCluster
服务:$ odo service create etcdoperator.v0.9.4 --crd EtcdCluster
验证服务是否已启动:
$ oc get EtcdCluster
2.10.5. 从 YAML 文件创建服务
如果服务或自定义资源(CR)的 YAML 定义无效或有占位符数据,您可以使用 --dry-run
标志获取 YAML 定义。指定正确的值后使用更正的 YAML 定义启动服务。通过打印和修改用于启动服务的 YAML, odo
可以在实际启动一个服务前输出由 Operator 提供的服务或 CR 的 YAML 定义。
要显示服务的 YAML,请运行:
$ odo service create <operator-name> --crd <cr-name> --dry-run
例如,要打印由
etcdoperator.v0.9.4
Operator 提供的EtcdCluster
的 YAML 定义,请运行:$ odo service create etcdoperator.v0.9.4 --crd EtcdCluster --dry-run
YAML 保存为
etcd.yaml
文件。修改
etcd.yaml
文件:apiVersion: etcd.database.coreos.com/v1beta2 kind: EtcdCluster metadata: name: my-etcd-cluster 1 spec: size: 1 2 version: 3.2.13
从 YAML 文件启动服务:
$ odo service create --from-file etcd.yaml
验证
EtcdCluster
服务已使用一个 pod 启动,而不是预先配置的三个 pod:$ oc get pods | grep my-etcd-cluster