Simple Development Environment with Vagrant and MicroK8S

Posted on July 14, 2020

The key to success in any application development lifecycle is to have as few discrepancies as possible between environments. Luckily, Kubernetes and Docker give you the necessary tools to achieve environment uniformization. Nonetheless, it was always challenging to create development environments that would work on any operating system, be it Linux, Windows, or macOS. This short article will guide you through all the necessary steps to create your own development environment with Vagrant and MicroK8S on your laptop or PC.

The Stack

The reason for choosing these 3 tools is that they are very easy to use. Additionally, Vagrant provides a reproducible environment that is versioned using git—thus, everyone is welcome to bring their own contributions.

Now, to install VirtualBox and Vagrant, you can use the following links:

Getting Started with Your Development Evnironment

To make things easier, we have already created a Vagrant project you can fork and modify according to your needs. Next, run the following command to download it:

$ https://github.com/cloud-hero/vagrant-microk8s

Further, after cloning the repository, you only need to run the following commands:

$ cd vagrant-microk8s
$ vagrant up

After the virtual machine has finished booting, run:

$ vagrant ssh

This should log you into the machine. Then, you can carry out the rest of the tasks to build your own development environment based on Kubernetes. To check that everything is OK, run:

$ kubectl get ns

The output should look similar to this:

NAME              STATUS   AGE
default           Active   109s
kube-node-lease   Active   110s
kube-public       Active   110s
kube-system       Active   110s

The Vagrantfile

Without delay, I would like to explain what the Vagrantfile does.

Vagrant.configure("2") do |config|
  config.vm.provider "virtualbox" do |v|
    v.memory = 4096
    v.cpus = 1
    v.name = 'vagrant-microk8s'
  end
  config.vm.network "private_network", ip: "192.168.50.4"
  config.vm.box = "generic/ubuntu2004"
  config.vm.provision "file", source: "#{File.dirname(__FILE__)}/.bash_aliases", destination: "~/.bash_aliases"
  config.vm.provision :shell, path: "#{File.dirname(__FILE__)}/bin/bootstrap.sh"
  config.ssh.username = "vagrant"
  config.ssh.password = "vagrant"
end

This creates a virtual machine, which will appear as vagrant-microk8s in VirtualBox. It has 4GB of RAM and 1 CPU core (customizable if you fork the repository). It’s based on Ubuntu 20.04 and it uses a private network with an IP address of 192.168.50.4. Therefore, you can reach it directly from your laptop or PC without requiring port forwarding. Moreover, this part is configurable if you fork the repository.

Now, the last things are copying the bootstrap shell script which installs microk8s and a bunch of aliases. By doing this, you won’t have to prefix your kubectl and docker commands with microk8s. Finally, the username and password for ssh-ing are configured to vagrant/ vagrant.

This is all for now in the area of building a development environment using Vagrant and MicroK8S. We hope that our article will help you in the process of running Kubernetes on any machine—easier and reproducible.

Keep Reading

Take Advantage of the Cloud

Schedule a Call