A declarative framework for resilient Kubernetes deployment.
Go to file
Mark Burnett 28763f7f27 add --no-provision to `vagrant snapshot restore` 2017-05-24 08:14:50 -05:00
assets Add initial containerized version 2017-05-23 13:44:32 -05:00
scripts Add initial containerized version 2017-05-23 13:44:32 -05:00
vagrant-assets Add initial containerized version 2017-05-23 13:44:32 -05:00
.dockerignore Add initial containerized version 2017-05-23 13:44:32 -05:00
.gitignore Add initial containerized version 2017-05-23 13:44:32 -05:00
Dockerfile.genesis Add initial containerized version 2017-05-23 13:44:32 -05:00
Dockerfile.join Add initial containerized version 2017-05-23 13:44:32 -05:00
LICENSE Initial commit 2017-02-14 11:13:39 -08:00
Makefile Add initial containerized version 2017-05-23 13:44:32 -05:00
README.md add --no-provision to `vagrant snapshot restore` 2017-05-24 08:14:50 -05:00
Vagrantfile Add initial containerized version 2017-05-23 13:44:32 -05:00
kubelet.service.template Add initial containerized version 2017-05-23 13:44:32 -05:00
test-install.sh Add initial containerized version 2017-05-23 13:44:32 -05:00

README.md

Overview

Promenade is tool for deploying self-hosted Kubernetes clusters using bootkube.

Quickstart using Vagrant

Make sure you have Vagrant and VirtualBox installed. Then install the vagrant-hostmanager plugin.

vagrant plugin install vagrant-hostmanager

Build the genesis and join images and save them to disk for quick loading into the Vagrant VMs.

make save

Start the VMs and save a snapshot for quicker iteration:

vagrant up
vagrant snapshot save clean

Spin up a cluster:

./test-install.sh

Watch nodes spin up:

watch kubectl --insecure-skip-tls-verify --kubeconfig <(sed 's/kubernetes:443/192.168.77.10:443/' < assets/kubeconfig) get nodes

To test changes, you can safely reset single or multiple nodes:

vagrant snapshot resotre n2 clean --no-provision
vagrant snapshot restore clean --no-provision

Detailed Deployment

The basic outline for deploying a cluster is:

  1. Overwrite the placeholder assets in the assets directory.
  2. Make sure the Makefile lists the images and versions you expect to be required.
  3. Build the images with make build
  4. Setup each host with the following:
    • DNS resolution pointing kubernetes to the appropriate IPs for the Kubernetes API
    • A running docker daemon, configured to use the DNS resolution specified above (see vagrant-assets/docker-daemon.json)
  5. Transfer the appropriate images to each host. You may find it useful to run make save, transfer the image and then use docker load -i ... to restore it rather than to rely on a registry.
  6. On the genesis (seed) server, start the cluster: docker run --rm -v /:/target -v /var/run/docker.sock:/var/run/docker.sock -e NODE_HOSTNAME=genesis-node.fqdn quay.io/attcomdev/promenade-genesis:dev
  7. On each additional node: docker run --rm -v /:/target -v /var/run/docker.sock:/var/run/docker.osck -e NODE_HOSTNAME=join-node.fqdn quay.io/attcomdev/promenade-join:dev