Skip to main content

odo storage

odo lets users manage storage volumes attached to the components. A storage volume can be either an ephemeral volume using an emptyDir Kubernetes volume, or a PVC, which is a way for users to "claim" a persistent volume (such as a GCE PersistentDisk or an iSCSI volume) without understanding the details of the particular cloud environment. The persistent storage volume can be used to persist data across restarts and rebuilds of the component.

Adding a storage volume#

We can add a storage volume to the cluster using odo storage create.

odo storage create

For example:

$ odo storage create store --path /data --size 1Gi
โœ“ Added storage store to nodejs-project-ufyy
$ odo storage create tempdir --path /tmp --size 2Gi --ephemeral
โœ“ Added storage tempdir to nodejs-project-ufyy
Please use `odo push` command to make the storage accessible to the component

In the above example, the first storage volume has been mounted to the /data path and has a size of 1Gi, and the second volume has been mounted to /tmp and is ephemeral.

Listing the storage volumes#

We can check the storage volumes currently used by the component using odo storage list.

odo storage list

For example:

$ odo storage list
The component 'nodejs-project-ufyy' has the following storage attached:
NAME SIZE PATH STATE
store 1Gi /data Not Pushed
tempdir 2Gi /tmp Not Pushed

Deleting a storage volume#

We can delete a storage volume using odo storage delete.

odo storage delete

For example:

$ odo storage delete store -f
Deleted storage store from nodejs-project-ufyy
Please use `odo push` command to delete the storage from the cluster

In the above example, using -f forcefully deletes the storage without asking user permission.

Adding storage to specific container#

If your devfile has multiple containers, you can specify to which container you want the storage to attach to using the --container flag in the odo storage create command.

Following is an excerpt from an example devfile with multiple containers :

components:
- name: runtime
container:
image: registry.access.redhat.com/ubi8/nodejs-12:1-36
memoryLimit: 1024Mi
endpoints:
- name: "3000-tcp"
targetPort: 3000
mountSources: true
- name: funtime
container:
image: registry.access.redhat.com/ubi8/nodejs-12:1-36
memoryLimit: 1024Mi

Here, we have two containers - runtime and funtime. To attach a storage, only to the funtime container, we can do

odo storage create --container
$ odo storage create store --path /data --size 1Gi --container funtime
โœ“ Added storage store to nodejs-testing-xnfg
Please use `odo push` command to make the storage accessible to the component

You can list the same, using odo storage list command

$ odo storage list
The component 'nodejs-testing-xnfg' has the following storage attached:
NAME SIZE PATH CONTAINER STATE
store 1Gi /data funtime Not Pushed