Skip to content

Commit 1d3b587

Browse files
authored
Add files via upload
Signed-off-by: Hossein Rafieekhah <64724827+rafieekhah@users.noreply.github.com>
1 parent 94a339e commit 1d3b587

16 files changed

Lines changed: 906 additions & 0 deletions
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](../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+
![new button](./docImages/photo_2025-06-12_23-05-42.jpg?raw=true)
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+
![upload node](./docImages/stepnew.png?raw=true)
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+
![step one (flow)](./docImages/photo_2_2025-06-12_15-30-18.jpg?raw=true)
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+
![step two (instance tab)](./docImages/photo_7_2025-06-12_15-30-18.jpg?raw=true)
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+
![step three (deployment type)](./docImages/photo_5_2025-06-12_15-30-18.jpg?raw=true)
77+
### 5. Provide your desired domain address and supply TLS credentials
78+
![step four (domain)](./docImages/photo_8_2025-06-12_15-30-18.jpg?raw=true)
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+
![step five (information)](./docImages/photo_1_2025-06-12_15-30-18.jpg?raw=true)
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+
![step six (deploy)](./docImages/photo_4_2025-06-12_15-30-18.jpg?raw=true)
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+
![step seven (instance is up)](./docImages/photo_3_2025-06-12_15-30-18.jpg?raw=true)
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+
![instance termination](./docImages/photo_2025-06-12_23-26-10.jpg?raw=true)
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

Comments
 (0)