code: func MutateConfigMap(client clientset.Interface, meta metav1.ObjectMeta, mutator ConfigMapMutator) error {
  	return clientsetretry.RetryOnConflict(wait.Backoff{
  		Steps:    20,
  		Duration: 500 * time.Millisecond,
  		Factor:   1.0,
  		Jitter:   0.1,
  	}, func() error {
  		configMap, err := client.CoreV1().ConfigMaps(meta.Namespace).Get(meta.Name, metav1.GetOptions{})
  		if err != nil {
  			return err
  		}
  		if err = mutator(configMap); err != nil {
  			return errors.Wrap(err, "unable to mutate ConfigMap")
  		}
  		_, err = client.CoreV1().ConfigMaps(configMap.ObjectMeta.Namespace).Update(configMap)
  		return err
  	})
  }
docs: // MutateConfigMap takes a ConfigMap Object Meta (namespace and name), retrieves the resource from the server and tries to mutate it
  // by calling to the mutator callback, then an Update of the mutated ConfigMap will be performed. This function is resilient
  // to conflicts, and a retry will be issued if the ConfigMap was modified on the server between the refresh and the update (while the mutation was
  // taking place).