3.2. 了解 odo
Red Hat OpenShift Developer CLI(odo
)是在 OpenShift Container Platform 和 Kubernetes 上创建应用程序的工具。使用 odo
,您可以在 Kubernetes 集群中开发、测试、调试和部署基于微服务的应用,而无需深入了解平台。
odo
遵循 创建和推送 工作流。作为用户,当您创建时,信息(或清单)存储在配置文件中。推送 时,会在 Kubernetes 集群中创建对应的资源。所有这些配置都存储在 Kubernetes API 中,以实现无缝访问和功能。
odo
使用 service 和 link 命令将组件和服务链接在一起。odo
通过使用集群中的 Kubernetes Operator 创建和部署服务来实现这个目标。可使用 Operator Hub 上可用的任何 Operator 创建服务。在链接服务后,odo
会将服务配置注入组件。然后,应用程序就可以使用此配置与 Operator 支持的服务通信。
3.2.1. odo 的主要功能
odo
的设计目的是为 Kubernetes 的开发人员提供一个友好的 Kubernetes 接口,能够:
- 通过创建新清单或使用现有清单,在 Kubernetes 集群上快速部署应用程序
- 使用命令轻松创建和更新清单,而无需理解和维护 Kubernetes 配置文件
- 提供对在 Kubernetes 集群上运行的应用程序的安全访问
- 为 Kubernetes 集群上的应用程序添加和删除额外存储
- 创建 Operator 支持的服务,并将应用程序链接到它们
-
在作为
odo
组件部署的多个微服务间创建一个链接 -
在 IDE 中使用
odo
进行远程调试应用程序 -
使用
odo
轻松测试 Kubernetes 上部署的应用程序
3.2.2. odo 核心概念
odo
将 Kubernetes 概念抽象化为开发人员熟悉的术语:
- Application(应用程序)
使用 云原生方法 开发的典型应用,用于执行特定的任务。
应用程序示例包括在线视频流、在线购物和酒店预订系统。
- 组件
一组可单独运行和部署的 Kubernetes 资源。云原生应用是一系列小、独立、松散耦合的组件。
组件示例包括 API 后端、Web 界面和支付后端。
- 项目
- 包含源代码、测试和库的单一单元。
- Context
-
包含单一组件的源代码、测试、库和
odo
配置文件的目录。 - URL
- 公开组件的机制可从集群外部访问。
- 存储
- 集群中的持久性存储。它会在重启和组件重建过程中保留数据。
- 服务
为组件提供额外的功能的外部应用程序。
服务 示例包括 PostgreSQL、MySQL、Redis 和 RabbitMQ。
在
odo
中,服务从 OpenShift Service Catalog 置备,且必须在集群中启用。- devfile
用于定义容器化开发环境的开放式标准,使开发人员工具可以简化和加速工作流。如需更多信息,请参阅文档 https://devfile.io。
您可以连接到公开可用的 devfile registry,也可以安装安全 registry。
3.2.3. 列出 odo 中的组件
odo
使用可移植 devfile 格式来描述组件及其相关 URL、存储和服务。odo
可以连接到各种 devfile registry,以下载用于不同语言和框架的 devfile。有关如何管理 odo registry
用来检索 devfile 信息的更多信息,请参阅 odo
registry 命令的文档。
您可以使用 odo catalog list components
命令列出不同 registry 的所有 devfile。
流程
使用
odo
登陆到集群:$ odo login -u developer -p developer
列出可用的
odo
组件:$ odo catalog list components
输出示例
Odo Devfile Components: NAME DESCRIPTION REGISTRY dotnet50 Stack with .NET 5.0 DefaultDevfileRegistry dotnet60 Stack with .NET 6.0 DefaultDevfileRegistry dotnetcore31 Stack with .NET Core 3.1 DefaultDevfileRegistry go Stack with the latest Go version DefaultDevfileRegistry java-maven Upstream Maven and OpenJDK 11 DefaultDevfileRegistry java-openliberty Java application Maven-built stack using the Open Liberty ru... DefaultDevfileRegistry java-openliberty-gradle Java application Gradle-built stack using the Open Liberty r... DefaultDevfileRegistry java-quarkus Quarkus with Java DefaultDevfileRegistry java-springboot Spring Boot® using Java DefaultDevfileRegistry java-vertx Upstream Vert.x using Java DefaultDevfileRegistry java-websphereliberty Java application Maven-built stack using the WebSphere Liber... DefaultDevfileRegistry java-websphereliberty-gradle Java application Gradle-built stack using the WebSphere Libe... DefaultDevfileRegistry java-wildfly Upstream WildFly DefaultDevfileRegistry java-wildfly-bootable-jar Java stack with WildFly in bootable Jar mode, OpenJDK 11 and... DefaultDevfileRegistry nodejs Stack with Node.js 14 DefaultDevfileRegistry nodejs-angular Stack with Angular 12 DefaultDevfileRegistry nodejs-nextjs Stack with Next.js 11 DefaultDevfileRegistry nodejs-nuxtjs Stack with Nuxt.js 2 DefaultDevfileRegistry nodejs-react Stack with React 17 DefaultDevfileRegistry nodejs-svelte Stack with Svelte 3 DefaultDevfileRegistry nodejs-vue Stack with Vue 3 DefaultDevfileRegistry php-laravel Stack with Laravel 8 DefaultDevfileRegistry python Python Stack with Python 3.7 DefaultDevfileRegistry python-django Python3.7 with Django DefaultDevfileRegistry
3.2.4. odo 中的 Telemetry
odo
会收集有关如何使用它的信息,包括操作系统、RAM、CPU、内核数量、odo
版本、错误、成功/失败以及 odo
命令完成所需的时间。
您可以使用 odo preference
命令修改遥测同意:
-
odo preference set ConsentTelemetry true
代表同意遥测。 -
odo preference unset ConsentTelemetry
会禁用 Telemetry。 -
odo preference view
显示当前的首选项。