Building

The page describes how to build Metacontroller for yourself.

First, check out the code:

# If you're going to build locally, make sure to
# place the repo according to the Go import path:
#   $GOPATH/src/metacontroller.app
cd $GOPATH/src
git clone https://github.com/GoogleCloudPlatform/metacontroller.git metacontroller.app
cd metacontroller.app

Docker Build

The main Dockerfile can be used to build the Metacontroller server without any dependencies on the local build environment except for Docker 17.05+ (for multi-stage support):

src/metacontroller.app$ docker build -t <yourtag> .

Local Build

To build locally, you’ll need Go 1.9+ as well as dep (to download Go dependencies):

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure
go install

Skaffold Build

If you’re working on changes to Metacontroller itself, you can use Skaffold and Kustomize to make iterating more fluid.

First use dep as described in the Local Build section to populate the vendor directory. Rather than running dep ensure on every build, the development version of the Dockerfile expects you to have already run dep ensure locally.

Next make sure your local Docker client is signed in to push to Docker Hub. Then tell Skaffold to push to your own personal image repository:

skaffold config set --global default-repo <your-docker-hub-username>

Now you can build and deploy your latest changes with:

skaffold run

Generated Files

If you make changes to the Metacontroller API types, you may need to update generated files before building:

go get -u k8s.io/code-generator/cmd/{lister,client,informer,deepcopy}-gen
make generated_files