We will be utilizing 6 Virtual Machines for this build.
### Kubernetes Servers: (3 Total)
| Specs | Description |
| ----------- | ----------- |
| CPU | 4 Cores |
| RAM | 8GB |
| Disk Space | 32GB |
### Kubernetes Workers: (3 Total)
| Specs | Description |
| ----------- | ----------- |
| CPU | 4 Cores |
| RAM | 8GB |
| Disk Space | 32GB |
| Additional Disk | 250GB |
# Update Ubuntu
Run the following command to make sure your Ubuntu installation is up to date.
```bash
sudo apt-get update && apt-get upgrade -y
```
# Kubernetes Installation
Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Google originally designed Kubernetes, but the Cloud Native Computing Foundation now maintains the project.

## Install Kubernetes
Repleace the following variables
* {LOADBALANCER} = This is generally the IP address to your load balancer
* {USERNAME} = MySQL or MariaDB Username
* {PASSWORD} = MySQL or MariaDB Password
* {IP} = IP or hostname of your database server
* {PORT} = MySQL and MariaDB use 3306
* {DATABASE} = Database name
This command will spin up a kubernetes server that does not allow deployments. We will utilize worker nodes for that.
curl -sfL https://get.k3s.io | K3S_URL=https://{LOADBALANCER}:6443 K3S_TOKEN={TOKEN} sh -
```
# Rancher Installation
Rancher, the open-source multi-cluster orchestration platform, lets operations teams deploy, manage and secure enterprise Kubernetes.

## Setup kubectl
The Kubernetes command-line tool, kubectl, allows you to run commands against Kubernetes clusters.
[https://kubernetes.io/](https://kubernetes.io/)
Kubectl is meant to run on your personal machines to manage kubernetes clusters. You can run this using WSL + Ubuntu or use the link above to configure kubectl for your environment.
Replease ***{HOSTNAME}*** with the URL you intend to use to access launcher. Depending on your setup you may need to add a line to your host file that points this domain to your load balancer.
```bash
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname={HOSTNAME}
```
## Rollout Status
```bash
kubectl -n cattle-system rollout status deploy/rancher
```
## Rancher temporary password
```bash
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{.data.bootstrapPassword|base64decode}}{{ "\n" }}'