Advanced Cluster Configurations
Root Orchestrator Environment Variables
In a complex network environment, you might want to reach your Root Orchestrator from a specific IP. You can customize the default IP by exporting the following environment variable before the Root Orchestrator installation command.
# Example configuration for root orchestrator
export SYSTEM_MANAGER_URL=192.158.18.104
oak install rootCluster Orchestrator Environment Variables
You can customize the IP address your cluster orchestrator has to use to reach your Root Orchestrator using the following command before the cluster orchestrator installation:
# Example configuration for the cluster orchestrator
oak config set root_orchestrator_address <IP OF ROOT ORCHESTRATOR>
oak install clusterWatch out!
The Root Orchestrator has to be reachable by the Cluster Orchestrator. When not on the same network, the Root Orchestrator URL has to be a public address!
Choose a Different Installation Version
By default, these scripts will use the latest version of Oakestra from the latest stable release. However, this can be changed by appending a specific Oakestra version for each component.
E.g.
oak install root alpha-v0.4.403 #this installs the alpha-v0.4.403 of oakestra rootWatch out!
Please make sure all the components of your Oakestra installation run on the same version!
Note
Oakestra has many features that have not yet been released. You can check out what’s in the pipeline by taking a look at some of the active branches here.
Compose Overrides
Since Oakestra uses docker-compose to build the components, we can use overrides to fine-tune our build environment.
To use the override files, specify them in a comma-separated list by setting the OVERRIDE_FILES env variable before running the installation scripts.
export OVERRIDE_FILES=override-ipv6-enabled.ymlClick to see an overview of Root Orchestrator overrides
override-no-addons.yml: Disable the addons engine and marketplace.override-no-dashboard.yml: Do not deploy the dashboard.override-no-network.yml: Exclude network components.override-ipv6-enabled.yml: Enable IPv6 for container deployments.override-no-observe.yml: Disable the observability stack.
Click to see an overview of Cluster Orchestrator overrides
override-ipv6-enabled.yml: Enable IPv6 for container deployments.override-no-observe.yml: Disable the observability stack.override-mosquitto-auth.yml: Enable MQTT Authentication.override-no-network.yml: Exclude network components.override-no-observe.yml: Disable the observability stack.
Advanced Network Configuration
If you run into a restricted network (e.g., on a cloud VM), you need to configure the firewall rules accordingly.
Root:
- External APIs: port 10000
- Cluster APIs: ports 10099, 10000
Cluster:
- Worker’s Broker: port 10003
- Worker’s APIs: port 10100
Worker:
- P2P tunnel towards other workers: port 50103
Additionally, the NetManager component, responsible for the worker nodes’ P2P tunnel, must be configured. Therefore, follow these steps on every Worker Node:
- Shutdown your worker node components using
sudo worker stop- Edit the NetManager configuration file
/etc/netmanager/netcfg.jsonas follows:
{
"NodePublicAddress": "<IP ADDRESS OF THIS DEVICE, must be reachable from the other workers>",
"NodePublicPort": "<TUNNEL PORT, The PORT must be reachable from the other workers, use 50103 as default>",
"ClusterUrl": "0.0.0.0",
"ClusterMqttPort": "10003",
"Debug": False
}N.b. leave ClusterUrl to 0.0.0.0, this field is populated using the NodeEngine data.
- If necessary, you can customize the NodeEngine cluster configuration
use oak worker config cluster command to configure a custom cluster URL.
Usage:
oak worker config cluster [url] [flags]
Flags:
-p, --clusterPort int Custom port of the cluster orchestrator (default 10100)
-s, --clusterSSL Perform cluster orchestrator handshake over HTTPSExample:
oak worker config cluster 192.168.10.1- Restart the NodeEngine
oak worker -d