# Cluster Launcher

## **Deploy a Kubernetes cluster**

In order to deploy all the different services and provide a high availability environment to operate your node, Kubernetes is the preferred scheduling platform. Any production-grade Kubernetes cluster can be used to run and deploy a THORNode. You need your Kubernetes provider to offer external load balancers services type features. Azure, Digital Ocean, GCE, OpenStack are compatible with external load balancers.

{% hint style="info" %}
Terraform is a type of domain-specific language (DSL) used to describe code infrastructure. It is designed to make it easier to create/destroy infrastructure hosted locally or by a provider.
{% endhint %}

This Terraform deployment will deploy a Kubernetes cluster using your VPS provider credentials and EKS service. The cluster will have autoscaling capabilities, which means you don’t have to deal with how many nodes you need to deploy to run your THORNode services.

All the default configurations used in these instructions are for a production environment with enough resources to run your THORNode in good conditions.

{% hint style="warning" %}
**LINUX/MAC is the preferred method of setup.**

Windows should choose either:

1. Deploy a THORNode from a Linux VPS.
2. Use Windows Subsystem for Linux - <https://docs.microsoft.com/en-us/windows/wsl/about>
   {% endhint %}

## Steps

There are three important steps to getting your node set up, deployed and churned in.

1. [Setting up Cluster](https://docs.thorchain.org/thornodes/kubernetes/setup-aws)
2. [Deploying THORNode Services](https://docs.thorchain.org/thornodes/deploying)
3. [Joining ("Churning In")](https://docs.thorchain.org/thornodes/joining)

### Repository Management

Your repository can be organised as follows:

```
./thornode-ops
  |./cluster-launcher
  |./node-launcher
```

All of your set up commands are run in `cluster-launcher` and all of your deploying/joining/managing/leaving commands are run from `node-launcher`

### Running Two or More Nodes

{% hint style="danger" %}
To prevent a catastrophic mistake in handling multiple nodes, set them up on different machines, or use different user profiles on your machine, or in the least, use different repos:
{% endhint %}

```
./thornode-ops
  |./cluster-launcher
  |./node-launcher
./thornode-ops2
  |./cluster-launcher
  |./node-launcher
```

All of your commands can now be run separately. See [Multi Validator Cluster](https://gitlab.com/thorchain/devops/node-launcher/-/blob/master/docs/Multi-Validator-Cluster.md?ref_type=heads) docs for more information.

{% hint style="warning" %}
It is heavily advised to not set up nodes on the same provider. Deploy 1 node on Azure, 1 node on Digital Ocean etc.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.thorchain.org/thornodes/kubernetes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
