第 2 章 OpenShift Do developer CLI (odo)

2.1. 了解 OpenShift Do

OpenShift Do (odo) 是一个在 OpenShift Container Platform 上创建应用程序的快速、易用的 CLI 工具。通过使用 odo,开发人员可以集中精力创建应用程序,而无需管理 OpenShift Container Platform 集群。odo 会自动创建部署配置、构建配置、服务路由和其他 OpenShift Container Platform 元素。

现有工具,如 oc 更加注重操作,需要对 Kubernetes 和 OpenShift Container Platform 概念有深入了解。odo 会处理与 Kubernetes 和 OpenShift Container Platform 相关的复杂概念,从而使开发人员可以把主要精力专注于最重要的内容:代码。

2.1.1. 主要特性

odo 的设计是简单而简洁的,其主要特性如下:

  • 简单的语法,围绕开发人员熟悉的概念(比如项目、应用程序和组件)进行设计。
  • 完全基于客户端。OpenShift Container Platform 集群中不需要用于部署的服务器。
  • 对 Node.js 和 Java 组件的官方支持。
  • 与各种语言和框架兼容,比如 Ruby 、Perl 、PHP 和 Python 部分兼容。
  • 它会检测本地代码的更改,并自动将其部署到集群中,为验证更改提供即时反馈。
  • 列出 OpenShift Container Platform 集群中的所有可用组件和服务。

2.1.2. 核心概念

project
项目是一个用来对源代码、测试和库进行管理的独立空间。
Application
应用程序是为最终用户设计的程序。应用程序由多个微服务或组件组成,它们单独用来构建整个应用程序。应用程序示例:视频游戏、媒体播放器、网页浏览器。
组件
组件就是一组 Kubernetes 资源,用于托管代码或数据。每个组件可以单独运行和部署。组件示例:Node.js、Perl、PHP、Python、Ruby。
Service
服务是您的组件链接到或依赖的软件。服务示例:MariaDB、Jenkins、MySQL。在 odo 中,服务从 OpenShift Service Catalog 置备,且必须在集群中启用。

2.1.2.1. 官方支持的语言和相应的容器镜像

表 2.1. 支持的语言、容器镜像和软件包管理器

语言容器镜像软件包管理器

Node.js

centos/nodejs-8-centos7

NPM

 

rhoar-nodejs/nodejs-8

NPM

 

bucharestgold/centos7-s2i-nodejs

NPM

 

rhscl/nodejs-8-rhel7

NPM

 

rhscl/nodejs-10-rhel7

NPM

Java

redhat-openjdk-18/openjdk18-openshift

Maven,Gradle

 

openjdk/openjdk-11-rhel8

Maven,Gradle

 

openjdk/openjdk-11-rhel7

Maven,Gradle

2.1.2.1.1. 列出可用的容器镜像
注意

可用的容器镜像列表从集群的内部容器 registry 以及与集群关联的外部 registry 提供。

要列出集群的可用组件和相关容器镜像,请执行以下操作:

  1. 使用 odo 登录 OpenShift Container Platform 集群。

    $ odo login -u developer -p developer
  2. 要列出可用的 odo 支持和不支持的组件以及相应的容器镜像,请执行以下操作:

    $ odo catalog list components
    Odo Supported OpenShift Components:
    NAME        PROJECT      TAGS
    java       openshift     8,latest
    nodejs     openshift     10,8,8-RHOAR,latest
    
    Odo Unsupported OpenShift Components:
    NAME                      PROJECT       TAGS
    dotnet                    openshift     1.0,1.1,2.1,2.2,latest
    fuse7-eap-openshift       openshift     1.3

    TAGS 列代表可用镜像版本,例如:10 代表 rhoar-nodejs/nodejs-10 容器镜像。