Understanding odo
odo
is a CLI tool for creating applications on OKD and Kubernetes. With odo
, you can write, build, and debug applications on a cluster without the need to administer the cluster itself. Creating deployment configurations, build configurations, service routes and other OKD or Kubernetes elements are all automated by odo
.
Existing tools such as oc
are operations-focused and require a deep understanding of Kubernetes and OKD concepts. odo
abstracts away complex Kubernetes and OKD concepts allowing developers to focus on what is most important to them: code.
Key features
odo
is designed to be simple and concise with the following key features:
Simple syntax and design centered around concepts familiar to developers, such as projects, applications, and components.
Completely client based. No additional server other than OKD is required for deployment.
Official support for Node.js and Java components.
Partial compatibility with languages and frameworks such as Ruby, Perl, PHP, and Python.
Detects changes to local code and deploys it to the cluster automatically, giving instant feedback to validate changes in real time.
Lists all the available components and services from the cluster.
Core concepts
Project
A project is your source code, tests, and libraries organized in a separate single unit.
Application
An application is a program designed for end users. An application consists of multiple microservices or components that work individually to build the entire application. Examples of applications: a video game, a media player, a web browser.
Component
A component is a set of Kubernetes resources which host code or data. Each component can be run and deployed separately. Examples of components: Node.js, Perl, PHP, Python, Ruby.
Service
A service is software that your component links to or depends on. Examples of services: MariaDB, Jenkins, MySQL. In odo
, services are provisioned from the OpenShift Service Catalog and must be enabled within your cluster.
Officially supported languages and corresponding container images
Language | Container image | Package manager | Platform |
---|---|---|---|
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 |
Listing available container images
The list of available container images is sourced from the cluster’s internal container registry and external registries associated with the cluster. |
To list the available components and associated container images for your cluster:
Log in to the cluster with
odo
:$ odo login -u developer -p developer
List the available
odo
supported and unsupported components and corresponding container images:$ odo catalog list components
Example output
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
The
TAGS
column represents the available image versions, for example,10
represents therhoar-nodejs/nodejs-10
container image. To learn more about CLI commands, go to odo CLI reference.