Creating a single-component application with odo
With odo
, you can create and deploy applications on clusters.
Prerequisites
odo
is installed.You have a running cluster. You can use CodeReady Containers (CRC) to deploy a local cluster quickly.
Creating a project
Create a project to keep your source code, tests, and libraries organized in a separate single unit.
Procedure
Log in to an OKD cluster:
$ odo login -u developer -p developer
Create a project:
$ odo project create myproject
Example output
✓ Project 'myproject' is ready for use
✓ New project created and now using project : myproject
Creating a Node.js application with odo
To create a Node.js component, download the Node.js application and push the source code to your cluster with odo
.
Procedure
Create a directory for your components:
$ mkdir my_components && cd my_components
Download the example Node.js application:
$ git clone https://github.com/openshift/nodejs-ex
Change the current directory to the directory with your application:
$ cd <directory_name>
Add a component of the type Node.js to your application:
$ odo create nodejs
By default, the latest image is used. You can also explicitly specify an image version by using odo create openshift/nodejs:8
.Push the initial source code to the component:
$ odo push
Your component is now deployed to OKD.
Create a URL and add an entry in the local configuration file as follows:
$ odo url create --port 8080
Push the changes. This creates a URL on the cluster.
$ odo push
List the URLs to check the desired URL for the component.
$ odo url list
View your deployed application using the generated URL.
$ curl <url>
Modifying your application code
You can modify your application code and have the changes applied to your application on OKD.
Edit one of the layout files within the Node.js directory with your preferred text editor.
Update your component:
$ odo push
Refresh your application in the browser to see the changes.
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
Add the storage to your component:
$ odo storage create <storage_name> --path=<path_to_the_directory> --size=<size>
Push the storage to the cluster:
$ odo push
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
Delete the storage from your component:
$ odo storage delete <storage_name>
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
Push the changes to the cluster:
$ odo push
Adding a custom builder to specify a build image
With OKD, you can add a custom image to bridge the gap between the creation of custom images.
The following example demonstrates the successful import and use of the redhat-openjdk-18
image:
Prerequisites
- The OpenShift CLI (oc) is installed.
Procedure
Import the image into OKD:
$ oc import-image openjdk18 \
--from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift \
--confirm
Tag the image to make it accessible to odo:
$ oc annotate istag/openjdk18:latest tags=builder
Deploy the image with odo:
$ odo create openjdk18 --git \
https://github.com/openshift-evangelists/Wild-West-Backend
Connecting your application to multiple services using OpenShift Service Catalog
The OpenShift service catalog is an implementation of the Open Service Broker API (OSB API) for Kubernetes. You can use it to connect applications deployed in OKD to a variety of services.
Prerequisites
You have a running OKD cluster.
The service catalog is installed and enabled on your cluster.
Procedure
To list the services:
$ odo catalog list services
To use service catalog-related operations:
$ odo service <verb> <service_name>
Deleting an application
Use the odo app delete
command to delete your application.
Procedure
List the applications in the current project:
$ odo app list
Example output
The project '<project_name>' has the following applications:
NAME
app
List the components associated with the applications. These components will be deleted with the application:
$ odo component list
Example output
APP NAME TYPE SOURCE STATE
app nodejs-nodejs-ex-elyf nodejs file://./ Pushed
Delete the application:
$ odo app delete <application_name>
Example output
? Are you sure you want to delete the application: <application_name> from project: <project_name>
Confirm the deletion with
Y
. You can suppress the confirmation prompt using the-f
flag.