|
| 1 | +[](../LICENSE) |
| 2 | + |
| 3 | +# ORCE |
| 4 | + |
| 5 | +An automated orchestration workspace that deploys an [ORCE](https://github.com/eclipse-xfsc/orchestration-engine) instance to a Kubernetes cluster. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## Table of Contents |
| 10 | +- [🚀 Overview](#-overview) |
| 11 | +- [⚡️ Click-to-Deploy](#%EF%B8%8F-click-to-deploy) |
| 12 | +- [🛠️ How to Use](#%EF%B8%8F-how-to-use) |
| 13 | + - [1. Prepare the environment and prerequisites](#1-prepare-the-environment-and-prerequisites) |
| 14 | + - [1.1. Kubernetes](#11-kubernetes) |
| 15 | + - [1.2. Local ORCE](#12-local-orce) |
| 16 | + - [2. Create your flow](#2-create-your-flow) |
| 17 | + - [3. Name your instance and choose authentication method](#3-name-your-instance-and-choose-authentication-method) |
| 18 | + - [4. Choose deployment type and supply necessary credentials](#4-choose-deployment-type-and-supply-necessary-credentials) |
| 19 | + - [5. Provide your desired domain address and supply TLS credentials](#5-provide-your-desired-domain-address-and-supply-tls-credentials) |
| 20 | + - [6. You can see the destination URL in Information tab](#6-you-can-see-the-destination-url-in-information-tab) |
| 21 | + - [7. Click done and then deploy](#7-click-done-and-then-deploy) |
| 22 | + - [8. Your instance is up!](#8-your-instance-is-up) |
| 23 | +- [⚙️ Configuration](#%EF%B8%8F-configuration) |
| 24 | +- [📁 Directory Contents](#-directory-contents) |
| 25 | +- [📦 Dependencies](#-dependencies) |
| 26 | +- [🔗 Links & References](#-links--references) |
| 27 | +- [License](#license) |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +## 🚀 Overview |
| 32 | + |
| 33 | +ORCE is a streamlined orchestration workspace that provisions and tears down your ORCE runtime on any compliant Kubernetes cluster with zero manual steps. It abstracts away environment setup—simply upload your kubeconfig, TLS credentials, and desired domain address—and then leverages the included deploy.sh and uninstall.sh scripts through a custom Node-RED node to automate resource provisioning, certificate management, and cleanup. A built-in static HTML dashboard surfaces real‐time deployment status, logs, and rollback controls, so you can focus on designing your flows and integrating XFSC modules rather than wrestling with Kubernetes manifests or shell commands. |
| 34 | + |
| 35 | +Whether you need to support different scenarios utilizing XFSC modules, the fastest and easiest way to manage your working environment is to orchestrate and develop complex architectures in no- or low-code. ORCE’s drag-and-drop interface and prebuilt building blocks let you compose, deploy, and iterate on multi-step workflows seamlessly—adapting on the fly to new requirements. By uniting full automation, a graphical interface, and script-driven deployment logic, ORCE accelerates development and simplifies the management of sophisticated orchestration scenarios. |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## ⚡️ Click-to-Deploy |
| 40 | + |
| 41 | +--- |
| 42 | + |
| 43 | +## 🛠️ How to Use |
| 44 | +### 1. Prepare the environment and prerequisites |
| 45 | +You'll need: |
| 46 | +1.1. A Kubernetes cluster to host the child instances |
| 47 | +1.2. A local ORCE as the parent to host the initial developing environment |
| 48 | +### 1.1. Kubernetes |
| 49 | +"Orchestration Engine" node requires a working Kubernetes cluster with ingress installed on it. Initiate a K8s cluster and install nginx-ingress on it using this command. |
| 50 | +```bash |
| 51 | +export KUBECONFIG=`<YOUR KUBECONFIG PATH>` |
| 52 | +kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.12.3/deploy/static/provider/cloud/deploy.yaml |
| 53 | +``` |
| 54 | +You can learn more by reading the [official documentation](https://kubernetes.github.io/ingress-nginx/deploy/). |
| 55 | +After this step, you can proceed to step 1.2 (Installing a local ORCE) |
| 56 | +### 1.2. Local ORCE |
| 57 | +As you can read in [ORCE page](https://github.com/eclipse-xfsc/orchestration-engine), you can install it on your local machine with this command: |
| 58 | +```bash |
| 59 | +docker run -d --name xfsc-orce-instance -p 1880:1880 leanea/xfsc-orce:1.0.8 # ORCE 1.0.8 latest as of June, 2025. |
| 60 | +``` |
| 61 | +After pulling and deploying the image, you can go to [http://localhost:1880](http://localhost:1880) to access your local Orchestration Engine. Now you have to install "Orchestration Engine" node. To do so, you have to click on "New Node" button in the left sidebar as shown here. |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +Then, in the new window upload the node package (`node-red-leanea-orce-2.0.0.tgz` in this repository) and install it. Refresh the page and if everything is done correctly and without errors you can proceed to step2 (creating your flow). |
| 66 | + |
| 67 | +### 2. Create your flow |
| 68 | +Drag and drop inject, Orchestration Engine and a debug node. Connect them like below so Orchestration Engine can be triggered by the inject node. |
| 69 | + |
| 70 | +### 3. Name your instance and choose authentication method |
| 71 | +Double click on the node to open edit dialog. |
| 72 | +Enter your instance name. This name is going to be the suburl of the instance destination. For example, if we name an instance `leanea`, the final url of the instance is going to be `www.example.com/leanea`. |
| 73 | + |
| 74 | +### 4. Choose deployment type and supply necessary credentials |
| 75 | +In this tab you can select deployment type. Docker is not available as of June 12th, 2025. You also have to supply the kubeconfig file of the destination cluster. |
| 76 | + |
| 77 | +### 5. Provide your desired domain address and supply TLS credentials |
| 78 | + |
| 79 | +### 6. You can see the destination URL in Information tab |
| 80 | +After you have entered everything, you can see the final path of the instance as if it's deployed. |
| 81 | + |
| 82 | +### 7. Click done and then deploy |
| 83 | +Click done on top right of the editor and then click on Save&Deploy in top right of the page. |
| 84 | +Then you have to trigger Orchestration Engine via activating the inject node in this scenario. |
| 85 | + |
| 86 | +### 8. Your instance is up! |
| 87 | +After a few seconds of waiting, when the status under the node is changed to "deployed" you can access the instance. |
| 88 | + |
| 89 | + |
| 90 | +- ***Instance Removal:*** Click the trash icon next to your ORCE instance node, then click Deploy in the upper right. You should see your instance (in this case, `xfsc-orce-leanea`) getting terminated in ~1min. As you can see the pods (and other related resources which are not shown in this image) are terminating. |
| 91 | + |
| 92 | + |
| 93 | +--- |
| 94 | + |
| 95 | +## ⚙️ Configuration |
| 96 | + |
| 97 | +Before you deploy, you’ll need to provide: |
| 98 | + |
| 99 | +1. **Kubeconfig** |
| 100 | + Upload your Kubernetes configuration. |
| 101 | + |
| 102 | +2. **TLS Credentials** |
| 103 | + Place your destination cluster’s certificate (`.crt`) and private key (`.key`) in the node UI. |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +## 📁 Directory Contents |
| 108 | +``` |
| 109 | +. |
| 110 | +├── node-red-leanea-orce-2.0.0.tgz |
| 111 | +├── deploy.sh |
| 112 | +├── ORCE.html |
| 113 | +├── ORCE.js |
| 114 | +├── package.json |
| 115 | +└── uninstall.sh |
| 116 | +``` |
| 117 | + |
| 118 | +- **deploy.sh** |
| 119 | + This file is responsible of executing deployment commands. It creates the namespace, serviceaccount, clusterrole, clusterrolebinding, configmap, pods, service, adds TLS secrets and finally installs namespaced ingress. (The ingress shares a single IP with other instances of this kind in an IngressClass called nginx-orce-cluster.) |
| 120 | + |
| 121 | +- **uninstall.sh** |
| 122 | + Safely removes the ORCE instance and cleans up all associated Kubernetes resources. It cleans up everything that `deploy.sh` has created in the process of initiating. |
| 123 | + |
| 124 | +- **package.json** |
| 125 | + Defines ORCE’s Node.js dependencies and versioning. |
| 126 | + |
| 127 | +- **ORCE.js** |
| 128 | + Entry point for ORCE’s orchestration logic—handles installation parameters and rollbacks. The node's back-end. |
| 129 | + |
| 130 | +- **ORCE.html** |
| 131 | + A static dashboard for monitoring ORCE’s deployment status and logs. The node's front-end. |
| 132 | + |
| 133 | +- **node-red-leanea-orce-2.0.0.tgz** |
| 134 | + Latest version of ORCE node. |
| 135 | + |
| 136 | +--- |
| 137 | + |
| 138 | +## 📦 Dependencies |
| 139 | + |
| 140 | +```json |
| 141 | +"node" : ">=14.0.0", |
| 142 | +"node-red": ">=3.0.0", |
| 143 | +"tmp" : "^0.2.1" |
| 144 | +``` |
| 145 | + |
| 146 | +--- |
| 147 | + |
| 148 | +## 🔗 Links & References |
| 149 | + |
| 150 | +- [XFSC ORCE](https://github.com/eclipse-xfsc/orchestration-engine) |
| 151 | + |
| 152 | +--- |
| 153 | + |
| 154 | +## License |
| 155 | + |
| 156 | +This project is licensed under the Apache License 2.0. |
| 157 | +See the [LICENSE](../LICENSE) file for details. |
0 commit comments