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:
- Infrastructure
- Kubernetes
- 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.
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:
- Add the repository to the
spec.plugins.helm.repositories
section of yourfuryctl.yaml
file. - 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 thespec.plugins.helm.releases[].set
or thespec.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.