×

Adding storage to the application components

Use the odo storage command to add persistent data to your application. Examples of data that must persist include database files, dependencies, and build artifacts, such as a .m2 Maven directory.

Procedure
  1. Add the storage to your component:

    $ odo storage create <storage_name> --path=<path_to_the_directory> --size=<size>
  2. Push the storage to the cluster:

    $ odo push
  3. Verify that the storage is now attached to your component by listing all storage in the component:

    $ odo storage list
    Example output
    The component 'nodejs' has the following storage attached:
    NAME           SIZE     PATH      STATE
    mystorage      1Gi      /data     Pushed
  4. Delete the storage from your component:

    $ odo storage delete <storage_name>
  5. List all storage to verify that the storage state is Locally Deleted:

    $ odo storage list
    Example output
    The component 'nodejs' has the following storage attached:
    NAME           SIZE     PATH      STATE
    mystorage      1Gi      /data     Locally Deleted
  6. Push the changes to the cluster:

    $ odo push

Adding storage to a specific container

If your devfile has multiple containers, you can use the --container flag to specify the container you want to attach storage to.

Procedure
  1. Create a devfile with multiple containers:

    components:
      - name: runtime (1)
        container:
          image: registry.access.redhat.com/ubi8/nodejs-12:1-36
          memoryLimit: 1024Mi
          endpoints:
            - name: "3000-tcp"
              targetPort: 3000
          mountSources: true
      - name: funtime (2)
        container:
          image: registry.access.redhat.com/ubi8/nodejs-12:1-36
          memoryLimit: 1024Mi
    1 The runtime container.
    2 The funtime container.
  2. To create storage for the runtime container:

    $ odo storage create store --path /data --size 1Gi --container runtime
    Output of the command:
    ✓  Added storage store to nodejs-testing-xnfg
      Please use `odo push` command to make the storage accessible to the component
  3. Verify that the storage is now attached to your component by listing all storage in the component:

    $ odo storage list
    Example output
    The component 'nodejs-testing-xnfg' has the following storage attached:
      NAME      SIZE     PATH      CONTAINER     STATE
      store     1Gi      /data     runtime       Not Pushed
  4. Push the changes to the cluster:

    $ odo push

Switching between ephemeral and persistent storage

You can switch between ephemeral and persistent storage in your project by using the odo preference command. odo preference modifies the global preference in your cluster.

When persistent storage is enabled, the cluster stores the information between the restarts.

When ephemeral storage is enabled, the cluster does not store the information between the restarts.

Ephemeral storage is enabled by default.

Procedure
  1. See the preference currently set in your project:

    $ odo preference view
    Example output
    PARAMETER             CURRENT_VALUE
    UpdateNotification
    NamePrefix
    Timeout
    BuildTimeout
    PushTimeout
    Experimental
    PushTarget
    Ephemeral             true
  2. To unset the ephemeral storage and set the persistent storage:

    $ odo preference set Ephemeral false
  3. To set the ephemeral storage again:

    $ odo preference set Ephemeral true

    The odo preference command changes the global settings of all your currently deployed components as well as ones you will deploy in future.

  4. Run odo push to make odo create a specified storage for your component:

    $ odo push