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 executehelm
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 akapp
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 runninghelm diff
validation when installing the plugin, it will still be done when upgrading.set
: If you want to provide single variables instead of avalues
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 releasechart
: the Chart to be used.values
: a list of paths tovalues
files to be appliedversion
: 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>
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 projectfolder
: 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>
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"