Skip to main content
Version: 1.28.6

Plugins

The plugin phase provides a way to manage the installation of custom manifests with furyctl. This is intended to customize the cluster to your needs, for example you could add your CNI here. It's NOT intended as a way to install actual workload inside the cluster.

This phase gives you two ways to install additional resources, which can also be used together:

  • Helm: you can specify a list of Helm chart and relative values files. furyctl will execute helm using those parameters.
  • Kustomize: if you prefer to have more control over the manifests, or if your required software does not provide an Helm chart, you can use a list of Kustomize projects, which will be built by furyctl to be applied inside the cluster.

Helm

To create Helm releases within a KFD cluster, you can create the plugins.helm object and use the following parameters:

  • repositories: a list of repositories to be added to Helm. For each repository you want to add, you must provide:
    • name: the name of the repository.
    • url: the url of the repository.
  • releases: a list of releases to be applied inside the KFD cluster. For each of them, you can provide the following options:
    • name: the name of the release.
    • disableValidationOnInstall: disables running helm diff validation when installing the plugin, it will still be done when upgrading.
    • set: If you want to provide single variables instead of a values file, you can do so here. For each variable, you must provide:
      • name: the name of the variable.
      • value: the value of the variable.
    • namespace: the namespace in which to install the release
    • chart: the Chart to be used.
    • values: a list of paths to values files to be applied
    • version: the version of the Chart to be used.

Kustomize

To create Kustomize installation within a KFD cluster, you can create the plugins.kustomize array and use the following parameters for each object you want to insert:

  • name: a user-friendly name for this Kustomize project
  • folder: the path to a folder that contains the root Kustomize project

Example

As an example, if you wanted to insert the kubernetes-dashboard inside your KFD cluster, you can use the following snippet inside the furyctl.yaml file:

plugins:
helm:
repositories:
- name: kubernetes-dashboard
url: https://kubernetes.github.io/dashboard/
releases:
- name: kubernetes-dashboard
namespace: kubernetes-dashboard
chart: kubernetes-dashboard/kubernetes-dashboard
values:
- "{path://./path/to/values.yaml}"

Another example, this time using Kustomize, can be the installation of Local Path Provisioner. Create a kustomization.yaml inside a folder named plugins/local-path-provisioner at the same level as your furyctl.yaml file:

# plugins/local-path-provisioner/kustomization.yaml
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://github.com/rancher/local-path-provisioner/master/deploy

Use the following snippet inside furyctl.yaml:

plugins:
kustomize:
- name: local-path-provisioner
folder: "{path://./plugins/local-path-provisioner}"