minikube/docs/contributors/build_guide.md

3.1 KiB

Build Guide

Build Requirements

  • A recent Go distribution (>=1.12)
  • If you're not on Linux, you'll need a Docker installation
  • minikube requires at least 4GB of RAM to compile, which can be problematic when using docker-machine

Prerequisites for different GNU/Linux distributions

Fedora

On Fedora you need to install glibc-static

$ sudo dnf install -y glibc-static

Building from Source

Clone and build minikube:

$ git clone https://github.com/kubernetes/minikube.git
$ cd minikube
$ make

Note: Make sure that you uninstall any previous versions of minikube before building from the source.

Building from Source in Docker (using Debian stretch image with golang)

Clone minikube:

$ git clone https://github.com/kubernetes/minikube.git

Build (cross compile for linux / OS X and Windows) using make:

$ cd minikube
$ MINIKUBE_BUILD_IN_DOCKER=y make cross

Check "out" directory:

$ ls out/
minikube-darwin-amd64  minikube-linux-amd64  minikube-windows-amd64.exe

You can also build platform specific executables like below: 1. make windows will build the binary for Windows platform 2. make linux will build the binary for Linux platform 3. make darwin will build the binary for Darwin/Mac platform

Run Instructions

Start the cluster using your built minikube with:

$ ./out/minikube start

Running Tests

Unit Tests

Unit tests are run on Travis before code is merged. To run as part of a development cycle:

make test

Integration Tests

Integration tests are currently run manually. To run them, build the binary and run the tests:

make integration

You may find it useful to set various options to test only a particular test against a non-default driver. For instance:

 env TEST_ARGS="-minikube-start-args=--vm-driver=hyperkit -test.run TestStartStop" make integration

Conformance Tests

These are Kubernetes tests that run against an arbitrary cluster and exercise a wide range of Kubernetes features. You can run these against minikube by following these steps:

  • Clone the Kubernetes repo somewhere on your system.
  • Run make quick-release in the k8s repo.
  • Start up a minikube cluster with: minikube start.
  • Set following two environment variables:
export KUBECONFIG=$HOME/.kube/config
export KUBERNETES_CONFORMANCE_TEST=y
  • Run the tests (from the k8s repo):
go run hack/e2e.go -v --test --test_args="--ginkgo.focus=\[Conformance\]" --check-version-skew=false

To run a specific conformance test, you can use the ginkgo.focus flag to filter the set using a regular expression. The hack/e2e.go wrapper and the e2e.sh wrappers have a little trouble with quoting spaces though, so use the \s regular expression character instead. For example, to run the test should update annotations on modification [Conformance], use following command:

go run hack/e2e.go -v --test --test_args="--ginkgo.focus=should\supdate\sannotations\son\smodification" --check-version-skew=false