Matt Butcher's Blog, page 3
April 7, 2017
GoUtils joins Masterminds
I am happy to announce that GoUtils is now part of the Masterminds project on GitHub.
GoUtils implements many of the string utility functions found in Java's Apache Commons. Alex, the lead developer on GoUtils, created the library in 2014. Other Masterminds libraries, notably Sprig have long relied upon GoUtils, so we are thrilled to have it as part of the project.
Masterminds is home to several highly successful projects, including Glide, the Go dependency manager, the HTML5-PHP parser,...
April 4, 2017
If Kubernetes Is Your Home, Helm Is Your Ikea
Kubernetes provides a home for all your containerized applications. But how do you get that home furnished with the likes of databases and web apps? That's where Helm comes in. If Kubernetes is your home, Helm is where you get your furniture.

Kubernetes takes a cluster of machines (bare metal or VMs) and overlays a sophisticated container management system. Following the principles of declarative infrastructure, Kubernetes provides dozens of kinds of res...
April 3, 2017
3 GitHub Commandline Tools
Sometimes it's nice to work with GitHub from the command line. This post covers three tools for working with GitHub: hub, ghi, and github-release.
Most of the time, when we work with GitHub, we use the main git client. This is great for working with source code, but what about interacting with other aspects of GitHub, like the issue queue, pull requests, or releases? There are a few tools for making this easier. I've picked the ones that are my favorites.
The General Tool: hubThe hub...
Command Line Searching with grep, find, and ag
There are lots of tools for searching files on the UNIX (macOS, Linux) command line. Which one do you use? Let's look at grep, find, and ag to understand which tool is the best for a particular search job.
Three Search ToolsThere are three tools we'll look at here:
grep: This tool is for using a regular expression to search the content of one or more files. find: This is a tool for searching directory trees to find files that match certain criteria. ag: Called The Silver Searcher (a...March 23, 2017
How Helm Uses ConfigMaps to Store Data
Helm, the package manager for Kubernetes, uses first-class Kubernetes objects to store its data. Here's how we use ConfigMaps to track Helm releases.
Helm follows the formula "Chart + Values = Release". You start with a Helm chart (a software package), you add your own configuration values, and you install it into your cluster. That makes a release.
On the command line, we do this with the following command:
$ helm install -f config.yaml stable/wordpress NAME: amber-gopher LAST...March 21, 2017
Creating a Helm Plugin in 3 Steps
Helm is the package manager for Kubernetes. We recently added a plugin architecture to Helm that makes it easy for you to write new features in any programming language you choose.
In this post, we'll create a simple Helm plugin in three steps:
make a directory create a plugin.yaml file write a simple plugin in shell script Step 1: Create a DirectoryThe first step in creating a plugin is to create a new directory to hold your plugin:
$ cd $(helm home)/plugins $ mkdir hello $ cd hello ...March 19, 2017
The Story of Helm
A while back, the official Deis blog posted The Story of Helm to celebrate Helm's birthday.
Back then, I wrote:
On October 15th, 2015, the project now known as Helm was born. Only one year in, Kubernetes Helm is part of the CNCF, and is marching toward the v2.0.0 release. And in every sense of the word, it is now a community-driven project. But the circumstances behind the creation of Helm read like a script for a Silicon Valley tech comedy.
It's only been a few months, and:
The 2....March 18, 2017
Dockerizing Ruby To Stay Sane
Troubled by my long blogging access? This article explains why.
For a non-rubyist, the hardest part about Ruby (particularly on a Mac) is getting it installed correctly. After a frustrating Middleman breakage, I decided to take a new approach: Dockerize Ruby apps and stop trying to manage a local Ruby install.
So far, it's working well.
The ConundrumIn my experience, Ruby toolchains on Mac seem to break frequently. The version of Ruby that ships with macOS is woefully out of date. Instal...
October 14, 2016
Kubernetes 1.4 AMA Video
Earlier this week I had the opportunity to participate on a CoreOS-hosted "Ask Me Anything" panel. The topic of the panel was the release of Kubernetes 1.4, and the state of the surrounding ecosystem.
I'm a huge fan of Tim Hockin, who has done a ton of the (often thankless) behind-the-scenes work on Kubernetes. It was a pleasure to get a chance to participate on the panel with him, and hear him articulate his perspective on the progress Kubernetes has made.
It was also fun to he...