Documentation for version v0.7.1 is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the latest version.

Build from source

Prerequisites

Download

Install with go:

go get github.com/heptio/ark

The files are installed in $GOPATH/src/github.com/heptio/ark.

Build

You can build your Ark image locally on the machine where you run your cluster, or you can push it to a private registry. This section covers both workflows.

Set the $REGISTRY environment variable (used in the Makefile) to push the Heptio Ark images to your own registry. This allows any node in your cluster to pull your locally built image.

In the Ark root directory, to build your container with the tag $REGISTRY/ark:$VERSION, run:

make container

To push your image to a registry, use make push.

Update generated files

The following files are automatically generated from the source code:

If you make any of the following changes, you must run make update to regenerate the files:

If you make the following change, you must run generate-proto.sh to regenerate files:

Cross compiling

By default, make builds an ark binary that runs on your host operating system and architecture. To build for another platform, run make build-<GOOS>-<GOARCH. For example, to build for the Mac, run make build-darwin-amd64. All binaries are placed in _output/bin/<GOOS>/<GOARCH>– for example, _output/bin/darwin/amd64/ark.

Ark’s Makefile has a convenience target, all-build, that builds the following platforms:

3. Test

To run unit tests, use make test. You can also run make verify to ensure that all generated files (clientset, listers, shared informers, docs) are up to date.

4. Run

When running Heptio Ark, you will need to account for the following (all of which are handled in the /examples manifests):

See Cloud Provider Specifics for more details.

Specifying your image

When your Ark deployment is up and running, you must replace the Heptio-provided Ark image with the image that you built. Run:

kubectl set image deployment/ark ark=$REGISTRY/ark:$VERSION

where $REGISTRY and $VERSION are the values that you built with.

5. Vendoring dependencies

If you need to add or update the vendored dependencies, see Vendoring dependencies.