This guide is designed to assist you through obtaining an OpenShift instance and installing WildFly, complete with a deployed application. It is not intended to cover all possible configurations, as links to more detailed documentation will be provided.

Obtaining an OpenShift Instance

There are many options available for running OpenShift. This guide will mention two.

Code-ready-containers

If you wish to run a local development environment, then CRC is likely to be a good starting point.

Developer sandbox

The Red Hat OpenShift Developer Sandbox is a hosted environment, and is free to use for development purposes.

This guide will focus on usage of the hosted developer sandbox environment. The sandbox should be provisioned from the page above before proceeding further.

OpenShift

In order to use OpenShift effectively, in addition to a running instance, you will need the OpenShift web console. To access this tool, from your OpenShift sandbox click the terminal icon (i.e. >_) at the top right of your sandbox portal. A terminal tab will pop up at the bottom of the page.

It is also possible to use the OpenShift command line terminal locally (oc command). This may be obtained from your package manager or downloaded from your OpenShift sandbox (in your control panel, clicking on the question mark icon at the top right of the console presents a drop-down menu where Command line tools takes you to the latest version of oc).

If you have already installed oc on your machine, make sure that its version matches the version of the sandbox. You can use oc version to check both the version of oc and the version of the sandbox. Another way to check the version of the sandbox is by clicking on the question mark icon at the top right of the web console and then clicking on About in the drop-down menu: the OpenShift version will be listed there.

Once you have downloaded and installed/unpacked the client, you can authenticate to your running sandbox OpenShift instance by using the Copy Login Command from the upper right menu in the sandbox user-interface (your username is displayed there.)

Example:

oc login --token=sha256~b-3av_0Lp8wmJu0G3WXzdfds34454mkvWjRRESd_jHTA --server=https://api.sandbox.x8i5.p1.openshiftapps.com:6443

We’ll be using the someuser-dev project for this example (someuser should be replaced with the username of the user):

oc project someuser-dev
Already on project "someuser-dev" on server "https://api.sandbox.x8i5.p1.openshiftapps.com:6443"

In the OpenShift sandbox, it is not possible to create a new project but, in case you are running your own OpenShift, the command to create a new project is:

oc new-project <project name>

Helm Charts

Helm provides an easy way to manage and share applications on Kubernetes and OpenShift. We will use it to deploy our example applications to OpenShift.

Install Helm and Helm Charts

See the instructions for installing Helm here. Helm is installed on your local system as a command, which we will use to install the WildFly Charts. Once Helm is installed, we can proceed to use it to install the Helm Charts in our OpenShift instance:

helm repo add wildfly https://docs.wildfly.org/wildfly-charts/

For more information on the WildFly Helm Charts, see this blog post and the WildFly Helm Charts documentation

Example: To-do Quickstart

The first example we will build and deploy to OpenShift is the todo-backend quickstart. This quickstart provides documentation for installing via Helm, so only a brief version is detailed below.

First, we need to provision a database instance, in this case PostgresSQL:

oc new-app postgresql-ephemeral \
   -p DATABASE_SERVICE_NAME=todos-db \
   -p POSTGRESQL_DATABASE=todos

Next we use the WildFly Helm Charts to build and deploy our quickstart:

helm install todo-backend -f https://raw.githubusercontent.com/wildfly/wildfly-charts/main/examples/todo-backend/todo-backend-bootable-jar.yaml wildfly/wildfly
Note that your Deployment will report "ErrImagePull" and "ImagePullBackOff" until the build is complete. Once the build is complete, your image will be automatically rolled out.

It is possible to use a specific quickstart tag in case the user does not want to use the main branch. To do so, add the following option to the above command:

--set build.ref={WildFlyQuickStartRepoTag}

Take a look at the bootable-jar-openshift profile configuration in the todo-backend quickstart’s pom.xml. The Maven profile named bootable-jar-openshift is used by the Helm chart to provision the server with the quickstart deployed. Notice the wildfly-jar-maven-plugin configuration defined in this profile. It specifies the layer that should be used when provisioning WildFly. For more details about this, take a look at the Architecture section in the quickstart’s README.

We have named this application todo-backend. This may be changed to a different name, if desired.

The application will now begin to build. The build can be observed via:

oc get build -w

It may take few minutes to build the application. Once the build is complete, deployment will begin and can be observed via:

oc get deployment todo-backend -w

Once deployment is complete, we need to query the route for this application to access it on the Internet. To do so, run:

oc get route todo-backend -o jsonpath="{.spec.host}"

Expected output:

todo-backend-someuser-dev.apps.sandbox.x8i5.p1.openshiftapps.com

The above command returns back a public address that points to the application deployed to the OpenShift cluster of the user (for example):

https://todo-backend-someuser-dev.apps.sandbox.x8i5.p1.openshiftapps.com

If you want to add entries in your application, use the following command:

curl -X POST -H "Content-Type: application/json" -d '{"title":"Deploy_ToDo-BackEnd","completed":false}' https://todo-backend-someuser-dev.apps.sandbox.x8i5.p1.openshiftapps.com

You can use the todo-frontend to test out the deployed app using:

https://todobackend.com/client/index.html

and entering your application URL from above.

If you wish to remove the application when you are done with it, simply run:

helm delete todo-backend

Example: jaxrs-client

The second example to build and deploy to OpenShift is the jaxrs-client quickstart.

First of all, clone the quickstart repo:

git clone https://github.com/wildfly/quickstart.git
cd quickstart/jaxrs-client

The WildFly Helm Charts are used to build and deploy jaxrs-client. The following command installs a Helm Release from the WildFly Helm Charts into an OpenShift cluster:

helm install jaxrs-client-from-chart -f charts/helm.yaml wildfly/wildfly
Note that your Deployment will report "ErrImagePull" and "ImagePullBackOff" until the build is complete. Once the build is complete, your image will be automatically rolled out.

This time, the name of the Helm Chart app is jaxrs-client-from-chart. (Of course, this may be changed to a different name, if desired.)

The application will now begin to build. The build can be observed via:

oc get build -w

It may take few minutes to build the application. Once the build is complete, to follow the deployment of the application, run:

oc get deployment jaxrs-client-from-chart -w

Once deployment is complete, we need to query the route for this application to access it on the Internet. To do so, run:

oc get route jaxrs-client-from-chart -o jsonpath="{.spec.host}"

The above command returns back a public address that points to the application deployed to the OpenShift cluster of the user (for example):

jaxrs-client-from-chart-someuser-dev.apps.sandbox.x8i5.p1.openshiftapps.com

At this point, defining a env variable for simplicity, it is possible to test the REST endpoint that has been deployed into the OpenShift cluster:

export ROUTE=$(oc get route jaxrs-client-from-chart -o jsonpath="{.spec.host}")

and use curl to send HTTP method requests to the REST endpoint, for example (GET):

curl -L $ROUTE/rest/contacts

To run the quickstart’s Arquillian integration tests to validate that the quickstart has been set up correctly:

mvn clean verify -Parq-remote -Dserver.host=https://$(oc get route jaxrs-client-from-chart --template='{{ .spec.host }}')

Take a look at the openshift profile configuration in the jaxrs-client quickstart’s pom.xml. The Maven profile named openshift is used by the Helm chart to provision the server with the quickstart deployed. Notice the wildfly-maven-plugin configuration defined in this profile. It specifies the layer that should be used when provisioning WildFly. For more details about this, take a look at the wildfly-maven-plugin documentation.

If you wish to remove the application when you are done with it, simply run:

helm uninstall jaxrs-client-from-chart

References