Setup - Digital Ocean
Setting up a Kubernetes Cluster with Digital Ocean (DO)
Deploy a Kubernetes cluster in DO using DOKS service.
Requirements
- DO account
doctl
and DO credentials configuredkubectl
homebrew
Preferred Setup: LINUX/MAC
Windows users: Choose either:
- Deploy from a Linux VPS.
- Use Windows Subsystem for Linux - Learn more
Steps
Clone Repository
First, clone and enter the cluster-launcher repository. Run all commands within this repo.
git clone https://github.com/LastL2/cluster-launcher
cd cluster-launcher
Install Terraform
Install the Terraform CLI:
Install Terraform:
brew install terraform
DOCTL
The Digital Ocean Control tool allows you to manage your DO services.
Use the package manager homebrew to install the doctl
.
brew install doctl
doctl auth init --context ((NAME))
doctl auth switch --context ((NAME))
doctl account get
You will be asked for a Personal Access Token with read/write privileges (retrieve from the API Panel in the Digital Ocean web console).
API -> Tokens/Keys -> Create Token.
Make sure you handle your secrets securely! You will need this token twice more for setup and if you navigate away from the API web console it will not be displayed again.
Kubernetes Control Tool
You must install and configure the Kubernetes CLI tool (kubectl). To install kubectl, follow these instructions, or choose a package manager based on your operating system.
Use the package manager homebrew to install kubectl.
brew install kubernetes-cli
DO Droplet Limit
You will need to increase your Droplet Limit if you get an error like this:
Error: Error creating Kubernetes cluster: POST https://api.digitalocean.com/v2/kubernetes/clusters: 422 (request "8b639077-b8d3-4913-b3ec-8e70283dea49") validation error: worker_node_pool_specs[0].invalid droplet size
On the Digital Ocean web console (Settings > Team > Droplet Limit) you will be able to request the Droplet Limit
be increased. 10 Droplets is the default limit, request 25 to begin with.
Check the versions of kubectl
that are supported by DO
doctl kubernetes options versions
Make sure that you have installed a version of kubectl
that is supported by DO.
wget && jq
You also need wget and jq, follow these instructions, or choose a package manager based on your operating system.
Use the package manager homebrew to install wget and jq Note: You most likely have these installed already.
brew install wget
brew install jq
Deploy Kubernetes Cluster
Use the commands below to deploy a DOKS cluster:
make do
During the deploy, you will be asked to enter information about your cluster:
var.location
The location where the Managed Kubernetes Cluster should be created
Enter a value: nyc1
var.name
The base name used for all resources
Enter a value: tc-k8s
- Location — Digital Ocean Regions (use lower-case)
- Name
- Confirm
yes
Deploying a cluster takes ~10 minutes
CONFIGURE
Now that you’ve provisioned your DOKS cluster, you need to configure kubectl. Customize the following command with your cluster name and region.
doctl kubernetes cluster kubeconfig save <use_your_cluster_name>
kubectl version
If successful, you will see:
Notice: Adding cluster credentials to kubeconfig file found in "/home/user/.kube/config"
Notice: Setting current-context to do-<region_name>-<cluster_name>
Test this configuration:
kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.6", GitCommit:"dff82dc0de47299ab66c83c626e08b245ab19037", GitTreeState:"clean", BuildDate:"2020-07-16T06:30:04Z", GoVersion:"go1.14.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.6", GitCommit:"dff82dc0de47299ab66c83c626e08b245ab19037", GitTreeState:"clean", BuildDate:"2020-07-15T16:51:04Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
To verify, run this, and check the status is “Ready”:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
<cluster_name>-pool-5xhc1 READY <none> 6m v1.18.6
You are now ready to deploy a LastNode.