Core Contributions

Beyond contributing new add-ons, we're always interested in new contributions to the core kURL project.


  1. Spin up an instance for the target OS, e.g. Ubuntu 18.04.
  2. Build the Kubernetes host packages for your desired version of Kubernetes. For K8s 1.15.2 on Ubuntu 18.04 you'd use make build/packages/kubernetes/1.15.2/ubuntu-18.04. (For packages that have already been released, you can save time by running curl -L | tar xzvf - on your server.)
  3. Airgap only - build the Docker package: make build/packages/docker/18.09.8/ubuntu-18.04
  4. OPTIONAL - when developing the kurl-util image export SYNC_KURL_UTIL_IMAGE=1
  5. Run the task to watch for code changes and copy them to your server: REMOTES=<user>@<hostname>,<user>@<hostname2> make watchrsync
  6. Edit scripts/Manifest to configure Kubernetes and add-ons.

That will place the installer in your HOME's kurl directory and sync any changes you make locally to the scripts/ directory. If you rebuild the OS packages, you'll need to manually run rsync -r build/ ${USER}@${HOST}:kurl to push those changes. The make watchrsync command requires Node with the gaze-run-interrupt package available globally.

On the remote instance run cd ~/kurl && sudo bash to test your changes.

Additional details can be found here.

How It Works

The bundles directory holds Dockerfiles used to download the Kubernetes and Docker host packages required for each supported OS. Make tasks use these Dockerfiles to run an image for the target OS and download .dep or .rpm files and all required dependencies.

The scripts directory contains the top-level and scripts along with helper scripts.

The web directory holds an Express app for serving the install scripts.