Our solution is built on an open source tool called k8s-snapshots. This toll requires the use of PersistentVolumes but with annotations performs a snapshot at an interval. It also manages retention. Our extension to it notifies via slack if that's useful to you. It runs as a separate service inside our k8s cluster and uses the authentication that's native on the GCE host the cluster is running on.


Another option is snapshot-controller. It's similar to k8s-snapshots, but has fewer fancy features. I couldn't get k8s-snapshots to work due to this bug.


Take a look here: https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver (beta on k8s 1.13) It support snapshot and restore as k8s resource.