Velero's power actually lies in its plugin ecosystem: the core doesn't write vendor code, plugins add the support. This episode covers the plugin types (object store, volume snapshot, item action, custom in Go), how to add them via velero plugin add, and examples of AWS/Azure/GCP provider plugins plus the CSI plugin.

In episode 2 you met plugins as Velero's bridge to external providers. Episode 18 expands that picture: plugins aren't an accessory — they're the soul of Velero's architecture. The Velero core doesn't know what an "EBS snapshot" or "S3 bucket" is — the plugins do. The result: one core, hundreds of integrations.
Think of an operating system and printer drivers: the OS doesn't need to know how every printer works — the manufacturer writes the driver. Once the driver is installed, any printer works. Velero plugins are exactly like those drivers, and adding one is just as easy.
Connects Velero to object storage for storing manifests and data files. At least one is required (except when installing without a BSL). Examples: velero/velero-plugin-for-aws (S3 + MinIO), velero/velero-plugin-for-gcp, velero/velero-plugin-for-microsoft-azure.
Creates and restores cloud snapshots for persistent volumes. Handles EBS (AWS), Persistent Disk (GCP), Azure Disk, and others. Without this plugin, volume snapshots fail (episode 16).
Transforms resources during backup or restore. A real example: the OpenStack plugin adds/changes specific fields on cloud resources; the CSI plugin processes VolumeSnapshots. This is the plugin type that makes deep integrations possible without touching the core code.
Velero has a Go plugin framework — anyone can write their own plugin for specific needs: custom resource transformation, backup storage that isn't supported, or business logic on certain items. The entry points are the BackupItemAction and RestoreItemAction interfaces in the Velero SDK.
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.14.0,velero/velero-plugin-for-csi:v0.10.0 \
--bucket velero \
--secret-file ./credentials-velero \
--backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://minio:9000Without reinstalling, add plugins to the Velero deployment:
velero plugin add velero/velero-plugin-for-aws:v1.14.0velero plugin remove velero/velero-plugin-for-aws:v1.14.0velero plugin add adds an init container to the velero deployment — plugins are loaded as binaries before the server starts. Verify:
kubectl get deploy velero -n velero -o jsonpath='{.spec.template.spec.initContainers[*].name}'| Plugin | Image | Function |
|---|---|---|
| AWS | velero/velero-plugin-for-aws | S3, EBS snapshot, MinIO (S3 API) |
| Azure | velero/velero-plugin-for-microsoft-azure | Blob storage, Azure Disk snapshot |
| GCP | velero/velero-plugin-for-gcp | GCS, Persistent Disk snapshot |
| OpenStack | velero/velero-plugin-for-openstack | Swift/Cinder |
| CSI | velero/velero-plugin-for-csi | Volume backup via CSI VolumeSnapshot |
Plugin versions follow Velero's major releases — make sure the plugin version matches the server version (e.g. v1.14.x for Velero 1.14+, adjust to the latest release).
The CSI plugin (stable since Velero 1.14) enables backup of volumes provisioned via CSI drivers — including third-party drivers that aren't owned by a cloud provider (e.g. Rook Ceph, Portworx, or NFS CSI storage). Without this plugin, CSI volumes are only backed up as manifests.
velero plugin add velero/velero-plugin-for-csi:v0.10.0With this plugin, every PVC with an available VolumeSnapshotClass is automatically backed up via CSI snapshots. We fully dissect this in episode 19.
Tip
Plugin debugging pattern: a failing plugin almost always shows up as an error in the server logs (kubectl logs -n velero deploy/velero). Typical messages: "plugin process exited", "no object store plugin registered", or "volume snapshotter plugin not found". Check the plugin vs server version before looking for other causes.
For those needing special integrations, the short flow:
Plugin interface (e.g. BackupItemAction)./plugins.velero plugin add <image>).The SDK and examples are available in the velero-io/velero repository (the pkg/plugin folder) and the custom plugin documentation. We don't write a full custom plugin in this series, but the framework above is enough to get started.
Key takeaways:
--plugins) or afterward (velero plugin add).In episode 19 next, we dive deep into CSI Snapshot & Cross-provider — backing up CSI volumes via VolumeSnapshotClass, full CSI provider support, and moving volumes between clouds via file-level backup or snapshot conversion.