Requirements
Software Requirements
To install a SIGHUP Distribution kubernetes cluster, you first need to install furyctl, the command line companion to manage the full lifecycle of your SIGHUP Distribution clusters.
furyctl automates the usage of the components (installers and modules) of the SIGHUP Distribution to make the creation of clusters easier, straightforward and repeatable.
All the options for creating the cluster are defined in a single configuration file.
Recommended Hardware Requirements
SD is a modular and composable system, so hardware requirements ultimately depend on the modules and configuration chosen. Having said that, for a production-grade cluster a good starting point would be:
A SD production grade cluster will be composed of 3 node pools:
- Control Plane: 3 nodes in HA.
- Infrastructure: 3 nodes dedicated to running the infrastructural components of SD (monitoring, logging, policy enforcement, etc., i.e. the modules).
- Workers: where the application workload will run. This is up to you.
- Load Balancers (optional): for on-premises installations, 2 load balancers in HA can be deployed to forward traffic to the control plane and the ingress controllers running in the infrastructure nodes.
Support for the ARM platform is still in beta status, the Load Balancers managed by furyctl are not currently supported for 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) if you want to use an ARM-based host.
Nodes minimum sizing
| Node Role | Applicable Providers | CPU (cores) | RAM (GB) | Disk (GB) | Qty. |
|---|---|---|---|---|---|
| Control Plane | OnPremises | 2 | 8 | 50 | 3 |
| Infrastructure | OnPremises, EKSCluster, KFDDistribution | 4 | 16 | 50 | 3 |
| Load Balancer | OnPremises (optional) | 2 | 2 | 50 | 2 |
Storage
Some modules rely on persistent storage via PersistentVolumeClaims, by default (but configurable) the following capacity will be used:
| Description | Size (GB) |
|---|---|
| Prometheus (metrics storage) | 150 |
| MinIO Monitoring (metrics storage, 20GBx6) | 120 |
| MinIO Logging (logs storage, 20GBx6) | 120 |
| OpenSearch (logs storage) | 30 |
| MinIO Tracing (traces storage) | 120 |
| Total | 540 |
Network Access
furyctl
furyctl downloads all the dependencies that it needs to work (binaries like kubectl, kustomize, helm, ansible, the distribution modules, the distribution installers, and the distribution itself) automatically for you.
To download these dependencies, the machine running furyctl needs to reach the following Internet endpoints:
| Endpoint / Kind | EKSCluster | KFDDistribution | OnPremises | Immutable |
|---|---|---|---|---|
| ansible-galaxy-ng.s3.dualstack.us-east-1.amazonaws.com:443 | ✅ | ✅ | ✅ | ✅ |
| api.github.com:443 | ✅ | ✅ | ✅ | ✅ |
| dl.k8s.io:443 | ✅ | ✅ | ✅ | ✅ |
| galaxy.ansible.com:443 | ✅ | ✅ | ✅ | ✅ |
| get.helm.sh:443 | ✅ | ✅ | ✅ | ✅ |
| github.com:443 | ✅ | ✅ | ✅ | ✅ |
| mise-versions.jdx.dev:443 | ✅ | ✅ | ✅ | ✅ |
| pypi.org:443 | ✅ | ✅ | ✅ | ✅ |
| registry.opentofu.org:443 | ✅ | |||
| release-assets.githubusercontent.com:443 | ✅ | ✅ | ✅ | ✅ |
| stable.release.sighup-prod.sighup.io:443 | ✅ | |||
| tuf-repo-cdn.sigstore.dev:443 | ✅ | ✅ | ✅ | ✅ |
furyctl has a feature to download all the dependencies and create a .tar.gz file with them from an Internet-connected machine, that can be extracted on another air-gapped target machine where furyctl will be running and contacting the cluster nodes. Read more in the Air Gapped Bundle CLI reference.
Cluster Nodes
The cluster nodes will need access to the Internet to download additional software needed to run Kubernetes itself and container images for running all the distribution modules.
| Endpoint / Kind | EKSCluster | KFDDistribution | OnPremises | Immutable |
|---|---|---|---|---|
| registry.sighup.io:443 | ✅ | ✅ | ✅ | ✅ |
| OS packages repositories | ✅ | |||
| stable.release.sighup-prod.sighup.io:443 | ✅ | |||
| api.github.com:443 | ✅ | |||
| github.com:443 | ✅ |
You can configure the cluster to use your own registry mirror, see the .spec.distribution.common.registry configuration parameter of your cluster Kind (EKSCluster, KFDDistribution, OnPremises) and the spec.kubernetes.advanced.registry parameter for OnPremises and Immutable.