/k8s-sandbox

The easiest way to setup the Tinkerbell Stack on Kubernetes

Primary LanguageGoApache License 2.0Apache-2.0

k8s-sandbox

This repository is Experimental meaning that it's based on untested ideas or techniques and not yet established or finalized or involves a radically new and innovative style! This means that support is best effort (at best!) and we strongly encourage you to NOT use this in production.

Tinkerbell is made of different components: osie, boots, tink-server, tink-worker and so on. Currently they are under heavy development and we are working around the release process for all the components.

Here is a quick way to get the Tinkerbell stack up and running on Kubernetes.

Currently it supports:

  1. Vagrant with libvirt and VirtualBox
  2. Terraform on Equinix Metal

Getting Started

Follow documentation Local Setup with Vagrant or Packet Setup with Terraform and replace:

  • docker-compose up -dkubectl apply -f /vagrant/deploy/kubernetes/
  • docker-compose pskubectl get pods
  • docker-compose logs -f tink-server boots nginxkubectl logs -f -l 'app in (tink-server, boots, nginx)'
  • docker exec -i deploy_tink-cli_1 tink ...kubectl exec -i $(kubectl get pod -l app=tink-cli -o name) -- tink ...

Deploying on a standalone Kubernetes cluster is not yet supported.

Limitations

Tinkerbell is unlikely to run on an existing Kubernetes cluster without additional configurations that require privileged, node access to Kubernetes. Also, multi-node clusters are not supported at the moment.

Docker and Shell Scripts

The installation process is ported from the Sandbox, which uses Docker Compose, and is still heavily dependent on shell scripts running locally and Docker CLI.

Host Path

The NGINX data directory requires to be filled with about 4GB of data (mostly OSIE). It is actually initialized from the setup.sh script before Tinkerbell is installed. The data is installed in a local directory and Kubernetes access it through a hostPath.

Host Network and Service Node Ports

Boots needs to access the same layer 2 network than the worker machine, and Hegel needs to be on the same layer 3 network. It is achieved using hostNetwork. Moreover, these services must run on ports ranging from 67 to 50061, which requires to to setup Kubelet's service-node-port-range accordingly.