furyctl CLI
The next generation of
furyctl
, called "furyctl next", has been officially released. It is now in a stable state and available starting from version v0.25.0. The previous version, furyctl 0.11, is considered legacy and will only receive bug fixes. It will be maintained under the v0.11 branch.
What is Furyctl?
furyctl
is the command line companion for the Kubernetes Fury Distribution to manage the full lifecycle of your Kubernetes Fury clusters.
💡 Learn more about the Kubernetes Fury Distribution in the official site.
If you're looking for the old documentation, you can find it here.
Available providers
EKSCluster
: Provides comprehensive lifecycle management for an EKS cluster on AWS. It handles the installation of the VPC, VPN, EKS using the installers, and deploys the Distribution onto the EKS cluster.KFDDistribution
: Dedicated provider for the distribution, which installs the Distribution (modules only) on an existing Kubernetes cluster.OnPremises
: Provider to install a KFD Cluster on VMs.
Support & Compatibility 🪢
Check the [compatibility matrix][compatibility-matrix] for additional information about furyctl
and KFD
compatibility.
Installation
Installing from binaries
You can find furyctl
binaries on the Releases page.
To download the latest release, run:
curl -L "https://github.com/sighupio/furyctl/releases/latest/download/furyctl-$(uname -s)-amd64.tar.gz" -o /tmp/furyctl.tar.gz && tar xfz /tmp/furyctl.tar.gz -C /tmp
chmod +x /tmp/furyctl
sudo mv /tmp/furyctl /usr/local/bin/furyctl
Alternatively, you can install furyctl
using the asdf plugin.
Installing with asdf
Add furyctl asdf plugin:
asdf plugin add furyctl
Check that everything is working correctly with furyctl version
:
$ furyctl version
...
goVersion: go1.22
osArch: amd64
version: 0.28.0
Installing from source
Prerequisites:
make >= 4.1
go >= 1.22
goreleaser >= v1.24
You can install
goreleaser
with the following command once you have Go in your system:go install github.com/goreleaser/goreleaser@v1.24.0
Once you've ensured the above dependencies are installed, you can proceed with the installation.
- Clone the repository:
git clone git@github.com:sighupio/furyctl.git
# cd into the cloned repository
cd furyctl
- Build the binaries by running the following command:
make build
- You will find the binaries for Linux and Darwin (macOS) for your current architecture inside the
dist
folder:
$ tree dist/furyctl_*/
dist/furyctl_darwin_amd64_v1
└── furyctl
dist/furyctl_linux_amd64_v1
└── furyctl
- Check that the binary is working as expected:
Note replace
darwin
with your OS andamd64
with your architecture in the following commands.
./dist/furyctl_darwin_amd64_v1/furyctl version
- (optional) move the binary to your
bin
folder, in macOS:
sudo mv ./dist/furyctl_darwin_amd64_v1/furyctl /usr/local/bin/furyctl
Usage
See all the available commands and their usage by running furyctl help
.
💡 TIP
Enable command tab autocompletion for
furyctl
on your shell (bash
,zsh
,fish
are supported). See the instruction on how to enable it withfuryctl completion --help
Check KFD Compatibility matrix for the Furyctl / KFD versions to use.
Basic Usage
Basic usage of furyctl
for a new project consists on the following steps:
- Creating a configuration file defining the prequired infrastructure, Kubernetes cluster details, and KFD modules configuration.
- Creating a cluster as defined in the configuration file.
- Destroying the cluster and its related resources.
1. Create a configuration file
furyctl
provides a command that outputs a sample configuration file (by default called furyctl.yaml
) with all the possible fields explained in comments.
Furyctl configuration files have a kind that specifies what type of cluster will be created, for example the EKSCluster
kind has all the parameters needed to create a KFD cluster using the EKS managed clusters from AWS.
You can also use the KFDDistribution
kind to install the KFD distribution on top of an existing Kubernetes cluster or OnPremises
kind to install a KFD cluster on VMs.
Additionaly, the schema of the file is versioned with the apiVersion
field, so when new features are introduced you can switch to a newer version of the configuration file structure.
To scaffold a configuration file to use as a starter, you use the following command:
furyctl create config --version v1.26.6 --kind "EKSCluster"
💡 TIP
You can pass some additional flags, like the schema (API) version of the configuration file or a different configuration file name.
See
furyctl create config --help
for more details.
Open the generated configuration file with your editor of choice and edit it according to your needs. You can follow the instructions included as comments in the file.
Once you have filled your configuration file, you can check that it's content is valid by running the following comand:
furyctl validate config --config /path/to/your/furyctl.yaml