Skip to main content
Version: Next

How it works

furyctl automates the usage of the components (installers and modules) of the Kubernetes Fury Distribution to make the creation of Kubernetes Fury clusters easier, straightforward and repeatable.

All the options for creating the cluster are defined in a single configuration file.

Configuration file structure

furyctl uses a configuration file (furyctl.yaml by default) to define the complete configuration of a Kubernetes Fury Cluster.

The configuration file structure depends on the kind of the cluster being created.

All configuration files share a common base structure though:

apiVersion: <version>
kind: <kind>
metadata:
name: <name>
spec:
infrastructure:
kubernetes:
distribution:

The .spec portion, contains the three main phases that are exeucted by furyctl to provision a KFD cluster.

.spec.infrastructure

The .spec.infrastructure portion will contain all the resources that are needed to host a Kubernetes cluster. For example, on AWS we will configure the VPC and VPN.

.spec.kubernetes

The .spec.kubernetes portion will contain the actual configuration for the Kubernetes cluster, options and nodepools.

.spec.distribution

The .spec.distribution portion will contain all the configurations on the Kubernetes Fury Distribution core modules that will be installed inside the Kubernetes cluster.

.spec.plugins

The .spec.plugins portion will contain all the additional Helm Charts/Kustomize projects that we want to install inside the Kubernetes cluster.

Phases

Each one of the aforementioned portions defines also a phase of furyctl's execution.

During creation, the phases will be executed in the following order: infrastructure -> kubernetes -> distribution -> plugins.

The phases can also be executed in standalone mode if necessary, using the flag --phases with furyctl.

Hidden IaC project

With these components, it orchestrates an hidden project in which, for each major phase (infrastructure, kubernetes, distribution,plugins), a corresponding Terraform, Ansible, Kustomize, or other configuration will be templated and executed based on the furyctl.yaml configuration file.

Where can you find the templates?

Currently, the templates utilized by furyctl can be found in two repositories: fury-distribution/templates and furyctl/configs/provisioners. We are currently in the process of consolidating all templates under the fury-distribution repository.

The entire logic for installing a production-grade Kubernetes cluster is contained within the furyctl flow (in the code) as well as within the templates themselves.

Where are the binary files?

All the binary files required by furyctl are automatically downloaded by furyctl itself and placed in the ~/.furyctl/bin directory.

If the --outdir flag is used, they can also be found in the <outfolder>/.furyctl/bin directory.