This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.
Chapter 2. OpenShift Do developer CLI (odo)
2.1. Understanding OpenShift Do Link kopierenLink in die Zwischenablage kopiert!
OpenShift Do (odo) is a fast and easy-to-use CLI tool for creating applications on OpenShift Container Platform. odo allows developers to concentrate on creating applications without the need to administrate an OpenShift Container Platform cluster itself. Creating deployment configurations, build configurations, service routes and other OpenShift Container Platform elements are all automated by odo.
Existing tools such as oc are more operations-focused and require a deep understanding of Kubernetes and OpenShift Container Platform concepts. odo abstracts away complex Kubernetes and OpenShift Container Platform concepts allowing developers to focus on what is most important to them: code.
2.1.1. Key features Link kopierenLink in die Zwischenablage kopiert!
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 OpenShift Container Platform is required for deployment.
- Official support for Node.js and Java components.
- Partial compatibility with languages and frameworks such as Ruby, Perl, PHP, and Python.
- 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 OpenShift Container Platform cluster.
2.1.2. Core concepts Link kopierenLink in die Zwischenablage kopiert!
- 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: a video game, a media player, a web browser.
- 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: Node.js, Perl, PHP, Python, Ruby.
- Service
-
A service is software that your component links to or depends on. Examples of services: MariaDB, Jenkins, MySQL. In
odo, services are provisioned from the OpenShift Service Catalog and must be enabled within your cluster.
2.1.2.1. Officially supported languages and corresponding container images Link kopierenLink in die Zwischenablage kopiert!
| Language | Container image | Package manager |
|---|---|---|
| Node.js | NPM | |
| NPM | ||
| NPM | ||
| NPM | ||
| NPM | ||
| Java | Maven, Gradle | |
| Maven, Gradle | ||
| Maven, Gradle |
2.1.2.1.1. Listing available container images Link kopierenLink in die Zwischenablage kopiert!
The list of available container images is sourced from the cluster’s internal container registry and external registries associated with the cluster.
To list the available components and associated container images for your cluster:
Log in to the OpenShift Container Platform cluster with
odo:odo login -u developer -p developer
$ odo login -u developer -p developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the available
odosupported and unsupported components and corresponding container images:Copy to Clipboard Copied! Toggle word wrap Toggle overflow The
TAGScolumn represents the available image versions, for example,10represents therhoar-nodejs/nodejs-10container image.
2.2. odo architecture Link kopierenLink in die Zwischenablage kopiert!
This section describes odo architecture and how odo manages OpenShift Container Platform resources on a cluster.
2.2.1. Developer setup Link kopierenLink in die Zwischenablage kopiert!
With odo you can create and deploy application on OpenShift Container Platform clusters from a terminal. Code editor plug-ins use odo which allows users to interact with OpenShift Container Platform clusters from their IDE terminals. Examples of plug-ins that use odo: VS Code OpenShift Connector, OpenShift Connector for Intellij, Codewind for Eclipse Che.
odo works on Windows, macOS, and Linux operating systems and from any terminal. odo provides autocompletion for bash and zsh command line shells.
odo 1.1.0 supports Node.js and Java components.
2.2.2. OpenShift source-to-image Link kopierenLink in die Zwischenablage kopiert!
OpenShift Source-to-Image (S2I) is an open-source project which helps in building artifacts from source code and injecting these into container images. S2I produces ready-to-run images by building source code without the need of a Dockerfile. odo uses S2I builder image for executing developer source code inside a container.
2.2.3. OpenShift cluster objects Link kopierenLink in die Zwischenablage kopiert!
2.2.3.1. Init Containers Link kopierenLink in die Zwischenablage kopiert!
Init containers are specialized containers that run before the application container starts and configure the necessary environment for the application containers to run. Init containers can have files that application images do not have, for example setup scripts. Init containers always run to completion and the application container does not start if any of the init containers fails.
The Pod created by odo executes two Init Containers:
-
The
copy-supervisordInit container. -
The
copy-files-to-volumeInit container.
2.2.3.1.1. copy-supervisord Link kopierenLink in die Zwischenablage kopiert!
The copy-supervisord Init container copies necessary files onto an emptyDir Volume. The main application container utilizes these files from the emptyDir Volume.
Files that are copied onto the emptyDir Volume:
Binaries:
-
go-initis a minimal init system. It runs as the first process (PID 1) inside the application container. go-init starts theSupervisorDdaemon which runs the developer code. go-init is required to handle orphaned processes. -
SupervisorDis a process control system. It watches over configured processes and ensures that they are running. It also restarts services when necessary. For odo,SupervisorDexecutes and monitors the developer code.
-
Configuration files:
-
supervisor.confis the configuration file necessary for the SupervisorD daemon to start.
-
Scripts:
-
assemble-and-restartis an OpenShift S2I concept to build and deploy user-source code. The assemble-and-restart script first assembles the user source code inside the application container and then restarts SupervisorD for user changes to take effect. -
Runis an OpenShift S2I concept of executing the assembled source code. Therunscript executes the assembled code created by theassemble-and-restartscript. -
s2i-setupis a script that creates files and directories which are necessary for theassemble-and-restartand run scripts to execute successfully. The script is executed whenever the application container starts.
-
Directories:
-
language-scripts: OpenShift S2I allows customassembleandrunscripts. A few language specific custom scripts are present in thelanguage-scriptsdirectory. The custom scripts provide additional configuration to make odo debug work.
-
The emtpyDir Volume is mounted at the /opt/odo mount point for both the Init container and the application container.
2.2.3.1.2. copy-files-to-volume Link kopierenLink in die Zwischenablage kopiert!
The copy-files-to-volume Init container copies files that are in /opt/app-root in the S2I builder image onto the Persistent Volume. The volume is then mounted at the same location (/opt/app-root) in an application container.
Without the PersistentVolume on /opt/app-root the data in this directory is lost when PersistentVolumeClaim is mounted at the same location.
The PVC is mounted at the /mnt mount point inside the Init container.
2.2.3.2. Application container Link kopierenLink in die Zwischenablage kopiert!
Application container is the main container inside of which the user-source code executes.
Application container is mounted with two Volumes:
-
emptyDirVolume mounted at/opt/odo -
The
PersistentVolumemounted at/opt/app-root
go-init is executed as the first process inside the application container. The go-init process then starts the SupervisorD daemon.
SupervisorD executes and monitores the user assembled source code. If the user process crashes, SupervisorD restarts it.
2.2.3.3. PersistentVolume and PersistentVolumeClaim Link kopierenLink in die Zwischenablage kopiert!
PersistentVolumeClaim (PVC) is a volume type in Kubernetes which provisions a PersistentVolume. The life of a PersistentVolume is independent of a Pod lifecycle. The data on the PersistentVolume persists across Pod restarts.
The copy-files-to-volume Init container copies necessary files onto the PersistentVolume. The main application container utilizes these files at runtime for execution.
The naming convention of the PersistentVolume is <component-name>-s2idata.
| Container | PVC Mounted at |
|---|---|
|
|
|
| Application container |
|
2.2.3.4. emptyDir Volume Link kopierenLink in die Zwischenablage kopiert!
An emptyDir Volume is created when a Pod is assigned to a node, and exists as long as that Pod is running on the node. If the container is restarted or moved, the content of the emptyDir is removed, Init container restores the data back to the emptyDir. emptyDir is initially empty.
The copy-supervisord Init container copies necessary files onto the emptyDir volume. These files are then utilized by the main application container at runtime for execution.
| Container | emptyDir Volume Mounted at |
|---|---|
|
|
|
| Application container |
|
2.2.3.5. Service Link kopierenLink in die Zwischenablage kopiert!
Service is a Kubernetes concept of abstracting the way of communicating with a set of Pods.
odo creates a Service for every application Pod to make it accessible for communication.
2.2.4. odo push workflow Link kopierenLink in die Zwischenablage kopiert!
This section describes odo push workflow. odo push deploys user code on an OpenShift Container Platform cluster with all the necessary OpenShift Container Platform resources.
Creating resources
If not already created,
odo pushcreates the following OpenShift Container Platform resources:Deployment config (DC):
-
Two init containers are executed:
copy-supervisordandcopy-files-to-volume. The init containers copy files onto theemptyDirand thePersistentVolumetype of volumes respectively. -
The application container starts. The first process in the application container is the
go-initprocess with PID=1. go-initprocess starts the SupervisorD daemon.NoteThe user application code has not been copied into the application container yet, so the
SupervisorDdaemon does not execute therunscript.
-
Two init containers are executed:
- Service
- Secrets
-
PersistentVolumeClaim
Indexing files
- A file indexer indexes the files in the source code directory. The indexer traverses through the source code directories recursively and finds files which have been created, deleted, or renamed.
-
A file indexer maintains the indexed information in an odo index file inside the
.ododirectory. - If the odo index file is not present, it means that the file indexer is being executed for the first time, and creates a new odo index JSON file. The odo index JSON file contains a file map - the relative file paths of the traversed files and the absolute paths of the changed and deleted files.
Pushing code
Local code is copied into the application container, usually under
/tmp/src.Executing
assemble-and-restartOn a successful copy of the source code, the
assemble-and-restartscript is executed inside the running application container.
2.3. Installing odo Link kopierenLink in die Zwischenablage kopiert!
The following section describes how to install odo on different platforms.
Currently, odo does not support installation in a restricted network environment.
2.3.1. Installing odo on Linux Link kopierenLink in die Zwischenablage kopiert!
2.3.1.1. Binary installation Link kopierenLink in die Zwischenablage kopiert!
curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-linux-amd64 -o /usr/local/bin/odo chmod +x /usr/local/bin/odo
# curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-linux-amd64 -o /usr/local/bin/odo
# chmod +x /usr/local/bin/odo
2.3.1.2. Tarball installation Link kopierenLink in die Zwischenablage kopiert!
sh -c 'curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-linux-amd64.tar.gz | gzip -d > /usr/local/bin/odo' chmod +x /usr/local/bin/odo
# sh -c 'curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-linux-amd64.tar.gz | gzip -d > /usr/local/bin/odo'
# chmod +x /usr/local/bin/odo
2.3.2. Installing odo on Windows Link kopierenLink in die Zwischenablage kopiert!
2.3.2.1. Binary installation Link kopierenLink in die Zwischenablage kopiert!
-
Download the latest
odo.exefile. -
Add the location of your
odo.exeto yourGOPATH/bindirectory.
Setting the PATH variable for Windows 7/8
The following example demonstrates how to set up a path variable. Your binaries can be located in any location, but this example uses C:\go-bin as the location.
-
Create a folder at
C:\go-bin. - Right click Start and click Control Panel.
- Select System and Security and then click System.
- From the menu on the left, select the Advanced systems settings and click the Environment Variables button at the bottom.
- Select Path from the Variable section and click Edit.
-
Click New and type
C:\go-bininto the field or click Browse and select the directory, and click OK.
Setting the PATH variable for Windows 10
Edit Environment Variables using search:
-
Click Search and type
envorenvironment. - Select Edit environment variables for your account.
- Select Path from the Variable section and click Edit.
-
Click New and type
C:\go-bininto the field or click Browse and select the directory, and click OK.
2.3.3. Installing odo on macOS Link kopierenLink in die Zwischenablage kopiert!
2.3.3.1. Binary installation Link kopierenLink in die Zwischenablage kopiert!
curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-darwin-amd64 -o /usr/local/bin/odo chmod +x /usr/local/bin/odo
# curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-darwin-amd64 -o /usr/local/bin/odo
# chmod +x /usr/local/bin/odo
2.3.3.2. Tarball installation Link kopierenLink in die Zwischenablage kopiert!
sh -c 'curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-darwin-amd64.tar.gz | gzip -d > /usr/local/bin/odo' chmod +x /usr/local/bin/odo
# sh -c 'curl -L https://mirror.openshift.com/pub/openshift-v4/clients/odo/latest/odo-darwin-amd64.tar.gz | gzip -d > /usr/local/bin/odo'
# chmod +x /usr/local/bin/odo
2.4. Using odo in a restricted environment Link kopierenLink in die Zwischenablage kopiert!
2.4.1. About odo in a restricted environment Link kopierenLink in die Zwischenablage kopiert!
To run odo in a disconnected OpenShift Container Platform cluster or a cluster provisioned in a restricted environment, you must ensure that a cluster administrator has created a cluster with a mirrored registry.
To start working in a disconnected cluster, you must first push the odo init image to the registry of the cluster and then overwrite the odo init image path using the ODO_BOOTSTRAPPER_IMAGE environment variable.
After you push the odo init image, you must mirror a supported builder image from the registry, overwrite a mirror registry and then create your application. A builder image is necessary to configure a runtime environment for your application and also contains the build tool needed to build your application, for example npm for Node.js or Maven for Java. A mirror registry contains all the necessary dependencies for your application.
2.4.2. Pushing the odo init image to the restricted cluster registry Link kopierenLink in die Zwischenablage kopiert!
Depending on the configuration of your cluster and your operating system you can either push the odo init image to a mirror registry or directly to an internal registry.
2.4.2.1. Prerequisites Link kopierenLink in die Zwischenablage kopiert!
-
Install
ocon the client operating system. -
Install
odoon the client operating system. - Access to an OpenShift Container Platform restricted cluster with a configured internal registry or a mirror registry.
2.4.2.2. Pushing the odo init image to a mirror registry Link kopierenLink in die Zwischenablage kopiert!
Depending on your operating system, you can push the odo init image to a cluster with a mirror registry as follows:
2.4.2.2.1. Pushing the init image to a mirror registry on Linux Link kopierenLink in die Zwischenablage kopiert!
Procedure
Use
base64to encode the root certification authority (CA) content of your mirror registry:echo <content_of_additional_ca> | base64 -d > disconnect-ca.crt
$ echo <content_of_additional_ca> | base64 -d > disconnect-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy the encoded root CA certificate to the appropriate location:
sudo cp ./disconnect-ca.crt /etc/pki/ca-trust/source/anchors/<mirror-registry>.crt
$ sudo cp ./disconnect-ca.crt /etc/pki/ca-trust/source/anchors/<mirror-registry>.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Trust a CA in your client platform and log into the OpenShift Container Platform mirror registry:
sudo update-ca-trust enable && sudo systemctl daemon-reload && sudo systemctl restart / docker && docker login <mirror-registry>:5000 -u <username> -p <password>
$ sudo update-ca-trust enable && sudo systemctl daemon-reload && sudo systemctl restart / docker && docker login <mirror-registry>:5000 -u <username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mirror the
odo initimage:oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
$ oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Override the default
odo initimage path by setting theODO_BOOTSTRAPPER_IMAGEenvironment variable:export ODO_BOOTSTRAPPER_IMAGE=<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
$ export ODO_BOOTSTRAPPER_IMAGE=<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2.2.2. Pushing the init image to a mirror registry on MacOS Link kopierenLink in die Zwischenablage kopiert!
Procedure
Use
base64to encode the root certification authority (CA) content of your mirror registry:echo <content_of_additional_ca> | base64 -d > disconnect-ca.crt
$ echo <content_of_additional_ca> | base64 -d > disconnect-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy the encoded root CA certificate to the appropriate location:
- Restart Docker using the Docker UI.
Run the following command:
docker login <mirror-registry>:5000 -u <username> -p <password>
$ docker login <mirror-registry>:5000 -u <username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Mirror the
odo initimage:oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
$ oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Override the default
odo initimage path by setting theODO_BOOTSTRAPPER_IMAGEenvironment variable:export ODO_BOOTSTRAPPER_IMAGE=<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
$ export ODO_BOOTSTRAPPER_IMAGE=<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2.2.3. Pushing the init image to a mirror registry on Windows Link kopierenLink in die Zwischenablage kopiert!
Procedure
Use
base64to encode the root certification authority (CA) content of your mirror registry:PS C:\> echo <content_of_additional_ca> | base64 -d > disconnect-ca.crt
PS C:\> echo <content_of_additional_ca> | base64 -d > disconnect-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow As an administrator, copy the encoded root CA certificate to the appropriate location by executing the following command:
PS C:\WINDOWS\system32> certutil -addstore -f "ROOT" disconnect-ca.crt
PS C:\WINDOWS\system32> certutil -addstore -f "ROOT" disconnect-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Trust a CA in your client platform and log into the OpenShift Container Platform mirror registry:
- Restart Docker using the Docker UI.
Run the following command:
PS C:\WINDOWS\system32> docker login <mirror-registry>:5000 -u <username> -p <password>
PS C:\WINDOWS\system32> docker login <mirror-registry>:5000 -u <username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Mirror the
odo initimage:PS C:\> oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
PS C:\> oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Override the default
odo initimage path by setting theODO_BOOTSTRAPPER_IMAGEenvironment variable:PS C:\> $env:ODO_BOOTSTRAPPER_IMAGE="<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>"
PS C:\> $env:ODO_BOOTSTRAPPER_IMAGE="<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2.3. Pushing the odo init image to an internal registry directly Link kopierenLink in die Zwischenablage kopiert!
If your cluster allows images to be pushed to the internal registry directly, push the odo init image to the registry as follows:
2.4.2.3.1. Pushing the init image directly on Linux Link kopierenLink in die Zwischenablage kopiert!
Procedure
Enable the default route:
oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registry$ oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get a wildcard route CA:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Use
base64to encode the root certification authority (CA) content of your mirror registry:echo <tls.crt> | base64 -d > ca.crt
$ echo <tls.crt> | base64 -d > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Trust a CA in your client platform:
sudo cp ca.crt /etc/pki/ca-trust/source/anchors/externalroute.crt && sudo update-ca-trust enable && sudo systemctl daemon-reload && sudo systemctl restart docker
$ sudo cp ca.crt /etc/pki/ca-trust/source/anchors/externalroute.crt && sudo update-ca-trust enable && sudo systemctl daemon-reload && sudo systemctl restart dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Log into the internal registry:
oc get route -n openshift-image-registry docker login <registry_path> -u kubeadmin -p $(oc whoami -t)
$ oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None $ docker login <registry_path> -u kubeadmin -p $(oc whoami -t)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Push the
odo initimage:docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>
$ docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> $ docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> $ docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Override the default
odo initimage path by setting theODO_BOOTSTRAPPER_IMAGEenvironment variable:export ODO_BOOTSTRAPPER_IMAGE=<registry_path>/openshiftdo/odo-init-image-rhel7:1.0.1
$ export ODO_BOOTSTRAPPER_IMAGE=<registry_path>/openshiftdo/odo-init-image-rhel7:1.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2.3.2. Pushing the init image directly on MacOS Link kopierenLink in die Zwischenablage kopiert!
Procedure
Enable the default route:
oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registry$ oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get a wildcard route CA:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Use
base64to encode the root certification authority (CA) content of your mirror registry:echo <tls.crt> | base64 -d > ca.crt
$ echo <tls.crt> | base64 -d > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Trust a CA in your client platform:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Log into the internal registry:
oc get route -n openshift-image-registry docker login <registry_path> -u kubeadmin -p $(oc whoami -t)
$ oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None $ docker login <registry_path> -u kubeadmin -p $(oc whoami -t)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Push the
odo initimage:docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>
$ docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> $ docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> $ docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Override the default
odo initimage path by setting theODO_BOOTSTRAPPER_IMAGEenvironment variable:export ODO_BOOTSTRAPPER_IMAGE=<registry_path>/openshiftdo/odo-init-image-rhel7:1.0.1
$ export ODO_BOOTSTRAPPER_IMAGE=<registry_path>/openshiftdo/odo-init-image-rhel7:1.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2.3.3. Pushing the init image directly on Windows Link kopierenLink in die Zwischenablage kopiert!
Procedure
Enable the default route:
PS C:\> oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryPS C:\> oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Get a wildcard route CA:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Use
base64to encode the root certification authority (CA) content of your mirror registry:PS C:\> echo <tls.crt> | base64 -d > ca.crt
PS C:\> echo <tls.crt> | base64 -d > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow As an administrator, trust a CA in your client platform by executing the following command:
PS C:\WINDOWS\system32> certutil -addstore -f "ROOT" ca.crt
PS C:\WINDOWS\system32> certutil -addstore -f "ROOT" ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Log into the internal registry:
PS C:\> oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None PS C:\> docker login <registry_path> -u kubeadmin -p $(oc whoami -t)
PS C:\> oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None PS C:\> docker login <registry_path> -u kubeadmin -p $(oc whoami -t)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Push the
odo initimage:PS C:\> docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> PS C:\> docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> PS C:\> docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>
PS C:\> docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> PS C:\> docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> PS C:\> docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Override the default
odo initimage path by setting theODO_BOOTSTRAPPER_IMAGEenvironment variable:PS C:\> $env:ODO_BOOTSTRAPPER_IMAGE="<registry_path>/openshiftdo/odo-init-image-rhel7:<tag>"
PS C:\> $env:ODO_BOOTSTRAPPER_IMAGE="<registry_path>/openshiftdo/odo-init-image-rhel7:<tag>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.3. Creating and deploying a component to the disconnected cluster Link kopierenLink in die Zwischenablage kopiert!
After you push the init image to a cluster with a mirrored registry, you must mirror a supported builder image for your application with the oc tool, overwrite the mirror registry using the environment variable, and then create your component.
2.4.3.1. Prerequisites Link kopierenLink in die Zwischenablage kopiert!
-
Install
ocon the client operating system. -
Install
odoon the client operating system. - Access to an OpenShift Container Platform restricted cluster with a configured internal registry or a mirror registry.
-
Push the
odo initimage to your cluster registry.
2.4.3.2. Mirroring a supported builder image Link kopierenLink in die Zwischenablage kopiert!
To use npm packages for Node.js dependencies and Maven packages for Java dependencies and configure a runtime environment for your application, you must mirror a respective builder image from the mirror registry.
Procedure
Verify that the required images tag is not imported:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mirror the supported image tag to the private registry:
oc image mirror registry.access.redhat.com/rhscl/nodejs-10-rhel7:<tag> <private_registry>/rhscl/nodejs-10-rhel7:<tag>
$ oc image mirror registry.access.redhat.com/rhscl/nodejs-10-rhel7:<tag> <private_registry>/rhscl/nodejs-10-rhel7:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Import the image:
oc tag <mirror-registry>:<port>/rhscl/nodejs-10-rhel7:<tag> nodejs-10-rhel7:latest --scheduled
$ oc tag <mirror-registry>:<port>/rhscl/nodejs-10-rhel7:<tag> nodejs-10-rhel7:latest --scheduledCopy to Clipboard Copied! Toggle word wrap Toggle overflow You must periodically re-import the image. The
--scheduledflag enables automatic re-import of the image.Verify that the images with the given tag have been imported:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.3.3. Overwriting the mirror registry Link kopierenLink in die Zwischenablage kopiert!
To download npm packages for Node.js dependencies and Maven packages for Java dependencies from a private mirror registry, you must create and configure a mirror npm or Maven registry on the cluster. You can then overwrite the mirror registry on an existing component or when you create a new component.
Procedure
To overwrite the mirror registry on an existing component:
odo config set --env NPM_MIRROR=<npm_mirror_registry>
$ odo config set --env NPM_MIRROR=<npm_mirror_registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow To overwrite the mirror registry when creating a component:
odo component create nodejs --env NPM_MIRROR=<npm_mirror_registry>
$ odo component create nodejs --env NPM_MIRROR=<npm_mirror_registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.3.4. Creating a Node.js application with odo Link kopierenLink in die Zwischenablage kopiert!
To create a Node.js component, download the Node.js application and push the source code to your cluster with odo.
Procedure
Change the current directory to the directory with your application:
cd <directory name>
$ cd <directory name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add a component of the type Node.js to your application:
odo create nodejs
$ odo create nodejsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteBy 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
$ odo pushCopy to Clipboard Copied! Toggle word wrap Toggle overflow Your component is now deployed to OpenShift Container Platform.
Create a URL and add an entry in the local configuration file as follows:
odo url create --port 8080
$ odo url create --port 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Push the changes. This creates a URL on the cluster.
odo push
$ odo pushCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the URLs to check the desired URL for the component.
odo url list
$ odo url listCopy to Clipboard Copied! Toggle word wrap Toggle overflow View your deployed application using the generated URL.
curl <URL>
$ curl <URL>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. Creating a single-component application with odo Link kopierenLink in die Zwischenablage kopiert!
With odo, you can create and deploy applications on OpenShift Container Platform clusters.
2.5.1. Prerequisites Link kopierenLink in die Zwischenablage kopiert!
-
odois installed. - You have a running OpenShift Container Platform cluster. You can use CodeReady Containers (CRC) to deploy a local OpenShift Container Platform cluster quickly.
2.5.2. Creating a project Link kopierenLink in die Zwischenablage kopiert!
Create a project to keep your source code, tests, and libraries organized in a separate single unit.
Procedure
Log in to an OpenShift Container Platform cluster:
odo login -u developer -p developer
$ odo login -u developer -p developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a project:
odo project create myproject
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myprojectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.3. Creating a Node.js application with odo Link kopierenLink in die Zwischenablage kopiert!
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
$ mkdir my_components $$ cd my_componentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Download the example Node.js application:
git clone https://github.com/openshift/nodejs-ex
$ git clone https://github.com/openshift/nodejs-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow Change the current directory to the directory with your application:
cd <directory name>
$ cd <directory name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add a component of the type Node.js to your application:
odo create nodejs
$ odo create nodejsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteBy 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
$ odo pushCopy to Clipboard Copied! Toggle word wrap Toggle overflow Your component is now deployed to OpenShift Container Platform.
Create a URL and add an entry in the local configuration file as follows:
odo url create --port 8080
$ odo url create --port 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Push the changes. This creates a URL on the cluster.
odo push
$ odo pushCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the URLs to check the desired URL for the component.
odo url list
$ odo url listCopy to Clipboard Copied! Toggle word wrap Toggle overflow View your deployed application using the generated URL.
curl <URL>
$ curl <URL>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.4. Modifying your application code Link kopierenLink in die Zwischenablage kopiert!
You can modify your application code and have the changes applied to your application on OpenShift Container Platform.
- Edit one of the layout files within the Node.js directory with your preferred text editor.
Update your component:
odo push
$ odo pushCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Refresh your application in the browser to see the changes.
2.5.5. Adding storage to the application components Link kopierenLink in die Zwischenablage kopiert!
Persistent storage keeps data available between restarts of odo. You can add storage to your components with the odo storage command.
Procedure
Add storage to your components:
odo storage create nodestorage --path=/opt/app-root/src/storage/ --size=1Gi
$ odo storage create nodestorage --path=/opt/app-root/src/storage/ --size=1GiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Your component now has 1 GB storage.
2.5.6. Adding a custom builder to specify a build image Link kopierenLink in die Zwischenablage kopiert!
With OpenShift Container Platform, 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 OpenShift Container Platform:
oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift \ --confirm
$ oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift \ --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Tag the image to make it accessible to odo:
oc annotate istag/openjdk18:latest tags=builder
$ oc annotate istag/openjdk18:latest tags=builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow Deploy the image with odo:
odo create openjdk18 --git \ https://github.com/openshift-evangelists/Wild-West-Backend
$ odo create openjdk18 --git \ https://github.com/openshift-evangelists/Wild-West-BackendCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.7. Connecting your application to multiple services using OpenShift Service Catalog Link kopierenLink in die Zwischenablage kopiert!
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 OpenShift Container Platform to a variety of services.
Prerequisites
- You have a running OpenShift Container Platform cluster.
- The service catalog is installed and enabled on your cluster.
Procedure
To list the services:
odo catalog list services
$ odo catalog list servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow To use service catalog-related operations:
odo service <verb> <servicename>
$ odo service <verb> <servicename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.8. Deleting an application Link kopierenLink in die Zwischenablage kopiert!
Deleting an application will delete all components associated with the application.
Procedure
List the applications in the current project:
odo app list
$ odo app list The project '<project_name>' has the following applications: NAME appCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the components associated with the applications. These components will be deleted with the application:
odo component list
$ odo component list APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ PushedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the application:
odo app delete <application_name>
$ odo app delete <application_name> ? Are you sure you want to delete the application: <application_name> from project: <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Confirm the deletion with
Y. You can suppress the confirmation prompt using the-fflag.
2.6. Creating a multicomponent application with odo Link kopierenLink in die Zwischenablage kopiert!
odo allows you to create a multicomponent application, modify it, and link its components in an easy and automated way.
This example describes how to deploy a multicomponent application - a shooter game. The application consists of a front-end Node.js component and a back-end Java component.
2.6.1. Prerequisites Link kopierenLink in die Zwischenablage kopiert!
-
odois installed. - You have a running OpenShift Container Platform cluster. Developers can use CodeReady Containers (CRC) to deploy a local OpenShift Container Platform cluster quickly.
- Maven is installed.
2.6.2. Creating a project Link kopierenLink in die Zwischenablage kopiert!
Create a project to keep your source code, tests, and libraries organized in a separate single unit.
Procedure
Log in to an OpenShift Container Platform cluster:
odo login -u developer -p developer
$ odo login -u developer -p developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a project:
odo project create myproject
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myprojectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.3. Deploying the back-end component Link kopierenLink in die Zwischenablage kopiert!
To create a Java component, import the Java builder image, download the Java application and push the source code to your cluster with odo.
Procedure
Import
openjdk18into the cluster:oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
$ oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Tag the image as
builderto make it accessible for odo:oc annotate istag/openjdk18:latest tags=builder
$ oc annotate istag/openjdk18:latest tags=builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow Run
odo catalog list componentsto see the created image:odo catalog list components Odo Supported OpenShift Components: NAME PROJECT TAGS nodejs openshift 10,8,8-RHOAR,latest openjdk18 myproject latest
$ odo catalog list components Odo Supported OpenShift Components: NAME PROJECT TAGS nodejs openshift 10,8,8-RHOAR,latest openjdk18 myproject latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a directory for your components:
mkdir my_components $$ cd my_components
$ mkdir my_components $$ cd my_componentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Download the example back-end application:
git clone https://github.com/openshift-evangelists/Wild-West-Backend backend
$ git clone https://github.com/openshift-evangelists/Wild-West-Backend backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow Change directory to the back-end source directory and check that you have the correct files in the directory:
cd backend ls
$ cd backend $ ls debug.sh pom.xml srcCopy to Clipboard Copied! Toggle word wrap Toggle overflow Build the back-end source files with Maven to create a JAR file:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create a component configuration of Java component-type named
backend:odo create openjdk18 backend --binary target/wildwest-1.0.jar
$ odo create openjdk18 backend --binary target/wildwest-1.0.jar ✓ Validating component [1ms] Please use `odo push` command to create the component with source deployedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Now the configuration file
config.yamlis in the local directory of the back-end component that contains information about the component for deployment.Check the configuration settings of the back-end component in the
config.yamlfile using:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Push the component to the OpenShift Container Platform cluster.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Using
odo push, OpenShift Container Platform creates a container to host the back-end component, deploys the container into a Pod running on the OpenShift Container Platform cluster, and starts thebackendcomponent.Validate:
The status of the action in odo:
odo log -f 2019-09-30 20:14:19.738 INFO 444 --- [ main] c.o.wildwest.WildWestApplication : Starting WildWestApplication v1.0 onbackend-app-1-9tnhc with PID 444 (/deployments/wildwest-1.0.jar started by jboss in /deployments)
odo log -f 2019-09-30 20:14:19.738 INFO 444 --- [ main] c.o.wildwest.WildWestApplication : Starting WildWestApplication v1.0 onbackend-app-1-9tnhc with PID 444 (/deployments/wildwest-1.0.jar started by jboss in /deployments)Copy to Clipboard Copied! Toggle word wrap Toggle overflow The status of the back-end component:
odo list
$ odo list APP NAME TYPE SOURCE STATE app backend openjdk18 file://target/wildwest-1.0.jar PushedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.4. Deploying the front-end component Link kopierenLink in die Zwischenablage kopiert!
To create and deploy a front-end component, download the Node.js application and push the source code to your cluster with odo.
Procedure
Download the example front-end application:
git clone https://github.com/openshift/nodejs-ex
$ git clone https://github.com/openshift/nodejs-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow Change the current directory to the front-end directory:
cd <directory-name>
$ cd <directory-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow List the contents of the directory to see that the front end is a Node.js application.
ls
$ ls assets bin index.html kwww-frontend.iml package.json package-lock.json playfield.png README.md server.jsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThe front-end component is written in an interpreted language (Node.js); it does not need to be built.
Create a component configuration of Node.js component-type named
frontend:odo create nodejs frontend
$ odo create nodejs frontend ✓ Validating component [5ms] Please use `odo push` command to create the component with source deployedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Push the component to a running container.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.5. Linking both components Link kopierenLink in die Zwischenablage kopiert!
Components running on the cluster need to be connected in order to interact. OpenShift Container Platform provides linking mechanisms to publish communication bindings from a program to its clients.
Procedure
List all the components that are running on the cluster:
odo list
$ odo list APP NAME TYPE SOURCE STATE app backend openjdk18 file://target/wildwest-1.0.jar Pushed app frontend nodejs file://./ PushedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Link the current front-end component to the backend:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The configuration information of the back-end component is added to the front-end component and the front-end component restarts.
2.6.6. Exposing components to the public Link kopierenLink in die Zwischenablage kopiert!
Procedure
Create an external URL for the application:
cd frontend odo url create frontend --port 8080
$ cd frontend $ odo url create frontend --port 8080 ✓ URL frontend created for component: frontend To create URL on the OpenShift cluster, use `odo push`Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the changes:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Open the URL in a browser to view the application.
If an application requires permissions to the active Service Account to access the OpenShift Container Platform namespace and delete active pods, the following error may occur when looking at odo log from the back-end component:
Message: Forbidden!Configured service account doesn’t have access. Service account may have been revoked
To resolve this error, add permissions for the Service Account role:
oc policy add-role-to-group view system:serviceaccounts -n <project> oc policy add-role-to-group edit system:serviceaccounts -n <project>
$ oc policy add-role-to-group view system:serviceaccounts -n <project>
$ oc policy add-role-to-group edit system:serviceaccounts -n <project>
Do not do this on a production cluster.
2.6.7. Modifying the running application Link kopierenLink in die Zwischenablage kopiert!
Procedure
Change the local directory to the front-end directory:
cd ~/frontend
$ cd ~/frontendCopy to Clipboard Copied! Toggle word wrap Toggle overflow Monitor the changes on the file system using:
odo watch
$ odo watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow Edit the
index.htmlfile to change the displayed name for the game.NoteA slight delay is possible before odo recognizes the change.
odo pushes the changes to the front-end component and prints its status to the terminal:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Refresh the application page in the web browser. The new name is now displayed.
2.6.8. Deleting an application Link kopierenLink in die Zwischenablage kopiert!
Deleting an application will delete all components associated with the application.
Procedure
List the applications in the current project:
odo app list
$ odo app list The project '<project_name>' has the following applications: NAME appCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the components associated with the applications. These components will be deleted with the application:
odo component list
$ odo component list APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ PushedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the application:
odo app delete <application_name>
$ odo app delete <application_name> ? Are you sure you want to delete the application: <application_name> from project: <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Confirm the deletion with
Y. You can suppress the confirmation prompt using the-fflag.
2.7. Creating an application with a database Link kopierenLink in die Zwischenablage kopiert!
This example describes how to deploy and connect a database to a front-end application.
2.7.1. Prerequisites Link kopierenLink in die Zwischenablage kopiert!
-
odois installed. -
occlient is installed. - You have a running OpenShift Container Platform cluster. Developers can use CodeReady Containers (CRC) to deploy a local OpenShift Container Platform cluster quickly.
- Service Catalog is enabled.
2.7.2. Creating a project Link kopierenLink in die Zwischenablage kopiert!
Create a project to keep your source code, tests, and libraries organized in a separate single unit.
Procedure
Log in to an OpenShift Container Platform cluster:
odo login -u developer -p developer
$ odo login -u developer -p developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a project:
odo project create myproject
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myprojectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.3. Deploying the front-end component Link kopierenLink in die Zwischenablage kopiert!
To create and deploy a front-end component, download the Node.js application and push the source code to your cluster with odo.
Procedure
Download the example front-end application:
git clone https://github.com/openshift/nodejs-ex
$ git clone https://github.com/openshift/nodejs-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow Change the current directory to the front-end directory:
cd <directory-name>
$ cd <directory-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow List the contents of the directory to see that the front end is a Node.js application.
ls
$ ls assets bin index.html kwww-frontend.iml package.json package-lock.json playfield.png README.md server.jsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThe front-end component is written in an interpreted language (Node.js); it does not need to be built.
Create a component configuration of Node.js component-type named
frontend:odo create nodejs frontend
$ odo create nodejs frontend ✓ Validating component [5ms] Please use `odo push` command to create the component with source deployedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a URL to access the frontend interface.
odo url create myurl
$ odo url create myurl ✓ URL myurl created for component: nodejs-nodejs-ex-pmdpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Push the component to the OpenShift Container Platform cluster.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.4. Deploying a database in interactive mode Link kopierenLink in die Zwischenablage kopiert!
odo provides a command-line interactive mode which simplifies deployment.
Procedure
Run the interactive mode and answer the prompts:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Your password or username will be passed to the front-end application as environment variables.
2.7.5. Deploying a database manually Link kopierenLink in die Zwischenablage kopiert!
List the available services:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Choose the
mongodb-persistenttype of service and see the required parameters:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pass the required parameters as flags and wait for the deployment of the database:
odo service create mongodb-persistent --plan default --wait -p DATABASE_SERVICE_NAME=mongodb -p MEMORY_LIMIT=512Mi -p MONGODB_DATABASE=sampledb -p VOLUME_CAPACITY=1Gi
$ odo service create mongodb-persistent --plan default --wait -p DATABASE_SERVICE_NAME=mongodb -p MEMORY_LIMIT=512Mi -p MONGODB_DATABASE=sampledb -p VOLUME_CAPACITY=1GiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.6. Connecting the database to the front-end application Link kopierenLink in die Zwischenablage kopiert!
Link the database to the front-end service:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow See the environment variables of the application and the database in the Pod:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open the URL in the browser and notice the database configuration in the bottom right:
odo url list
$ odo url listCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.7. Deleting an application Link kopierenLink in die Zwischenablage kopiert!
Deleting an application will delete all components associated with the application.
Procedure
List the applications in the current project:
odo app list
$ odo app list The project '<project_name>' has the following applications: NAME appCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the components associated with the applications. These components will be deleted with the application:
odo component list
$ odo component list APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ PushedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the application:
odo app delete <application_name>
$ odo app delete <application_name> ? Are you sure you want to delete the application: <application_name> from project: <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Confirm the deletion with
Y. You can suppress the confirmation prompt using the-fflag.
2.8. Using sample applications Link kopierenLink in die Zwischenablage kopiert!
odo offers partial compatibility with any language or runtime listed within the OpenShift catalog of component types. For example:
For odo 1.1.0 Java and Node.js are the officialy supported component types. Run odo catalog list components to verify the officially supported component types.
In order to access the component over the web, create a URL using odo url create.
2.8.1. Examples from Git repositories Link kopierenLink in die Zwischenablage kopiert!
2.8.1.1. httpd Link kopierenLink in die Zwischenablage kopiert!
This example helps build and serve static content using httpd on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the Apache HTTP Server container image repository.
odo create httpd --git https://github.com/openshift/httpd-ex.git
$ odo create httpd --git https://github.com/openshift/httpd-ex.git
2.8.1.2. java Link kopierenLink in die Zwischenablage kopiert!
This example helps build and run fat JAR Java applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the Java S2I Builder image.
odo create java --git https://github.com/spring-projects/spring-petclinic.git
$ odo create java --git https://github.com/spring-projects/spring-petclinic.git
2.8.1.3. nodejs Link kopierenLink in die Zwischenablage kopiert!
Build and run Node.js applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the Node.js 8 container image.
odo create nodejs --git https://github.com/openshift/nodejs-ex.git
$ odo create nodejs --git https://github.com/openshift/nodejs-ex.git
2.8.1.4. perl Link kopierenLink in die Zwischenablage kopiert!
This example helps build and run Perl applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the Perl 5.26 container image.
odo create perl --git https://github.com/openshift/dancer-ex.git
$ odo create perl --git https://github.com/openshift/dancer-ex.git
2.8.1.5. php Link kopierenLink in die Zwischenablage kopiert!
This example helps build and run PHP applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the PHP 7.1 Docker image.
odo create php --git https://github.com/openshift/cakephp-ex.git
$ odo create php --git https://github.com/openshift/cakephp-ex.git
2.8.1.6. python Link kopierenLink in die Zwischenablage kopiert!
This example helps build and run Python applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the Python 3.6 container image.
odo create python --git https://github.com/openshift/django-ex.git
$ odo create python --git https://github.com/openshift/django-ex.git
2.8.1.7. ruby Link kopierenLink in die Zwischenablage kopiert!
This example helps build and run Ruby applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see Ruby 2.5 container image.
odo create ruby --git https://github.com/openshift/ruby-ex.git
$ odo create ruby --git https://github.com/openshift/ruby-ex.git
2.8.1.8. wildfly Link kopierenLink in die Zwischenablage kopiert!
This example helps build and run WildFly applications on CentOS 7. For more information about using this builder image, including OpenShift Container Platform considerations, see the Wildfly - CentOS Docker images for OpenShift.
odo create wildfly --git https://github.com/openshift/openshift-jee-sample.git
$ odo create wildfly --git https://github.com/openshift/openshift-jee-sample.git
2.8.2. Binary examples Link kopierenLink in die Zwischenablage kopiert!
2.8.2.1. java Link kopierenLink in die Zwischenablage kopiert!
Java can be used to deploy a binary artifact as follows:
git clone https://github.com/spring-projects/spring-petclinic.git cd spring-petclinic mvn package odo create java test3 --binary target/*.jar odo push
$ git clone https://github.com/spring-projects/spring-petclinic.git
$ cd spring-petclinic
$ mvn package
$ odo create java test3 --binary target/*.jar
$ odo push
2.8.2.2. wildfly Link kopierenLink in die Zwischenablage kopiert!
WildFly can be used to deploy a binary application as follows:
2.9. Debugging applications in odo Link kopierenLink in die Zwischenablage kopiert!
Interactive debugging in odo is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview/.
With odo, you can attach a debugger to remotely debug your application. This feature is only supported for NodeJS and Java components.
Components created with odo run in the debug mode by default. A debugger agent runs on the component, on a specific port. To start debugging your application, you must start port forwarding and attach the local debugger bundled in your Integrated development environment (IDE).
2.9.1. Debugging an application Link kopierenLink in die Zwischenablage kopiert!
You can debug your application on in odo with the odo debug command.
Procedure
After an application is deployed, start the port forwarding for your component to debug the application:
odo debug port-forward
$ odo debug port-forwardCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Attach the debugger bundled in your IDE to the component. Instructions vary depending on your IDE.
2.9.2. Configuring debugging parameters Link kopierenLink in die Zwischenablage kopiert!
You can specify a remote port with odo config command and a local port with the odo debug command.
Procedure
To set a remote port on which the debugging agent should run, run:
odo config set DebugPort 9292
$ odo config set DebugPort 9292Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteYou must redeploy your component for this value to be reflected on the component.
To set a local port to port forward, run:
odo debug port-forward --local-port 9292
$ odo debug port-forward --local-port 9292Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThe local port value does not persist. You must provide it every time you need to change the port.
2.10. Managing environment variables Link kopierenLink in die Zwischenablage kopiert!
odo stores component-specific configurations and environment variables in the config file. You can use the odo config command to set, unset, and list environment variables for components without the need to modify the config file.
2.10.1. Setting and unsetting environment variables Link kopierenLink in die Zwischenablage kopiert!
Procedure
To set an environment variable in a component:
odo config set --env <variable>=<value>
$ odo config set --env <variable>=<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow To unset an environment variable in a component:
odo config unset --env <variable>
$ odo config unset --env <variable>Copy to Clipboard Copied! Toggle word wrap Toggle overflow To list all environment variables in a component:
odo config view
$ odo config viewCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.11. Configuring the odo CLI Link kopierenLink in die Zwischenablage kopiert!
2.11.1. Using command completion Link kopierenLink in die Zwischenablage kopiert!
Currently command completion is only supported for bash, zsh, and fish shells.
odo provides a smart completion of command parameters based on user input. For this to work, odo needs to integrate with the executing shell.
Procedure
To install command completion automatically:
Run:
odo --complete
$ odo --completeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Press
ywhen prompted to install the completion hook.
-
To install the completion hook manually, add
complete -o nospace -C <full path to your odo binary> odoto your shell configuration file. After any modification to your shell configuration file, restart your shell. To disable completion:
Run:
odo --uncomplete
$ odo --uncompleteCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Press
ywhen prompted to uninstall the completion hook.
Re-enable command completion if you either rename the odo executable or move it to a different directory.
2.11.2. Ignoring files or patterns Link kopierenLink in die Zwischenablage kopiert!
You can configure a list of files or patterns to ignore by modifying the .odoignore file in the root directory of your application. This applies to both odo push and odo watch.
If the .odoignore file does not exist, the .gitignore file is used instead for ignoring specific files and folders.
To ignore .git files, any files with the .js extension, and the folder tests, add the following to either the .odoignore or the .gitignore file:
.git *.js tests/
.git
*.js
tests/
The .odoignore file allows any glob expressions.
2.12. odo CLI reference Link kopierenLink in die Zwischenablage kopiert!
2.12.1. Basic odo CLI commands Link kopierenLink in die Zwischenablage kopiert!
2.12.1.1. app Link kopierenLink in die Zwischenablage kopiert!
Perform application operations related to your OpenShift Container Platform project.
Example using app
2.12.1.2. catalog Link kopierenLink in die Zwischenablage kopiert!
Perform catalog-related operations.
Example using catalog
2.12.1.3. component Link kopierenLink in die Zwischenablage kopiert!
Manage components of an application.
Example using component
Create a new component Create a local configuration and create all objects on the cluster
# Create a new component
odo component create
# Create a local configuration and create all objects on the cluster
odo component create --now
2.12.1.4. config Link kopierenLink in die Zwischenablage kopiert!
Modify odo specific settings within the config file.
Example using config
| Application | Application is the name of application the component needs to be part of |
| CPU | The minimum and maximum CPU a component can consume |
| Ignore | Consider the .odoignore file for push and watch |
| Application | The name of application that the component needs to be part of |
| CPU | The minimum and maximum CPU a component can consume |
| Ignore |
Whether to consider the |
| MaxCPU | The maximum CPU a component can consume |
| MaxMemory | The maximum memory a component can consume |
| Memory | The minimum and maximum memory a component can consume |
| MinCPU | The minimum CPU a component can consume |
| MinMemory | The minimum memory a component is provided |
| Name | The name of the component |
| Ports | Ports to be opened in the component |
| Project | The name of the project that the component is part of |
| Ref | Git ref to use for creating component from git source |
| SourceLocation | The path indicates the location of binary file or git source |
| SourceType | Type of component source - git/binary/local |
| Storage | Storage of the component |
| Type | The type of component |
| Url | The URL to access the component |
2.12.1.5. create Link kopierenLink in die Zwischenablage kopiert!
Create a configuration describing a component to be deployed on OpenShift Container Platform. If a component name is not provided, it is autogenerated.
By default, builder images are used from the current namespace. To explicitly supply a namespace, use: odo create namespace/name:version. If a version is not specified, the version defaults to latest.
Use odo catalog list to see a full list of component types that can be deployed.
Example using create
2.12.1.6. delete Link kopierenLink in die Zwischenablage kopiert!
Delete an existing component.
Example using delete
Delete component named 'frontend'.
# Delete component named 'frontend'.
odo delete frontend
odo delete frontend --all
2.12.1.7. describe Link kopierenLink in die Zwischenablage kopiert!
Describe the given component.
Example using describe
Describe nodejs component
# Describe nodejs component
odo describe nodejs
2.12.1.8. link Link kopierenLink in die Zwischenablage kopiert!
Link a component to a service or component.
Example using link
Link adds the appropriate secret to the environment of the source component. The source component can then consume the entries of the secret as environment variables. If the source component is not provided, the current active component is assumed.
2.12.1.9. list Link kopierenLink in die Zwischenablage kopiert!
List all the components in the current application.
Example using list
List all components in the application
# List all components in the application
odo list
2.12.1.10. log Link kopierenLink in die Zwischenablage kopiert!
Retrieve the log for the given component.
Example using log
Get the logs for the nodejs component
# Get the logs for the nodejs component
odo log nodejs
2.12.1.11. login Link kopierenLink in die Zwischenablage kopiert!
Log in to the cluster.
Example using login
2.12.1.12. logout Link kopierenLink in die Zwischenablage kopiert!
Log out of the current OpenShift Container Platform session.
Example using logout
Log out
# Log out
odo logout
2.12.1.13. preference Link kopierenLink in die Zwischenablage kopiert!
Modify odo specific configuration settings within the global preference file.
Example using preference
By default, the path to the global preference file is ~/.odo/preferece.yaml and it is stored in the environment variable GLOBALODOCONFIG. You can set up a custom path by setting the value of the environment variable to a new preference path, for example GLOBALODOCONFIG="new_path/preference.yaml"
| NamePrefix | The default prefix is the current directory name. Use this value to set a default name prefix. |
| Timeout | The timeout (in seconds) for OpenShift Container Platform server connection checks. |
| UpdateNotification | Controls whether an update notification is shown. |
2.12.1.14. project Link kopierenLink in die Zwischenablage kopiert!
Perform project operations.
Example using project
2.12.1.15. push Link kopierenLink in die Zwischenablage kopiert!
Push source code to a component.
Example using push
2.12.1.16. service Link kopierenLink in die Zwischenablage kopiert!
Perform service catalog operations.
Example using service
2.12.1.17. storage Link kopierenLink in die Zwischenablage kopiert!
Perform storage operations.
Example using storage
2.12.1.18. unlink Link kopierenLink in die Zwischenablage kopiert!
Unlink component or a service.
For this command to be successful, the service or component must have been linked prior to the invocation using odo link.
Example using unlink
2.12.1.19. update Link kopierenLink in die Zwischenablage kopiert!
Update the source code path of a component
Example using update
2.12.1.20. url Link kopierenLink in die Zwischenablage kopiert!
Expose a component to the outside world.
Example using url
The URLs that are generated using this command can be used to access the deployed components from outside the cluster.
2.12.1.21. utils Link kopierenLink in die Zwischenablage kopiert!
Utilities for terminal commands and modifying odo configurations.
Example using utils
Bash terminal PS1 support
# Bash terminal PS1 support
source <(odo utils terminal bash)
# Zsh terminal PS1 support
source <(odo utils terminal zsh)
2.12.1.22. version Link kopierenLink in die Zwischenablage kopiert!
Print the client version information.
Example using version
Print the client version of odo
# Print the client version of odo
odo version
2.12.1.23. watch Link kopierenLink in die Zwischenablage kopiert!
odo starts watching for changes and updates the component upon a change automatically.
Example using watch
Watch for changes in directory for current component
# Watch for changes in directory for current component
odo watch
# Watch for changes in directory for component called frontend
odo watch frontend
2.13. odo 1.1.0 release notes Link kopierenLink in die Zwischenablage kopiert!
2.13.1. Notable improvements in odo 1.1.0 Link kopierenLink in die Zwischenablage kopiert!
- IBM Z and PowerPC architecture binaries are now available.
-
odo cataloghas been improved to provide more useful output information. -
Information prompts have been added to the
odo service createcommand, providing possible next step scenarios. -
Log verbosity can now be set with an environment variable
ODO_LOG_LEVEL. -
Use
odo preference set PushTimeout <seconds>to specify the number of secondsodowaits for a component Pod to be deployed before the command fails. - Overall documentation improvements. The documentation now includes a description of `odo’s inner architecture.
2.13.2. Getting support Link kopierenLink in die Zwischenablage kopiert!
For Documentation
If you find an error or have suggestions for improving the documentation, file an issue in Bugzilla. Choose the OpenShift Container Platform product type and the Documentation component type.
For Product
If you find an error, encountered a bug, or have suggestions for improving the functionality of odo, file an issue in Bugzilla. Choose the Red Hat odo for OpenShift Container Platform product type.
Provide as many details in the issue description as possible.
2.13.3. Fixed issues Link kopierenLink in die Zwischenablage kopiert!
- Bug 1760573 The active pointer does not switch to the current active project after the deletion of a project.
-
Bug 1760578 The
odo watchcommand does not fail with an error message for Git-based components, but it should. -
Bug 1760583 The
odo config unsetcommand does not unset an environment variable, but says it did. -
Bug 1760585 The
odo delete --allcommand deletes the$HOME/.odofolder when run from$HOME. -
Bug 1760589 Autocompletion does not work for the
--contextflag inodo push. -
Bug 1761442 The
component createcommand fails when used with the--contextflag and--binaryflag if the binary is located in a temporary folder. - Bug 1783179 When you set an environment variable, create a URL route, and then change the source code of the component, the URL route becomes inaccessible.
2.13.4. Known issues Link kopierenLink in die Zwischenablage kopiert!
-
Bug 1760574 A deleted namespace is listed in the
odo project getcommand. -
Bug 1760575 The
odo app deletecommand removes application components but not Services. -
Bug 1760577 The
odo pushcommand does not delete the OpenShift objects when the component name is changed. -
Bug 1760586 The
odo deletecommand starts an infinite loop after a project is deleted and a component name is set. -
Bug 1760588 The
odo service createcommand crashes when run in Cygwin. -
Bug 1760590 In Git BASH for Windows, the
odo login -u developercommand does not hide a typed password when requested. -
Bug 1783188 In a disconnected cluster, the
odo component createcommand throws an error…tag not found…despite the component being listed in the catalog list. - Bug 1761440 It is not possible to create two Services of the same type in one project.
2.13.5. Technology Preview features in odo 1.1.0 Link kopierenLink in die Zwischenablage kopiert!
odo debug is a feature that allows users to attach a local debugger to a component running in the Pod on OpenShift Container Platform.
odo debug is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview/.
-
Use the
odo debug port-forwardcommand to start port forwarding. -
Use the
odo config set DebugPort 9292command to specify the remote port that the debugging agent should run on. -
Use the
odo debug port-forward --local-port 9292command to specify the local port for port forwarding.