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. 创建一个项目

创建一个项目来在一个独立的空间内保存源代码、测试并对库进行管理。

流程

  1. 登陆到一个OpenShift Container Platform集群。

    $ odo login -u developer -p developer
  2. 创建一个项目:

    $ 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,EtcdClusterEtcdBackupEtcdRestore 是 Operator 提供的 CRD。

2.10.4. 从 Operator 创建服务

如果 Operator 在 metadata 中定义了有效值来启动请求的服务,您可以通过 odo service create 来使用服务。

  1. 将服务的 YAML 作为本地驱动器上的文件输出:

    $ oc get csv/etcdoperator.v0.9.4 -o yaml
  2. 验证服务的值是否有效:

    apiVersion: etcd.database.coreos.com/v1beta2
    kind: EtcdCluster
    metadata:
      name: example
    spec:
      size: 3
      version: 3.2.13
  3. etcdoperator.v0.9.4 Operator 启动 EtcdCluster 服务:

    $ odo service create etcdoperator.v0.9.4 --crd EtcdCluster
  4. 验证服务是否已启动:

    $ oc get EtcdCluster

2.10.5. 从 YAML 文件创建服务

如果服务或自定义资源(CR)的 YAML 定义无效或有占位符数据,您可以使用 --dry-run 标志获取 YAML 定义。指定正确的值后使用更正的 YAML 定义启动服务。通过打印和修改用于启动服务的 YAML, odo 可以在实际启动一个服务前输出由 Operator 提供的服务或 CR 的 YAML 定义。

  1. 要显示服务的 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 文件。

  2. 修改 etcd.yaml 文件:

    apiVersion: etcd.database.coreos.com/v1beta2
    kind: EtcdCluster
    metadata:
      name: my-etcd-cluster 1
    spec:
      size: 1 2
      version: 3.2.13
    1
    将名称从 example 改为 my-etcd-cluster
    2
    将大小从 3 减小到 1
  3. 从 YAML 文件启动服务:

    $ odo service create --from-file etcd.yaml
  4. 验证 EtcdCluster 服务已使用一个 pod 启动,而不是预先配置的三个 pod:

    $ oc get pods | grep my-etcd-cluster
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.