Skip to main content
A newer release of this product is available.

Customize Trident operator installation

Contributors juliantap

The Trident operator allows you to customize Astra Trident installation using the attributes in the TridentOrchestrator spec. If you want to customize the installation beyond what TridentOrchestrator arguments allow, consider using tridentctl to generate custom YAML manifests to modify as needed.

Understanding controller pods and node pods

Astra Trident runs as a single controller pod, plus a node pod on each worker node in the cluster. The node pod must be running on any host where you want to potentially mount an Astra Trident volume.

Kubernetes node selectors and tolerations and taints are used to constrain a pod to run on a specific or preferred node. Using the`ControllerPlugin` and NodePlugin, you can specify constraints and overrides.

  • The controller plugin handles volume provisioning and management, such as snapshots and resizing.

  • The node plugin handles attaching the storage to the node.

Configuration options

Warning spec.namespace is specified in TridentOrchestrator to signify the namespace where Astra Trident is installed. This parameter cannot be updated after Astra Trident is installed. Attempting to do so causes the TridentOrchestrator status to change to Failed. Astra Trident is not intended to be migrated across namespaces.

This table details TridentOrchestrator attributes.

Parameter Description Default

namespace

Namespace to install Astra Trident in

"default"

debug

Enable debugging for Astra Trident

false

windows

Setting to true enables installation on Windows worker nodes.

false

IPv6

Install Astra Trident over IPv6

false

k8sTimeout

Timeout for Kubernetes operations

30sec

silenceAutosupport

Don't send autosupport bundles to NetApp
automatically

false

enableNodePrep

Manage worker node dependencies automatically (BETA)

false

autosupportImage

The container image for Autosupport Telemetry

"netapp/trident-autosupport:23.01"

autosupportProxy

The address/port of a proxy for sending Autosupport
Telemetry

"http://proxy.example.com:8888"

uninstall

A flag used to uninstall Astra Trident

false

logFormat

Astra Trident logging format to be used [text,json]

"text"

tridentImage

Astra Trident image to install

"netapp/trident:21.04"

imageRegistry

Path to internal registry, of the format
<registry FQDN>[:port][/subpath]

"k8s.gcr.io/sig-storage (k8s 1.19+)
or quay.io/k8scsi"

kubeletDir

Path to the kubelet directory on the host

“/var/lib/kubelet”

wipeout

A list of resources to delete to perform a complete removal of
Astra Trident

imagePullSecrets

Secrets to pull images from an internal registry

imagePullPolicy

Sets the image pull policy for the the Trident operator. Valid values are:

Always to always pull the image.

IfNotPresent to pull the image only if it does not already exist on the node.

Never to never pull the image.

IfNotPresent

controllerPluginNodeSelector

Additional node selectors for pods. Follows same format as pod.spec.nodeSelector.

No default; optional

controllerPluginTolerations

Overrides Kubernetes tolerations for pods. Follows the same format as pod.spec.Tolerations.

No default; optional

nodePluginNodeSelector

Additional node selectors for pods. Follows same format as pod.spec.nodeSelector.

No default; optional

nodePluginTolerations

Overrides Kubernetes tolerations for pods. Follows the same format as pod.spec.Tolerations.

No default; optional

Note For more information on formatting pod parameters, see Assigning Pods to Nodes.

Sample configurations

You can use the attributes mentioned above when defining TridentOrchestrator to customize your installation.

Example 1: Basic custom configuration

This is an example for a basic custom configuration.

cat deploy/crds/tridentorchestrator_cr_imagepullsecrets.yaml
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  imagePullSecrets:
  - thisisasecret
Example 2: Deploy with node selectors

This example illustrates how Trident can be deployed with node selectors:

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  controllerPluginNodeSelector:
    nodetype: master
  nodePluginNodeSelector:
    storage: netapp
Example 3: Deploy on Windows worker nodes

This example illustrates deployment on a Windows worker node.

cat deploy/crds/tridentorchestrator_cr.yaml
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  windows: true