Skip to main content

odo v3.4.0 Released

· 6 min read

odo v3.4.0 is now out!

To install odo, follow the installation guide.

Notable Changes

Check this Playlist for an overview of the most notable changes in this release:

Potentially breaking changes

Output of odo list services -o json

The group field has been removed from the JSON output of odo list services and is now superseded by a new apiVersion field (containing information about both the group and version).

The service field has also been updated to include information about the version.

See #6347 for more details.


"bindableServices": [
"name": "cluster-sample",
"namespace": "cmd-describe-list-binding-test549cmw",
"kind": "Cluster",
- "group": "",
- "service": "cluster-sample/"
+ "apiVersion": "",
+ "service": "cluster-sample/"


Using odo with Podman

Based on your valuable feedback, we have worked on improving the experience of using odo with Podman. Note that this is still experimental and requires you to opt in if you want to try it out.

  • In #6329, we have added labels to resources created by odo on Podman, so we can easily identify and use them. This adds the same labels depicted in How odo works.
  • With #6366, odo list component is now able to list components running on Podman.
  • With #6328, odo dev now supports volumes and volume mounts defined in a Devfile. Volume components allow sharing files among container components.
  • With #6348, odo dev is now able to react to changes in local source files by re-synchronizing changed files and restarting the application running on Podman.
  • With #6377, odo dev no longer hard-codes the exposed host port. Instead, it is able to pick any freely available local port, in a range starting from 40001.

See the demo below for an overview of these changes:

Support for multi-document YAML resource for Devfile Kubernetes components

odo now supports running Devfile components that are represented by a multi-document YAML.

Automatic application port detection

When running odo init interactively, we now try to automatically detect as much as possible the ports used in the current application source code. When information about the ports is available, we customize the initial Devfile accordingly.

Listing Devfile Stack versions

odo registry (and its JSON counterpart) now displays the Devfile stack versions.

Detailed Changelog

As with every release, you can find the full list of changes and bug fixes on the GitHub release page.


  • Add support for parsing multiple k8s definition in a single Devfile K8s component #6372 (valaparthvi)
  • Support Alizer-based automatic port detection with odo init interactive mode #6365 (rm3l)
  • Show Devfile Stack versions in "odo registry" output #6397 (rm3l)
  • Pass caller to registry telemetry #6382 (feloy)
  • Set labels for component on podman #6329 (feloy)
  • odo dev on podman: Add support for devfile volume #6328 (feloy)
  • Get next free port when forwarding ports on podman #6377 (feloy)
  • odo list component shows components running on podman #6366 (feloy)
  • Sync files on Podman #6348 (feloy)


  • Display a warning when connection to cluster fails #6384 (feloy)
  • Improve confirmation message for namespace/project deletion #6383 (rm3l)
  • Delay the display of warnings related to experimental features #6375 (feloy)
  • Fix: Panic when running odo list namespaces without an active Kubernetes context #6367 (valaparthvi)
  • Replace group by apiVersion in odo list services output #6358 (feloy)
  • Fix completion error when command is empty #6354 (feloy)
  • Run Devfile personalization in interactive mode from empty directory #6351 (anandrkskd)
  • Downloading wrong starter project when using odo init #6346 (anandrkskd)


  • Show IDE plugin usage on Home page and in installation docs #6380 (rm3l)
  • Make remaining Quickstart docs consistent #6324 (SD-13)
  • Add complete devfiles to advanced guides #6388 (valaparthvi)
  • Update build version and release blog post for v3.3.0 #6359 (valaparthvi)


  • Test with OpenShift cluster non authenticated #6395 (feloy)
  • Flake odo add binding in interactive doest show namespace recently created #6391 (anandrkskd)
  • replacing timeout with time interval #6369 (anandrkskd)
  • updating bindable kind instance #6363 (anandrkskd)
  • Integration tests: Declare devfile volumes as ephemeral #6356 (feloy)
  • Disable flaky test on Windows #6341 (feloy)
  • Integration tests for odo dev running on podman #6332 (feloy)
  • E2e scenario 3 #6073 (anandrkskd)
  • update env name for ODO_ROBOT_KEY #6393 (anandrkskd)
  • Fix flaky behavior with "list namespaces/projects -o json" integration tests #6355 (rm3l)
  • fix: add exit code check for no-cluster tests #6345 (anandrkskd)
  • Fix potential unit tests failures caused by envconfig relying on the system environment #6344 (rm3l)


  • Do not call LogErrorAndExit but return err in GenericRun #6352 (feloy)
  • Use go-cmp instead of reflect.DeepEqual to compare unit test results #6343 (rm3l)
  • Lower log level for kclient.GetAllResourcesFromSelector #6360 (feloy)

Merged pull requests:

Contributing to odo

If odo interests you, and you would like to contribute to it, we welcome you!

You can contribute to odo in a lot of different ways!

Take it for a spin 🚘 and report back bugs🐞 that you encountered, or features🌟 that you would like to see.

Help us with the documentation📜, or tell us how you used odo 🖍.

Review the PRs👀, or help us fix a failing test 🚩.

Work on the TODOs📝, or help us cleanup the code🚮.

Or, simply tune in📻 to our contributor calls and learn more about odo.

odo is your playground!

Read the developer reference guide on contributing to odo to know more.