On-prem Installer
SIGHUP Distribution on-premises Installer is an installer and add-on module for the SIGHUP Distribution Distribution (SD) that provides packages to install Kubernetes to on-premises bare-metal nodes and/or VMs.
Overview
SIGHUP Distribution on-premises Installer uses Ansible to provision nodes with a collection of open source tools to install Kubernetes in an on-premises environment.
Packages
The following packages are included in the SIGHUP Distribution Kubernetes on-premises installer:
| Package | Description |
|---|---|
| etcd | Ansible role to install etcd as systemd service |
| haproxy | Ansible role to install HAProxy as Kubernetes load balancer for the APIServer |
| containerd | Ansible role to install containerd as container runtime |
| kube-node-common | Ansible role to install prerequisites for Kubernetes setup |
| kube-control-plane | Ansible role to install control-plane nodes with kubeadm |
| kube-worker | Ansible role to install worker nodes and join them to the cluster with kubeadm |
Click on each package to see its full documentation.
Compatibility
This version is compatible with Kubernetes 1.31.4 plus the complete list in the compatibility matrix.
Check the compatibility matrix for additional information about previous releases of the module.
Support for the ARM platform is still in beta status, the Load Balancers managed by furyctl are not currently supported for the RHEL and RHEL derivatives running on ARM.
Please use a different OS for the Load Balancers VMs (or disable them and create your own load balancer) to be able to follow the tutorial.
Usage
To create/upgrade a Kubernetes cluster with this installer we strongly suggest to use furyctl, our companion CLI tool to manage the full lifecycle of SD clusters.
This installer is fully automated with the OnPremises provider. furyctl automates the installation of the required components inside each node with your own parameters, which you can specify using a configuration file.
Check the SIGHUP Distribution on VMs guide to get started.
Find more info about the OnPremises provider here.
If you want to create Ansible playbooks by yourself, you can take a look at the examples inside our GitHub repository to have an idea of what you can do.
Requirements
The prerequisites to create a Kubernetes cluster using this installer are:
-
A list of nodes that will act as the control-plane for the cluster.
-
A list of nodes that will act as the worker nodes for the cluster, which need to be different from the control-plane nodes.
-
(Optionally) A list of nodes that will act as load balancers to sends traffic to all control-plane nodes.
noteAlternatively, if you already have a load balancer inside your infrastructure that is configurable to balance traffic towards the control-plane nodes, you can use it.
-
An SSH server installed inside each node, with a user that can authenticate using an SSH key and can execute
sudowithout entering the password. -
Firewall rules to enable network traffic between all nodes.
-
A PKI for both Kubernetes and etcd.
The supported Operating Systems are Debian (and derivatives) and RHEL (and derivatives).
Kubernetes cluster
A vanilla Kubernetes cluster refers to the installation of packages and requirements as provided by Kubernetes itself. Unlike vendor-specific Kubernetes distributions (e.g., EKS from Amazon or GKE from Google), vanilla Kubernetes clusters are free from proprietary add-ons, providing a clean slate for customization.
To have an overview of the required steps to create a vanilla Kubernetes cluster, you can see the Creating a cluster with kubeadm page from the Kubernetes documentation.
This installer will automate the creation of a vanilla Kubernetes cluster with the following components:
- An
etcdcluster. containerdas the Container runtime, installed inside all nodes to enable the orchestration of container images.- The
kubeletsystemd unit installed inside all nodes. kubeadminstalled inside all nodes
It will also disable the swap file/partition and put SELinux in permissive mode.
The installer will:
- Provision each node with
containerd, thekubeletservice andkubeadm. - If specified, it will install
HAProxyand provision akeepalivedvirtual IP on designated nodes. - Create the
etcdcluster inside the control-plane nodes - Use
kubeadm initto create the first control-plane instance - Use
kubeadm jointo add all other control-plane and worker nodes to the cluster. - Create a
kubernetes-adminuser withkubeadm kubeconfig use. - Optionally create other specified users with the same command.
- Retrieve the
kubeconfigfiles to enable the usage ofkubectlto interact with the cluster.
It can also be used to upgrade the Kubernetes version on all nodes. This operation will renew all internal certificates.