This is a reimplementation of StatefulSet (now including rolling updates) as a CompositeController.
For this example, you need a cluster with a default storage class and a dynamic provisioner.
kubectl create configmap catset-controller -n metacontroller --from-file=sync.js
kubectl apply -f catset-controller.yaml
kubectl apply -f my-catset.yaml