第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、MySQL
odo
では、サービスは OpenShift Service Catalog からプロビジョニングされ、クラスター内で有効にされる必要があります。
2.1.2.1. 正式にサポートされる言語と対応するコンテナーイメージ
言語 | コンテナーイメージ | パッケージマネージャー | プラットフォーム |
---|---|---|---|
Node.js | NPM | amd64、s390x、ppc64le | |
NPM | amd64、s390x、ppc64le | ||
Java | Maven、Gradle | amd64、s390x、ppc64le | |
Maven、Gradle | amd64、s390x、ppc64le | ||
Maven、Gradle | amd64、s390x、ppc64le |
2.1.2.1.1. 利用可能なコンテナーイメージの一覧表示
利用可能なコンテナーイメージの一覧は、クラスターの内部コンテナーレジストリーおよびクラスターに関連付けられた外部レジストリーから取得されます。
利用可能なコンポーネントおよびクラスターの関連付けられたコンテナーイメージを一覧表示するには、以下を実行します。
odo
でクラスターにログインします。$ odo login -u developer -p developer
利用可能な
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
コラムは利用可能なイメージバージョンを表します (例:10
はrhoar-nodejs/nodejs-10
コンテナーイメージを表します)。