openshift / Odo
Programming Languages
[id="readme"]
= odo
- Developer-focused CLI for Kubernetes and OpenShift
:toc: macro
:toc-title:
:toclevels: 1
https://github.com/openshift/odo/releases/latest[image:https://img.shields.io/github/v/release/openshift/odo?style=for-the-badge[GitHub release]] https://travis-ci.com/openshift/odo[image:https://img.shields.io/travis/com/openshift/odo?style=for-the-badge[Build Status]] image:https://img.shields.io/github/license/openshift/odo?style=for-the-badge[License]
[[overview]] == Overview
odo
is a fast, iterative, and straightforward CLI tool for developers who write, build, and deploy applications on Kubernetes and OpenShift.
Existing tools such as kubectl
and oc
are more operations-focused and require a deep-understanding of Kubernetes and OpenShift concepts. odo
abstracts away complex Kubernetes and OpenShift concepts for the developer.
[[key-features]] == 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 Kubernetes or 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]] == 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: e-Shop, Hotel Reservation System, Online Booking 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: Warehouse API Backend, Inventory API, Web Frontend, Payment Backend Service:: A service is software that your component links to or depends on. Examples of services: MariaDB, MySQL. Devfile:: A portable file responsible for your entire reproducible development environment.
[id="odo-supported-devfiles"] === Official Devfiles
Devfiles describe your development environment link. link:https://odo.dev/docs/deploying-a-devfile-using-odo/[Click here for more information on Devfile.]
.List of Devfiles which are officially supported by odo [options="header"] |=== |Language | Devfile Name | Description | Devfile Source | Supported Platform
| Java | java-maven | Upstream Maven and OpenJDK 11 | link:https://github.com/odo-devfiles/registry/blob/master/devfiles/java-maven/devfile.yaml[java-maven/devfile.yaml] | amd64
| Java
| java-openliberty
| Open Liberty microservice in Java
| link:https://github.com/odo-devfiles/registry/blob/master/devfiles/java-openliberty/devfile.yaml[java-openliberty/devfile.yaml]
| amd64
| Java | java-quarkus | Upstream Quarkus with Java+GraalVM | link:https://github.com/odo-devfiles/registry/blob/master/devfiles/java-quarkus/devfile.yaml[java-quarkus/devfile.yaml] | amd64
| Java | java-springboot | Spring Boot® using Java | link:https://github.com/odo-devfiles/registry/blob/master/devfiles/java-springboot/devfile.yaml[java-springboot/devfile.yaml] | amd64
| Node.JS | nodejs | Stack with NodeJS 12 | link:https://github.com/odo-devfiles/registry/blob/master/devfiles/nodejs/devfile.yaml[nodejs/devfile.yaml] | amd64, s390x, ppc64le
|=== [id="odo-listing-available-images"] ==== Listing available Devfiles
[NOTE]
https://github.com/odo-devfiles/registry[odo registry] as well as any other registries added via odo registry add
.
The list of available Devfiles is sourced from the official link: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
[[official-documentation]] == Official documentation
- link:https://odo.dev/docs/installing-odo/[Installing odo]
- link:https://odo.dev/docs/understanding-odo/[Understanding odo]
- link:https://odo.dev/docs/deploying-a-devfile-using-odo/[Deploying a devfile using odo]
- link:https://odo.dev/file-reference/[Devfile file reference]
- link:https://odo.dev/docs/debugging-applications-in-odo/[Debugging applications in odo]
- link:https://odo.dev/docs/managing-environment-variables-in-odo/[Managing environment variables]
- link:https://odo.dev/docs/configuring-the-odo-cli/[Configuring the odo CLI]
- link:https://odo.dev/docs/odo-architecture/[Architecture of odo]
- link:https://odo.dev/docs/odo-cli-reference/[odo CLI reference]
- link:https://odo.dev/docs/operator-hub/[Introduction to Operators]
[[installing-odo]]
== Installing odo
To install on Linux / Windows / macOS follow our guide located on link:https://odo.dev/docs/installing-odo[odo.dev]. All binaries and tarballs are synced between our link:https://github.com/openshift/odo/releases[GitHub releases] and link:https://mirror.openshift.com/pub/openshift-v4/clients/odo/[OpenShift mirrors].
[[deploying-your-first-application]] == Deploying your first application
Click on the tutorial below to deploy your first odo
application:
link:https://odo.dev/docs/deploying-a-devfile-using-odo/[Deploying a devfile using odo]
The following demonstration provides an overview of odo
:
[[contributing]] == Community, discussion, contribution, and support
=== Communication channels
Discussions:
- For general help and inquiries, join our link:https://groups.google.com/forum/#!forum/odo-users[odo-users Google group].
- For any developmental discussion, use our link:https://groups.google.com/forum/#!forum/odo-dev[odo-dev Google group].
Chat:
All of our developer and user discussions happen in the link:https://kubernetes.slack.com/archives/C01D6L2NUAG[#odo channel on the official Kubernetes Slack].
If you haven't already joined the Kubernetes Slack, you can link:https://slack.k8s.io/[invite yourself here].
Ask questions, inquire about odo or even discuss a new feature.
Issues:
If you have an issue with odo
, please link:https://github.com/openshift/odo/issues[file it].
Documentation Issues:
- For any documentation issues on link:https://odo.dev[odo.dev] open a link:https://github.com/openshift/odo/issues/new?template=Documentation.md[GitHub issue with the documentation label].
- If you have any documentation issues related to the link:https://docs.openshift.com[docs.openshift.com] site, file an issue in link:https://bugzilla.redhat.com/[Bugzilla]. Choose the OpenShift Container Platform product type and the Documentation component type.
=== Contributing Want to become a contributor and submit your code? Please have a look at our link:https://github.com/openshift/odo/blob/master/docs/dev/development.adoc[Development Guide].
We work in 3-week sprint cycles. On a week when the sprint starts we have two planning calls:
- "Sprint Planning Preparation and Issue Triage" - on Monday
- "Sprint Planning" - on Wednesday
On top of our sprint planning calls, we have our regular "odo contributors call" (biweekly on Tuesdays). This is where we discuss technical challenges and anything related to odo development.
All our calls are open to public. You are welcome to join any of our calls.
You can find the exact dates of all scheduled odo calls together with sprint dates in the link:https://calendar.google.com/calendar/embed?src=gi0s0v5ukfqkjpnn26p6va3jfc%40group.calendar.google.com[odo calendar] (link:https://calendar.google.com/calendar/ical/gi0s0v5ukfqkjpnn26p6va3jfc%40group.calendar.google.com/public/basic.ics[iCal format]).
To participate in the calls, please join link:https://groups.google.com/forum/#!forum/odo-dev[odo-dev Google group]. When you join the group, you will automatically get invites to all odo related calls and get permissions to all necessary documents.
[[odo-roadmap]] == Roadmap for odo
Below is a roadmap for odo where 2.1, 2.2 and 2.3 are odo versions.
=== Post v2 (Before 19th Jan)
- Refactor
- Storage of linking info in devfile so that odo push can support this as well
=== 2.1 Planning (19th Jan - 13th April)
- link:https://github.com/openshift/odo/issues/2756[#2756] - Add
odo deploy
command for initial transition from inner to outer loop - link:https://github.com/openshift/odo/issues/3026[#3026] - Support for Knative:Service (odo deploy)
- link:https://github.com/openshift/odo/issues/3782[#3782] - Devfile support followup
- link:https://github.com/openshift/odo/issues/2618[#2618] - Link via ServiceBindingRequest
- link:https://github.com/openshift/odo/issues/2613[#2613] - Instantiate and manage services through Operator
- link:https://github.com/openshift/odo/issues/4192[#4192] - Show components created by other tools in odo
- link:https://github.com/openshift/odo/issues/3132[#3132] - control over how rsync and start/stop happens
=== 2.2 Planning
- link:https://github.com/openshift/odo/issues/1238[#1238] - Integration with pipelines (CI)
- link:https://github.com/openshift/odo/issues/4094[#4094] - Builds v2 Support (odo deploy should provide initial support for build v2 strategy)
- link:https://github.com/openshift/odo/issues/2540[#2540] - e2e tests on windows & macOS
=== 2.3 Planning
- link:https://github.com/openshift/odo/issues/3026[#3026] - Support for Knative Eventing
- link:https://github.com/openshift/odo/issues/3664[#3664] - Add --now option support for Storage
- link:https://github.com/openshift/odo/issues/3126[#3126] - allow
.devfile.yaml
- link:https://github.com/openshift/odo/issues/2191[#2191] - URL support for https
[[projects-using-odo]] == Projects using odo
These are some of the IDE plugins which use odo:
- link:https://marketplace.visualstudio.com/items?itemName=redhat.vscode-openshift-connector[VS Code Openshift Connector]
- link:https://open-vsx.org/extension/redhat/vscode-openshift-connector[Open VSX Openshift Connector]
- link:http://plugins.jetbrains.com/plugin/12030-openshift-connector-by-red-hat[Openshift Connector for Intellij]
- link:https://www.eclipse.org/codewind[Codewind for Eclipse Che]
[[experimental-mode]] == Experimental mode
Want to try out the odo experimental mode? Please read the link:https://github.com/openshift/odo/blob/master/docs/dev/experimental-mode.adoc[document] for more information.