第2章 Developer CLI (odo)

2.1. odo について

odo は、OpenShift Container Platform および Kubernetes でアプリケーションを作成するための CLI ツールです。odo を使用すると、クラスター自体を管理する必要なしに、クラスターでアプリケーションを作成し、ビルドし、デバッグできます。デプロイメント設定、ビルド設定、サービスルートおよび他の OpenShift Container Platform または Kubernetes 要素の作成は、すべて odo によって自動化されます。

oc などの既存ツールは操作に重点が置かれ、Kubernetes および OpenShift Container Platform の概念の深い理解が必要です。odo は、複雑な Kubernetes および OpenShift Container Platform の概念を抽象化し、開発者が最も重要なコードにフォーカスできるようにします。

2.1.1. 主な特長

odo は、以下の主な特長によって単純化および簡潔化されるように設計されています。

  • プロジェクト、アプリケーションおよびコンポーネントなどの開発者にとって馴染みのある概念を中心とした単純な構文および設計。
  • 完全にクライアントベースである。デプロイメントに OpenShift Container Platform 以外のサーバーは必要ありません。
  • Node.js および Java コンポーネントの正式なサポート。
  • Ruby、Perl、PHP、Python などの言語およびフレームワークとの部分的な互換性。
  • ローカルコードの変更を検出し、これをクラスターに自動的にデプロイ。これにより、変更を検証するためのインスタントフィードバックがリアルタイムに提供されます。
  • クラスターのすべての利用可能なコンポーネントおよびサービスを一覧表示。

2.1.2. コアとなる概念

Project
Project (プロジェクト) は、別個の単一の単位で編成されるソースコード、テスト、ライブラリーです。
Application
Application (アプリケーション) は、エンドユーザー向けに設計されたプログラムです。アプリケーションは、アプリケーション全体を構築するために個別に動作する複数のマイクロサービスまたはコンポーネントで設定されます。アプリケーションの例: ビデオゲーム、メディアプレイヤー、Web ブラウザー。
Component
コンポーネントとは、コードまたはデータをホストする Kubernetes リソースのセットです。各コンポーネントは個別に実行され、デプロイできます。コンポーネントの例: Node.js、Perl、PHP、Python、Ruby
サービス
Service (サービス) は、コンポーネントのリンク先となるか、またはコンポーネントが依存するソフトウェアです。サービスの例: MariaDB、Jenkins、MySQLodo では、サービスは OpenShift Service Catalog からプロビジョニングされ、クラスター内で有効にされる必要があります。

2.1.2.1. 正式にサポートされる言語と対応するコンテナーイメージ

表2.1 サポートされる言語、コンテナーイメージ、パッケージマネージャー、およびプラットフォーム

言語コンテナーイメージパッケージマネージャープラットフォーム

Node.js

rhscl/nodejs-10-rhel7

NPM

amd64、s390x、ppc64le

 

rhscl/nodejs-12-rhel7

NPM

amd64、s390x、ppc64le

Java

redhat-openjdk-18/openjdk18-openshift

Maven、Gradle

amd64、s390x、ppc64le

 

openjdk/openjdk-11-rhel8

Maven、Gradle

amd64、s390x、ppc64le

 

openjdk/openjdk-11-rhel7

Maven、Gradle

amd64、s390x、ppc64le

2.1.2.1.1. 利用可能なコンテナーイメージの一覧表示
注記

利用可能なコンテナーイメージの一覧は、クラスターの内部コンテナーレジストリーおよびクラスターに関連付けられた外部レジストリーから取得されます。

利用可能なコンポーネントおよびクラスターの関連付けられたコンテナーイメージを一覧表示するには、以下を実行します。

  1. odo でクラスターにログインします。

    $ odo login -u developer -p developer
  2. 利用可能な odo がサポートするコンポーネントとサポートしないコンポーネント、および対応するコンテナーイメージを一覧表示します。

    $ odo catalog list components

    出力例

    Odo Devfile Components:
    NAME                 DESCRIPTION                            REGISTRY
    java-maven           Upstream Maven and OpenJDK 11          DefaultDevfileRegistry
    java-openliberty     Open Liberty microservice in Java      DefaultDevfileRegistry
    java-quarkus         Upstream Quarkus with Java+GraalVM     DefaultDevfileRegistry
    java-springboot      Spring Boot® using Java                DefaultDevfileRegistry
    nodejs               Stack with NodeJS 12                   DefaultDevfileRegistry
    
    Odo OpenShift Components:
    NAME        PROJECT       TAGS                                                                           SUPPORTED
    java        openshift     11,8,latest                                                                    YES
    dotnet      openshift     2.1,3.1,latest                                                                 NO
    golang      openshift     1.13.4-ubi7,1.13.4-ubi8,latest                                                 NO
    httpd       openshift     2.4-el7,2.4-el8,latest                                                         NO
    nginx       openshift     1.14-el7,1.14-el8,1.16-el7,1.16-el8,latest                                     NO
    nodejs      openshift     10-ubi7,10-ubi8,12-ubi7,12-ubi8,latest                                         NO
    perl        openshift     5.26-el7,5.26-ubi8,5.30-el7,latest                                             NO
    php         openshift     7.2-ubi7,7.2-ubi8,7.3-ubi7,7.3-ubi8,latest                                     NO
    python      openshift     2.7-ubi7,2.7-ubi8,3.6-ubi7,3.6-ubi8,3.8-ubi7,3.8-ubi8,latest                   NO
    ruby        openshift     2.5-ubi7,2.5-ubi8,2.6-ubi7,2.6-ubi8,2.7-ubi7,latest                            NO
    wildfly     openshift     10.0,10.1,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,8.1,9.0,latest     NO

    TAGS コラムは利用可能なイメージバージョンを表します (例: 10rhoar-nodejs/nodejs-10 コンテナーイメージを表します)。