Configuring pre-provisioned infrastructure
Create a Hadean cluster and run an application on existing virtual or physical machines, on-cloud or on-premises.
Starting in release 1.8, Hadean Platform allows clusters to be created on pre-provisioned virtual or physical machines in your cloud, hybrid, or on-premises environment. The Platform CLI will automatically deploy the Hadean software and your application payload in the same way as it would to a managed Azure or AWS cluster, and revert the target machines to their original state at cluster destruction. Unlike managed Azure or AWS clusters, destroying the cluster will not destroy any virtual infrastructure in your cloud environment; Hadean Platform does not distinguish between cloud VMs, on-prem VMs, or physical hardware when deployed to extant infrastructure. Customers are therefore able to deploy applications to any cloud provider or on-premises hardware subject to the system requirements listed in the section below.
Configuration and management of the cluster must take place from a single administrative workstation or VM with the Hadean SDK installed.
If you have followed the steps in the previous section and intend to use Hadean Platform to create and manage your AWS or Azure resources, you can ignore this section and move on to Deploying an application.
A cluster consists of one gateway machine and one or more worker machines that will actually execute your application. Each machine to be delegated to the cluster requires:
- 1.The operating system must be Ubuntu 20.04 LTS (Focal Fossa).
- 2.A user account with password-less
- 3.SSH keys for the above user need to be available on the workstation/VM used to provision and administer the cluster.
- 1.TCP port 22 open between all machines in the cluster as well as the admin workstation.
- 2.TCP port 443 and ports 37620 - 37650 open on the gateway machine to the admin workstation.
- 3.TCP port 443 outbound from the gateway machine to portal.hadean.com
The user account with sudo capability (item 2) can be distinct for each machine if required. It can also be removed or disabled after the cluster has been created.
Hadean Platform needs to know the IP addresses and SSH key(s) of the remote machines. This information is specified in a toml configuration file. An example configuration is listed below.
Note that the "muxer" label can only be applied to the last machine(s) in the list.
# Simple example of a self-managed cluster creation config.
# Copy and amend this file to suit your individual requirements.
# A unique, descriptive name for your cluster.
name = "my-static-cluster"
# Cloud provider is always an empty string for self-managed clusters,
# even if deploying to a Hadean-supported cloud provider.
cloud_provider = ""
# Credentials for all machines specified below. Individual machines can have
# separate credentials set, which will override this option.
user = "clusteruser"
# Specify the path to the SSH private key, permissions 600 required
sshkey_path = "/home/me/id_rsa"
# List of four static, extant machines.
# One (and only one) machine *MUST* be labelled as "gateway" as this denotes the
# machine that will be configured as the gateway. Other machines can be labelled
# according to your preferences (or omitted).
labels = ["gateway"]
ip = "10.26.0.10"
# Second machine
labels = ["worker0"] # Labels applied to this machine (optional)
ip = "10.26.0.11" # IP address
# Third machine
labels = ["worker1"] # Labels applied to this machine (optional)
ip = "10.26.0.12" # IP address
# Fourth machine
# One or more machines should be labelled as "muxer" to determine which host to
# install Connect/Muxer. These need to appear last in the list of machines.
labels = ["muxer"] # Labels applied to this machine (optional)
ip = "10.26.0.13" # IP address
# If one or more machines require distinct credentials, they can be specified here
# and will override those set in [machines.credentials]
user = "special"
sshkey_path = "/home/me/secure/special/id_rsa"
Once you have configured your infrastructure and created your configuration file, the next step is to create the cluster and deploy your application to it. This is covered in the next section.