Skip to main content
Version: 1.32.0

Plugins

The plugin phase provides a way to manage the installation of custom manifests and Helm charts with furyctl. This is intended to customize the cluster to your needs, for example you could add your CSI 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 a Helm chart, you can use a list of Kustomize projects, which will be built by furyctl to be applied inside the cluster as a kapp application.

The plugins phase is defined inside the .spec of the configuration file, like so:

...
spec:
...
plugins:
kustomize:
...
helm:
...

Helm

Installation

To create Helm releases within a SD cluster, you can create the .spec.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 SD 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.

Uninstallation

To uninstall a helm-based plugin from the cluster, first remove it from the configuration file and then use the helm CLI to uninstall it from the cluster:

helm uninstall -n <namespace> <release name>
tip

You can find the helm binary at the path <outdir>.furyctl/bin/helm/<version>/helm, where <outdir> is furyctl's outidr (by default the user's home directory if not specified).

Kustomize

Installation

To create Kustomize installation within a SD cluster, you can create the .spec.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

Uninstallation

To remove a kustomize-based plugin from the cluster, first remove it from the configuration file and then uninstall it with the kapp CLI:

kapp delete -n kube-system -a kfd-plugin-<name>
tip

You can find the kapp binary at the path <outdir>.furyctl/bin/kapp/<version>/kapp, where <outdir> is furyctl's outidr (by default the user's home directory if not specified).

Example

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

...
spec:
...
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/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:

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