In kubernetes environments the operator can be used to automate the steps required by a user to perform a backup of container content.
Typically an Infinispan pod will have a minimal volume size in order to prevent excessive resource allocation, say 1GB. However, if a cluster is large then it's very likely that it's in-memory content will exceed this amount. Therefore, during a cluster backup it's necessary to mount a volume with sufficient capacity to accomodate the created backup file. To automate this process we should create a backup CRD.
The operator provisions an additional pod with a mounted volume for storing the final backup. This pod joins the Infinispan cluster with zero-capacity-node=true so that no state-transfer is performed when joining. The operator then initiates the backup procedure on this node, via this node's REST endpoint, using the path of the mounted volume as the backups final destination. On completion, the pod of the zero-capacity-node is terminated.
The same workflow can be used for restoring a backup from an existing volume.
- Backup path
- Resources to include
- Existing volume to mount
- Create volume with x capacity, x could be automatically determined by inspecting the container content
- Shutdown cluster on completion?