How netapp/trident works
NetApp Trident is a Kubernetes storage orchestrator that provisions and manages persistent storage for workloads through CSI, with REST and CRD interfaces and an operator for installation and configuration. The main workload path runs from a Kubernetes CSI request through controller logic and the orchestrator into storage pools and drivers; node-side CSI handles volume operations. The README also documents snapshots, backups, replication, cloning, and portability. Some subsystem connections are documented rather than visible in sampled implementation, so those edges are marked unverified.
Main entry points: orchestrator_core.go Orchestrator Core · controller_server.go CSI Controller · controller.go Trident Operator · node_server.go CSI Node
Components 20
User Interfaces
- CSI Controller
frontend/csi/controller_server.go - CSI Node
frontend/csi/node_server.go - REST API
frontend/rest/controller_handlers.go - Trident CLI
cli/cmd/get_storageclass.go - CRD Controller
frontend/crd/controller/crd_controller.go
Orchestration
- Orchestrator Core
core/orchestrator_core.go - Runtime Cache
core/concurrent_cache/storage_class.go - Persistent Store
persistent_store/crd/apis/netapp/v1/storageclass.go
Storage Management
- Storage Classes
storage_class/storage_class.go - Storage Pools
storage/storage_pool.go - Storage Drivers
storage_drivers/ontap/api/rest/client/storage/storage_client.go
Kubernetes Operations
- Trident Operator
operator/controllers/orchestrator/controller.go - Configurator
operator/controllers/configurator/controller.go - Resource Monitor
operator/controllers/resourcemonitor/storageclass_handler.go
Additional Capabilities
- Auto-Grow
frontend/autogrow/autogrow_orchestrator.go - Snapshots
frontend/csi/group_controller_server.go - Node Operations
core/node/core.go
Other components
- Kubernetes Workload
- Kubernetes API
- NetApp Storage
Connections 20
- Kubernetes Workload → CSI Controller: requests storage
- CSI Controller → Orchestrator Core: orchestrates volumes
frontend/csi/controller_server.go - CSI Node → Orchestrator Core: manages node volumes
- REST API → Orchestrator Core: handles API calls
frontend/rest/controller_handlers.go - Trident CLI → REST API: invokes REST
cli/cmd/get_storageclass.go - CRD Controller → Orchestrator Core: reconciles resources
frontend/crd/controller/crd_controller.go - Orchestrator Core → Runtime Cache: uses cache
- Orchestrator Core → Persistent Store: persists state
- Orchestrator Core → Storage Classes: manages classes
core/orchestrator_core.go - Storage Classes → Storage Pools: matches pools
storage_class/storage_class.go - Storage Pools → Storage Drivers: uses backend
storage/storage_pool.go - Storage Drivers → NetApp Storage: controls storage
- Kubernetes API → Trident Operator: provides resources
- Trident Operator → Configurator: configures drivers
- Trident Operator → Resource Monitor: monitors classes
- Resource Monitor → Configurator: syncs configuration
operator/controllers/resourcemonitor/storageclass_handler.go - Orchestrator Core → Auto-Grow: supports auto-grow
- CSI Controller → Snapshots: handles snapshots
frontend/csi/controller_server.go - CSI Node → Node Operations: performs node work
- Orchestrator Core → Snapshots: supports data protection