Understanding odo

Understanding the concepts of odo

Installing odo Deploying a devfile using odo

odo is a CLI tool for creating applications on OpenShift and Kubernetes. odo allows developers to concentrate on creating applications without the need to administer a cluster itself. Creating deployment configurations, build configurations, service routes and other OpenShift or Kubernetes elements are all automated by odo.

Existing tools such as oc are more operations-focused and require a deep understanding of Kubernetes and OpenShift concepts. odo abstracts away complex Kubernetes and OpenShift 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 OpenShift is required for deployment.

  • Official support for Node.js and Java components.

  • 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.

  • Devfile
    A portable file responsible for your entire reproducable development environment.

Official Devfiles

Devfiles describe your development environment link. Click here for more information on Devfile.

All official example Devfiles are hosted on the registry.

Language Devfile Name Description Devfile Source
Java java-maven Upstream Maven and OpenJDK 11 java-maven/devfile.yaml
Java java-openliberty Open Liberty microservice in Java java-openliberty/devfile.yaml
Java java-quarkus Upstream Quarkus with Java+GraalVM java-quarkus/devfile.yaml
Java java-springboot Spring Boot® using Java java-springboot/devfile.yaml
Node.JS nodejs Stack with NodeJS 12 nodejs/devfile.yaml

List of Devfiles which are officially supported by odo

Listing available Devfiles


The list of available Devfiles is sourced from the official odo registry as well as any other registies added via odo registry add.

To list the available Devfiles:

$ 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