Setup - Digital Ocean

Setting up a Kubernetes Cluster with Digital Ocean (DO)

Deploy a Kubernetes cluster in DO using EKS service.

Requirements

  1. DO account

  2. doctl and DO credentials configured

  3. kubectl

Steps

Firstly, clone and enter the cluster-launcher repository. All commands in this section are to be run inside this repo.

git clone https://gitlab.com/mayachain/devops/cluster-launcher
cd cluster-launcher

Then install the terraform CLI:

Install Terraform:

brew install terraform

DOCLI

The Digital Ocean Control tool allows you to manage your DO services.

Use the package manager homebrew to install the DO CTL.

brew install doctl
doctl auth init --context <NAME>
doctl auth switch --context <NAME>
doctl account get

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

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:

Kubernetes Availability (note, use lower-case in the terminal)

Final success message: Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

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 MAYANode.

Last updated

Was this helpful?