Skip to content
No description, website, or topics provided.
Go Shell Other
Branch: master
Clone or download
alvaroaleman and kubermatic-bot Update the kubernetes versions for e2e tests (#652)
* Update the kubernetes versions for e2e tests

* Fix flannel
Latest commit 467fd0c Nov 8, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add release-note block to PR template (#367) Oct 20, 2018
cmd Update controller-runtime to v0.3.0 (#642) Oct 24, 2019
docs Kubevirt provider: Use PVCs to back machines (#595) Aug 1, 2019
examples Update the kubernetes versions for e2e tests (#652) Nov 8, 2019
hack Remove dependency (#641) Oct 23, 2019
image-builder Add template files and boilerplate headers (#498) Apr 24, 2019
pkg vSphere: Use absolute path when trying to find vms (#651) Nov 8, 2019
test Update the kubernetes versions for e2e tests (#652) Nov 8, 2019
vendor Vsphere: Power on VMs that are not powered on (#648) Nov 7, 2019
.gitignore Update controller-runtime to v0.3.0 (#642) Oct 24, 2019
.golangci.yml Add docker registry mirror (#574) Jun 18, 2019
.yamllint.conf Update kubevirt to 0.18 (#587) Jul 12, 2019 Add note about signing-off existing commits (#609) Aug 9, 2019
DCO Add template files and boilerplate headers (#498) Apr 24, 2019
Dockerfile Add proxy support (#559) Jun 11, 2019
Gopkg.lock Vsphere: Power on VMs that are not powered on (#648) Nov 7, 2019
Gopkg.toml Update controller-runtime to v0.3.0 (#642) Oct 24, 2019
LICENSE Initial commit Dec 24, 2017
Makefile Update controller-runtime to v0.3.0 (#642) Oct 24, 2019
NOTICE Add template files and boilerplate headers (#498) Apr 24, 2019
OWNERS Add team/lifecycle label to all PRs (#495) Apr 16, 2019
OWNERS_ALIASES Add moadqassem to OWNERS (#631) Sep 12, 2019 Fix rendering of TOC in readme (#578) Jun 28, 2019 Add template files and boilerplate headers (#498) Apr 24, 2019 Add template files and boilerplate headers (#498) Apr 24, 2019

Kubermatic machine-controller

Table of Contents


What works

  • Creation of worker nodes on AWS, Digitalocean, Openstack, Azure, Google Cloud Platform, VMWare Vsphere, Linode, Hetzner cloud and Kubevirt (experimental)
  • Using Ubuntu, CoreOS/RedHat ContainerLinux or CentOS 7 distributions (not all distributions work on all providers)

What does not work

  • Master creation (Not planned at the moment)


Deploy the machine-controller

make deploy

Creating a machineDeployment

# edit examples/$cloudprovider-machinedeployment.yaml & create the machineDeployment
kubectl create -f examples/$cloudprovider-machinedeployment.yaml

Advanced usage

Specifying the apiserver endpoint

By default the controller looks for a cluster-info ConfigMap within the kube-public Namespace. If one is found which contains a minimal kubeconfig (kubeadm cluster have them by default), this kubeconfig will be used for the node bootstrapping. The kubeconfig only needs to contain two things:

  • CA-Data
  • The public endpoint for the Apiserver

If no ConfigMap can be found:


The CA will be loaded from the passed kubeconfig when running outside the cluster or from /var/run/secrets/ when running inside the cluster.

Apiserver endpoint

The first endpoint from the kubernetes endpoints will be taken. kubectl get endpoints kubernetes -o yaml

Example cluster-info ConfigMap

apiVersion: v1
kind: ConfigMap
  name: cluster-info
  namespace: kube-public
  kubeconfig: |
    apiVersion: v1
    - cluster:
      name: ""
    contexts: []
    current-context: ""
    kind: Config
    preferences: {}
    users: []




Simply run make test-unit


This project provides easy to use e2e testing using Hetzner cloud. To run the e2e tests locally, the following steps are required:

  • Populate the environment variable HZ_E2E_TOKEN with a valid Hetzner cloud token
  • Run make e2e-cluster to get a simple kubeadm cluster on Hetzner
  • Run hack/ to locally run the machine-controller for your freshly created cluster

If you want to use an existing cluster to test against, you can simply set the KUBECONFIG environment variable. In this case, first make sure that a kubeconfig created by make e2e-cluster at $(go env GOPATH)/src/ doesn't exist, since the tests will default to this hardcoded path and only use the env var as fallback.

Now you can either

  • Run the tests for all providers via go test -race -tags=e2e -parallel 240 -v -timeout 30m ./test/e2e/... -identifier $USER
  • Check test/e2e/provisioning/all_e2e_test.go for the available tests, then run only a specific one via go test -race -tags=e2e -parallel 24 -v -timeout 20m ./test/e2e/... -identifier $USER -run $TESTNAME

Note: All e2e tests require corresponding credentials to be present, check test/e2e/provisioning/all_e2e_test.go for details

Note: After finishing testing, please clean up after yourself:

  • Execute ./test/tools/integration/ while the machine-controller is still running
  • Execute make e2e-destroy to clean up the test control plane

You can also insert your ssh key into the created instances by editing the manifests in test/e2e/provisioning/testdata/


If you encounter issues file an issue or talk to us on the #kubermatic channel on the Kubermatic Slack.


Thanks for taking the time to join our community and start contributing!

Before you start

Pull requests

  • We welcome pull requests. Feel free to dig through the issues and jump in.


See the list of releases to find out about feature changes.

You can’t perform that action at this time.