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
withfuryctl
.
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.