Skip to content

minikube_server

Installs minikube and runs it as a pair of systemd services. Selected when kubernetes_cluster_type == 'minikube'.

Invoked by play 3 (hosts: server), tag minikube, after minikube_pre_setup.

Experimental

Provisions, but is not known to work end to end with the Stage 2 platform. Use kubeadm for anything you intend to keep.

Task files

File Does
install-minikube.yml Downloads the minikube redistributable for host_machine_architecture
setup-minikube-services.yml Installs the minikube and minitunnel systemd units
generate-kubeconfig.yml Writes a kubeconfig pointing at the started cluster

The two services

Unit Template Purpose
minikube minikube.service.j2 Starts the cluster at boot
minitunnel minitunnel.service.j2 Runs minikube tunnel, which is what gives LoadBalancer services an address

minitunnel is minikube's substitute for MetalLB. On the kubeadm path, MetalLB does this job instead. See localhost_post_setup.

Handlers notified

enable minikube, start minikube, enable minitunnel, start minitunnel, all from stage1/handlers/minikube.yml, which only play 3 imports.

Variables

Variable Purpose
kubeconfig Where the generated kubeconfig is written

Version pin: minikube_version in stage1/inventories/inventory.yml.

Re-run behaviour

Idempotent.

Gotchas

Architecture comes from host_machine_architecture, not node_architecture

The minikube download uses the cluster-wide architecture variable rather than the per-host fact. That is fine because minikube only ever runs on the single server host, but it is inconsistent with the kubeadm path, where every binary keys off node_architecture.

No workers, no upgrades

Play 4 is kubeadm-only and so is every upgrade gate. minikube gives you a single node with manual upgrades.