BAMOE Canvas is a web application that provides authoring tools for Decisions and Workflows, directly in the browser. It allows users to create, edit and manage Decisions and Workflows, by providing editors and other tools, such as Git integration for syncing repositories, OpenShift and Kubernetes integration for deploying your files, and much more.
It depends on two backend applications to reach its full potential:
-
Extended Services: This powers features like DMN Runner, static validation of DMN, BPMN models, and also provides a proxy to communicate with OpenShift and Kubernetes clusters.
-
Git CORS Proxy: Provides a proxy to allow BAMOE Canvas web app to communicate with Git providers, like github.com and bitbucket.org.
BAMOE Canvas itself, as well as its two backend applications, are available as container images. These images are published to Quay.io and can be used to run containers locally or in any cloud provider.
-
Canvas → https://quay.io/repository/bamoe/canvas?tab=tags @ 9.0.1
-
Extended Services → https://quay.io/repository/bamoe/extended-services?tab=tags @ 9.0.1
-
Git CORS Proxy → https://quay.io/repository/bamoe/git-cors-proxy?tab=tags @ 9.0.1
Note
|
The exact same version needs to be used for a deployment with these three images to work. |
Deploying BAMOE Canvas to OpenShift
If you have a OpenShift cluster and are logged in via the oc
cli tool, follow these steps to deploy BAMOE Canvas and its dependencies.
Note
|
Labeling the resources is optional, but it will make organizing and identifying your deployed resources much easier. |
-
Define some variables that will be useful to name and label the resources created.
export APP_PART_OF=bamoe-canvas-app export APP_NAME_EXTENDED_SERVICES=bamoe-extended-services export APP_NAME_GIT_CORS_PROXY=bamoe-git-cors-proxy export APP_NAME_BAMOE_CANVAS=bamoe-canvas
-
Deploy Extended Services and label its resources
oc new-app quay.io/bamoe/extended-services:9.0.1 --name=$APP_NAME_EXTENDED_SERVICES oc create route edge --service=$APP_NAME_EXTENDED_SERVICES oc label services/$APP_NAME_EXTENDED_SERVICES app.kubernetes.io/part-of=$APP_PART_OF oc label routes/$APP_NAME_EXTENDED_SERVICES app.kubernetes.io/part-of=$APP_PART_OF oc label deployments/$APP_NAME_EXTENDED_SERVICES app.kubernetes.io/part-of=$APP_PART_OF oc label deployments/$APP_NAME_EXTENDED_SERVICES app.openshift.io/runtime=golang
-
Deploy Git CORS Proxy and label its resources
oc new-app quay.io/bamoe/git-cors-proxy:9.0.1 --name=$APP_NAME_GIT_CORS_PROXY oc create route edge --service=$APP_NAME_GIT_CORS_PROXY oc label services/$APP_NAME_GIT_CORS_PROXY app.kubernetes.io/part-of=$APP_PART_OF oc label routes/$APP_NAME_GIT_CORS_PROXY app.kubernetes.io/part-of=$APP_PART_OF oc label deployments/$APP_NAME_GIT_CORS_PROXY app.kubernetes.io/part-of=$APP_PART_OF oc label deployments/$APP_NAME_GIT_CORS_PROXY app.openshift.io/runtime=nodejs
-
Finally, deploy the BAMOE Canvas image, setting the environment variables required to connect it to the Extended Services and Git CORS Proxy backends.
oc new-app quay.io/bamoe/canvas:9.0.1 --name=$APP_NAME_BAMOE_CANVAS \ -e KIE_SANDBOX_EXTENDED_SERVICES_URL=https://$(oc get route $APP_NAME_EXTENDED_SERVICES --output jsonpath={.spec.host}) \ -e KIE_SANDBOX_GIT_CORS_PROXY_URL=https://$(oc get route $APP_NAME_GIT_CORS_PROXY --output jsonpath={.spec.host}) oc create route edge --service=$APP_NAME_BAMOE_CANVAS oc label services/$APP_NAME_BAMOE_CANVAS app.kubernetes.io/part-of=$APP_PART_OF oc label routes/$APP_NAME_BAMOE_CANVAS app.kubernetes.io/part-of=$APP_PART_OF oc label deployments/$APP_NAME_BAMOE_CANVAS app.kubernetes.io/part-of=$APP_PART_OF oc label deployments/$APP_NAME_BAMOE_CANVAS app.openshift.io/runtime=js
Your BAMOE Canvas instance should be up and accessible via the route created in this last step. To get it, run this command:
oc get route $APP_NAME_BAMOE_CANVAS --output jsonpath={.spec.host}
Note
|
All services will be available via https , which means that if you’re deploying them to a local OpenShift instance (i.e. via CRC), the BAMOE Canvas web app, the Extended Services and Git CORS Proxy backends will all be using self-signed certificates, causing warnings in your browser. To fix this, access each URL individually and allow them in your browser.
|
Installing and configuring BAMOE Canvas images manually via Docker
Configuring Extended Services
docker run -p 21345:21345 -it quay.io/bamoe/extended-services:9.0.1
# Add the -d flag to run in detached mode.
Access the API through port 21345, no additional configuration is necessary.
Configuring Git CORS Proxy
docker run -p 8090:8080 -it quay.io/bamoe/git-cors-proxy:9.0.1
# Add the -d flag to run in detached mode.
The API is accessible via port 8090 (8080 is reserved for the bamoe-canvas image), no additional configuration is necessary.
Configuring Canvas
In particular, this image needs to be run with two environment variables that will allow it to communicate with its backend services:
KIE_SANDBOX_EXTENDED_SERVICES_URL
KIE_SANDBOX_GIT_CORS_PROXY_URL
If you’re running locally, following the previous steps, use this command to start you BAMOE Canvas instance with the backend services:
docker run -p 8080:8080 -it \
-e KIE_SANDBOX_EXTENDED_SERVICES_URL=http://localhost:21345 \
-e KIE_SANDBOX_GIT_CORS_PROXY_URL=http://localhost:8090 \
quay.io/bamoe/canvas:9.0.1
# Add the -d flag to run in detached mode.
The HTTP server is accessed via port 8080.
Several customization options are available. Check more configurations available via environment variables here: https://quay.io/repository/bamoe/canvas?tab=info
Note
|
Those addresses need to be accessible from the users' machines, as BAMOE Canvas will communicate with them directly from the user’s browser. Using internal IP/DNS services will not work. Requests are made directly from the user’s browser to both URLs configured above. |
Another very important environment variable to consider when deploying BAMOE Canvas is KIE_SANDBOX_DMN_DEV_DEPLOYMENT_BASE_IMAGE_URL
.
This environment variable points to a container image that is used when creating a Dev deployment for Decisions.
By default, BAMOE Canvas is configured to fetch this image from https://quay.io/repository/kie-tools/dmn-dev-deployment-base-image @ 0.30.4
Important
|
The pre-configured image is NOT part of BAMOE, and comes from the open-source KIE community. People installing BAMOE Canvas must change |
If you’re installing BAMOE Canvas to an air-gapped environment, you’re going to need to configure KIE_SANDBOX_DMN_DEV_DEPLOYMENT_BASE_IMAGE_URL
to point to an image in a registry where the Cloud providers used by BAMOE Canvas users can access.
For example, imagine a user is creating Dev deployments for Decisions on BAMOE Canvas to a local Kubernetes they have installed on their machine, for example Kind or Minikube.
This local Kubernetes instance needs to be able to download the image configured in KIE_SANDBOX_DMN_DEV_DEPLOYMENT_BASE_IMAGE_URL
.
The same is true for remote Kubernetes and OpenShift instances that the users of BAMOE Canvas will configure to create their Dev deployments for Decisions.
For other customization options of BAMOE Canvas, please refer to the image’s description.
Other installation methods
BAMOE Canvas can also be deployed via Docker Compose, check out our tutorial here: Docker Compose.
Securing your Installation
It’s highly recommended to have a secure protocol (HTTPS) available for the BAMOE Canvas installation. To enable that, please follow your Kubernetes distribution documentation on how to enable it.
It’s also recommended for all services that BAMOE Canvas will have access to, like remote git repositories or container orchestration like OpenShift, to have all access tokens have a token expiration policy.