Back to Go

It’s been a while since I played around with Go, but I have decided that I have the need for a command line tool, and thought that Go would be the best tool for the job. It’s going to be a command line tool for interfacing and managing a GitHub Enterprise instance.

As a developer, I became fond of using TDD for development. I have previously done this in Java, having spent so many years developing in Java. I was comfortable with Java, but it’s not really suitable for creating a command line tool. I’m always for developing new skills and having moved to DevOps for the past 2 years, I’m still keen to keep my software engineering skills sharp.

Go has many useful libraries that can really help with the development of a professional feeling command line application, and will help to cut down a lot of the boilerplate development. I have found the following libraries that I will be investigating for this project.

Cobra

A highly configurable command line parsing library that allows me to configure the commands that I want my tool to have.

Viper

Pairs nicely with Cobra and allow for configuration through a config file to specify defaults or custom values to configure your tool.

Go-Octokit

A wrapper for the GitHub API which will allow me to make calls and handle the responses from the GitHub instance.

Others

I am still investigating libraries for Testing and Logging.  There are many options, but I need to check out more of these to find out the ones that work for me.

I will post progress and any details that I find interesting… stay tuned

Configuring a Kubernetes Cluster

So I am having another look at Kubernetes.  I used it a few years ago but switched to using Docker Swarm.  I like Docker Swarm;  I like the simplicity, I like the familiarity.  But the industry is predominantly using Kubernetes, and a lot has changed since I last used it.  I am going to document here how I go about re-familiarising myself with Kubernetes.

I am using an Apple MacBook Pro todo the majority of the work and as my development machine.  It is quite easy to get Kubernetes running on a Mac by installing minikube and kubectl. Ensure that Docker is installed. I installed it from the Docker web site here. This is very simple with Homebrew. Just run the following commands:

brew install kubectl
brew cask install minikube

You will also need to install a virtualisation technology to use this. VirtualBox is probably the easiest to install. Follow instructions on their site here. Once everything was installed, I validated that all is installed fine with the following commands:

kubectl version --output=yaml
minikube version

Then, to start a local Kubernetes cluster, run the following command:

minikube start --vm-driver=virtualbox

running minikube status responds with:

minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100

From this, I know that everything is up and running as expected.

I can now launch the dashboard using minikube dashboard. This will launch the dashboard in your default browser.