code: func CreateClusterInfoRBACRules(client clientset.Interface) error {
  	klog.V(1).Infoln("creating the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace")
  	err := apiclient.CreateOrUpdateRole(client, &rbac.Role{
  		ObjectMeta: metav1.ObjectMeta{
  			Name:      BootstrapSignerClusterRoleName,
  			Namespace: metav1.NamespacePublic,
  		},
  		Rules: []rbac.PolicyRule{
  			rbachelper.NewRule("get").Groups("").Resources("configmaps").Names(bootstrapapi.ConfigMapClusterInfo).RuleOrDie(),
  		},
  	})
  	if err != nil {
  		return err
  	}
  
  	return apiclient.CreateOrUpdateRoleBinding(client, &rbac.RoleBinding{
  		ObjectMeta: metav1.ObjectMeta{
  			Name:      BootstrapSignerClusterRoleName,
  			Namespace: metav1.NamespacePublic,
  		},
  		RoleRef: rbac.RoleRef{
  			APIGroup: rbac.GroupName,
  			Kind:     "Role",
  			Name:     BootstrapSignerClusterRoleName,
  		},
  		Subjects: []rbac.Subject{
  			{
  				Kind: rbac.UserKind,
  				Name: user.Anonymous,
  			},
  		},
  	})
  }
docs: // CreateClusterInfoRBACRules creates the RBAC rules for exposing the cluster-info ConfigMap in the kube-public namespace to unauthenticated users