Getting started with Cloud Native Go.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Refactorings. Initial draft for Book API. Jan 17, 2017
api Finalized Books API. Jan 17, 2017
.gitignore Added Git ignores. Jun 25, 2017
Dockerfile
LICENSE Added basic README and LICENSE files. Nov 16, 2016
Makefile Updated Docker image version. Dec 22, 2016
README.adoc
k8s-deployment.yml Updated Docker image version. Dec 22, 2016
marathon.sh Removed EOF from output. Nov 25, 2016
microservice.go
wercker.yml Updated Docker base image. Jun 25, 2017

README.adoc

Wercker Status MIT License

Cloud Native Go Showcase

This is actually my first time I wrote something using the Go language. So I tried writing a small microservice with a super simple hello API. The next iteration will use the Go Kit or Go Micro for more sophisticated integration features.

Prerequisites

In order to build and run this showcase you need to have a couple of things installed:

  • The Go SDK (using Brew)

  • The Docker Toolbox or native Docker, whatever you prefer

  • The Make tool (optional)

  • The Wercker CLI (optional)

Building the showcase

In case you have make installed you can simply issue the following command to build and install the application:

$ make install

In case you want to give Wercker a try (make sure you have the Wercker CLI installed) you can issue the following command:

$ wercker dev --publish 8080

This will build and run the microservice, and also watch for changes to the sources. If you only want to run the Wercker build pipeline use the following command:

$ wercker build

Running the showcase

You have two options. Either build and run the showcase locally, or build and run the Docker image.

$ make docker
$ docker run --name cloud-native-go -it -p 18080:8080 cloud-native-go:1.1.0

Now open a browser or use somethin like curl or HTTPie and issue a GET request on the URL http://192.168.99.100:18080/api/hello

Deploying to Kubernetes

We will be using Minikube to run a small Kubernetes cluster locally. Make sure you have build the Docker image locally.

$ kubectl create -f k8s-deployment.yml
$ kubectl get deployments pods
$ kubectl scale deployment cloud-native-go --replicas=3
$ kubectl get pods
$ kubectl get services

If you want to access the Go microservice you need to use the node port displayed by the last command, e.g. http GET 192.168.99.100:32278/api/hello

Maintainer

M.-Leander Reimer (@lreimer)

License

This software is provided under the MIT open source license, read the LICENSE file for details.