Unlock the power of choice with CloudPlex and DigitalOcean Get CloudPlex free for 3 months, and Digital Ocean for 1 month

Kubernetes Cluster Bootstrapping

Pain Point

A complete Kubernetes infrastructure setup needs proper DNS, load balancing, security, and K8s role-based access control (RBAC), with a slew of additional components that make up the deployment process

Deploying your own Kubernetes cluster from scratch is often difficult for the developer and requires a deeper understanding of K8s for successful cluster creation. Provider-managed Kubernetes clusters often have restrictions, such as the user is not allowed to use their custom machine images or have ssh access to machines, hence they are not able to configure certain parts of the cluster. Launching a Kubernetes cluster from scratch is a slow process on certain cloud providers.

Even if using an automation tool like Terraform to deploy a Kubernetes cluster from scratch, it still requires multiple steps and a lot of manual configuration.

The following steps are required to deploy a Kubernetes cluster from scratch.

Step 1: Deploy an infrastructure node using Terraform

Sample terraform script snippet

----
# Setup our aws provider
provider "aws" {
  access_key  = "${var.aws_access_key_id}"
  secret_key  = "${var.aws_secret_access_key}"
  region      = "${var.vpc_region}"
}

# SSH key pair for accessing ec2 machine
resource "aws_key_pair" "sshKeyPair" {
  key_name   = "${var.aws_key_name}"
  public_key = "${var.public_ssh_key}"
}

# instances
resource "aws_instance" "ec2Instances" {
  count = 1
  ami = "${var.inst_ami}"
  availability_zone = "${lookup(var.availability_zone, var.vpc_region)}"
  instance_type = "${var.inst_type}"
  key_name = "${aws_key_pair.sshKeyPair.key_name}"
  subnet_id = "${var.vpc_public_sn_id}"
  associate_public_ip_address = true
  source_dest_check = false

  security_groups = [
    "${var.vpc_public_sg_id}"]

  tags = {
    Name = "ec2Instances${count.index}"
  }
}

output "ec2_ins_0_ip" {
  value = "${aws_instance.ec2Instances.0.public_ip}"
}
----

Requires a different tool to automate Kubernetes deployment on any public cloud (like kubeadm, kops)

Step 2: Use kubeadm to deploy Kubernetes cluster

Configurations Guide to setup with kubeadm:

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

Sample snippets of Master Config

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: 
  bindPort: 
etcd:
  endpoints:
  - 
  - 
  caFile: 
  certFile: 
  keyFile: 
networking:
  dnsDomain: 
  serviceSubnet: 
  podSubnet: 
kubernetesVersion: 
cloudProvider: 
authorizationModes:
- 
- 
token: 
tokenTTL: 

Developers need to run a different script on all the workers’ nodes to join them with the Kubernetes master. This setup is tedious and time-consuming.

How CloudPlex addresses your pain

CloudPlex provides the flexibility of running your own cluster without the limitations of managed services (GKE, AKS, EKS). Developers can start a new Kubernetes cluster from scratch with a rich set of K8s and infrastructure configuration options. They can use a custom machine image and ssh into machines to install additional configurations. The end to end process of Kubernetes cluster creation is faster than cloud managed offerings. CloudPlex also allows the developer to use the provider-managed Kubernetes clusters (GKE, AKS, EKS) to deploy their applications.

Node Configurations

CloudPlex provides the option to automatically configure nodes without developer intervention or the developer can configure the node visually, as shown in the following screenshot:

node-configurations

Kubernetes Configuration

CloudPlex greatly simplifies the configuration and deployment of a Kubernetes cluster by requiring minimal inputs from the developer, and by providing a visual interface.

kubernetes-configuration