minimesos 0.11.1 – Docker on Mac and improved default resources

Today we released minimesos 0.11.1. In this version we made a couple of improvements. Docker on Mac is now supported, the default resources of a new minimesos cluster are increased and the Marathon command is now configurable. You can install the new version using the usual installer command: curl -sSL https://minimesos.org/install | sh. The Docker images are available on Docker Hub and the [...]
;

Kubernetes Quick Tip: Whitelisting source IP with Ingress in Kubertenes

If you are using Ingress on your Kubernetes cluster it is possible to restrict access to your application based on dedicated IP addresses. One possible use case would be that you have a development setup and don't want to make all the fancy new features available to everyone, especially competitors. In such cases, IP whitelisting to restrict access can be used .This can be done with specifying [...]
;

Surprise at Golang Thread Scheduling

A few days ago I had a problem with high CPU usage in one of my Go-based microservices. The microservice has evolved into two distinct components: a HTTP web-app and a batch processing service. At some point, we'll probably split these out. But in its current guise, we were seeing HTTP request latencies of greater than ten seconds. It turns out that the reason is due to the Go scheduler not [...]
;

RAFT Explained – Part 3/3: Safety and Liveness Guarantees, Conclusion

This series of three blog posts will give readers an overview on why the Raft consensus algorithm is relevant and summarizes the functionality that makes it work. The 3 posts are divided as follows: Part 1/3: Introduction to the problem of consensus, why it matters (even to non-PhDs), how the specification of the Raft algorithm is an important contribution to the field and a peek at the [...]
;

RAFT Explained – Part 2/3: Overview of the Core Protocol

This series of three blog posts will give readers an overview on why the Raft consensus algorithm is relevant and summarizes the functionality that makes it work. The 3 posts are divided as follows: Part 1/3: Introduction to the problem of consensus, why it matters (even to non-PhDs), how the specification of the Raft algorithm is an important contribution to the field and a peek at the [...]
;

RAFT Explained – Part 1/3: Introduction to the Consensus Problem

This series of three blog posts will give readers an overview on why the Raft consensus algorithm is relevant and summarizes the functionality that makes it work. The 3 posts are divided as follows: Part 1/3: Introduction to the problem of consensus, why it matters (even to non-PhDs), how the specification of the Raft algorithm is an important contribution to the field and a peek at the [...]

Zoover Goes Cloud Native with Kubernetes

We teamed up with Zoover to help them build a new production environment using Google’s hosted version of Kubernetes (GKE), with a Continuous Delivery pipeline based around CircleCI. In this blog, we’ll describe the system we built and explain the decisions we took. We’ll also have a look at workflow we settled on. GKE We picked GKE because it has all the features we need. It is easy [...]

My Top 7 favourite features of Spring Boot

I've always said that Spring, Maven, and IntelliJ are my weapons of choice. People's response on more than one occasion has been that I'm far too old fashioned and conservative. I don't care, they might be right, but to de-risk any project it's always a good idea to not bring on more than 10% new technology: Stick to what you know and only experiment with one or two new components. Two years [...]

Multi-arch Docker Images

Although the promise of Docker is the elimination of differences when moving software between environments, you'll still face the problem that you can't cross platform boundaries, i.e. you can't run a Docker image built for x86_64 on a arm board such as the Raspberry Pi. This means that if you want to support multiple architectures, you typically end up tagging images with their arch (e.g. [...]

Running a Secure Registry on Kubernetes

Once your shiny new Kubernetes cluster is up-and-running, one of the first things you'll want to add is a local registry for storing private images. This is typically achieved using the official Kubernetes registry addon. Unfortunately, the official addon has a few shortcomings, especially with regards to security. In this post, I'll describe these shortcomings, how they can be addressed, and [...]

Adding Self-signed Registry Certs to Docker & Docker for Mac

The Docker registry image has over 10 million pulls on Docker Hub, so it's safe to say that a lot of people out there are making use of it. When running a registry, it's essential to make sure your clients can access it easily and securely. If your registry isn't running on a public domain, you're probably using a self-signed certificate for this purpose. This post will look into some of the [...]
;

An Introduction to stream processing systems: Kafka, AWS Kinesis and Azure Event Hubs

Stream Processing Systems are one of the most powerful tools you can include in a microservice infrastructure, but from conversations I have had, many developers adopting microservices have not really tackled the subject.  This was no fault of the developers, but more a result of documentation that was platform specific and differing terminologies for underlying concepts that are very [...]

The .NET experience with microservices (.NET Core/Docker/Kubernetes/WeaveNet/Azure)

The .NET experience with microservices (.NET Core/Docker/Kubernetes/WeaveNet/Azure) A few of our recent posts featured WeaveWorks’ Sock Shop demo application - an educational project that demonstrates how to build a complex microservice application that not only looks good, but also does something useful. The educational value of the application lies in its architecture. It is unusual to [...]

Continuous Integration of deployment of micro-services to different platforms

In this blog post, I describe how we created DeployDocs to improve the continuous integration of the micro-services in the Socks Shop and the platforms it can be deployed to. Background Weave's Socks Shop is a reference micro-service application, to which Container Solutions has contributed quite a bit. The shop can be deployed on a number of platforms, including your local machine via [...]

Running Kontena in the Google Cloud

In this blog post we'll set up Kontena on top of CoreOS on GCE. In the previous blog, I described Kontena's architecture. Register an account We'll use the authentication service hosted by kontena. To register an account, we need to install the command line interface. It's packaged at the moment as a ruby gem, so make sure that ruby is installed. I personally use this trick to install gems [...]