code: func CreateOrUpdateClusterRole(client clientset.Interface, clusterRole *rbac.ClusterRole) error {
  	if _, err := client.RbacV1().ClusterRoles().Create(clusterRole); err != nil {
  		if !apierrors.IsAlreadyExists(err) {
  			return errors.Wrap(err, "unable to create RBAC clusterrole")
  		}
  
  		if _, err := client.RbacV1().ClusterRoles().Update(clusterRole); err != nil {
  			return errors.Wrap(err, "unable to update RBAC clusterrole")
  		}
  	}
  	return nil
  }
docs: // CreateOrUpdateClusterRole creates a ClusterRole if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.