Skip to main content

Advanced Usage

Cluster creation

Create the PKI for on-premises clusters

On-premises clusters need a set of certificates authorities and certificate files to work as a prerequisite. Both for the Kubernetes control plane and for the etcd database.

furyctl provides a command that allows the creation of this PKI:

furyctl create pki

The command supports some additional options, like --etcd to create only the PKI for etcd, or creating the files in a different path.

See all the additional options with the --help flag:

furyctl create pki --help

Create a cluster in an already existing infrastructure

Same steps described in the Basic usage guide, but you can skip the infrastructure creation phase by not filling the section infrastructure in the furyctl.yaml file and running furyctl create cluster --start-from kubernetes.

Deploy a cluster step by step

The cluster creation process can be split into three phases:

  1. Infrastructure
  2. Kubernetes
  3. Distribution

The furyctl create cluster command will execute all the phases by default, but you can limit the execution to a specific phase by using the --phase flag.

To create a cluster step by step, you can run the following command:

furyctl create cluster --phase infrastructure

If you choose to create a VPN in the infrastructure phase, you can automatically connect to it by using the flag --vpn-auto-connect.

furyctl create cluster --phase kubernetes

After running the command, remember to export the KUBECONFIG environment variable to point to the generated kubeconfig file or to use the flag --kubeconfig in the following command.

furyctl create cluster --phase distribution

Legacy vendor download

The new furyctl still embeds some legacy features, for example the command furyctl legacy vendor to download KFD dependencies from a deprecated Furyfile.yml.

This can be still used to manually manage all the components of the distribution.

tip

You can also use --furyfile to point to a Furyfile.yaml in a different folder

Plugins

furyctl supports Helm and Kustomize plugins. The following sections will help you getting started with them.

Find out more in the Plugins section of the KFD documentation.

Helm plugins

To install a Helm plugin (chart), follow these steps:

  1. Add the repository to the spec.plugins.helm.repositories section of your furyctl.yaml file.
  2. Add the release to the spec.plugins.helm.releases section, specifying the chart name, the namespace, the chart version and the values to override. To override the values you can use the spec.plugins.helm.releases[].set or the spec.plugins.helm.releases[].values section.

For example to install the Prometheus Helm chart you have to add the following to your furyctl.yaml:

...
spec:
...
plugins:
helm:
repositories:
- name: prometheus-community
url: https://prometheus-community.github.io/helm-charts
releases:
- name: prometheus
namespace: prometheus
chart: prometheus-community/prometheus
version: "24.3.0"
set:
- name: server.replicaCount
value: 3
values:
- path/to/values.yaml

Kustomize plugins

To install a Kustomize plugin (project) you have to configure the spec.plugins.kustomize section of your furyctl.yaml file, specifying a name and the path to the folder.

For example:

...
spec:
...
plugins:
kustomize:
- name: kustomize-project
folder: path/to/kustomize/project

Advanced Tips

Using a custom distribution location

furyctl comes with the flag --distro-location, allowing you to use a local copy of KFD instead of downloading it from the internet. This allows you to test changes to the KFD without having to push them to the repository, and might come in handy when you need to test new features or bug fixes.

Using a custom upgrade path location

On the same note, the tool comes with the --upgrade-path-location flag, too, allowing you to test changes to the upgrade path without having to push them to the repository, and to support cases that are not covered by the official release, such as upgrading from a beta or release candidate release to a stable one.

Restarting the cluster creation or update process from a specific (sub-)phase

If, for any reason, the cluster creation or update process fails, you can restart it from a specific (sub-)phase by using the --start-from flag. Starting from v0.27.0 we introduced the support for sub-phases, to give the operator more control over the process. The supported options are: pre-infrastructure, infrastructure, post-infrastructure, pre-kubernetes, kubernetes, post-kubernetes, pre-distribution, distribution, post-distribution, plugins.

Setting command flags via environment variables

The flags for furyctl commands can also be set via environment variables additionally to passing them in the command itself. furyctl will pick up the flags from environment variables that have the following format:

FURYCTL_<flag name with underscores instead of spaces>

For example, for setting the --outdir and --distro-location flags you can set the following environment variables instead of passing the flags in each command:

export FURYCTL_OUTDIR=$PWD
export FURYCTL_DISTRO_LOCATION=/home/myuser/src/kfd-vX

Now, you can run for example furyctl apply and the --outdir and --distro-location flags will be set based on the environment variables values even if not specified in the command.