code: func ValidateClusterConfiguration(c *kubeadm.ClusterConfiguration) field.ErrorList {
  	allErrs := field.ErrorList{}
  	allErrs = append(allErrs, ValidateNetworking(&c.Networking, field.NewPath("networking"))...)
  	allErrs = append(allErrs, ValidateAPIServer(&c.APIServer, field.NewPath("apiServer"))...)
  	allErrs = append(allErrs, ValidateAbsolutePath(c.CertificatesDir, field.NewPath("certificatesDir"))...)
  	allErrs = append(allErrs, ValidateFeatureGates(c.FeatureGates, field.NewPath("featureGates"))...)
  	allErrs = append(allErrs, ValidateHostPort(c.ControlPlaneEndpoint, field.NewPath("controlPlaneEndpoint"))...)
  	allErrs = append(allErrs, ValidateEtcd(&c.Etcd, field.NewPath("etcd"))...)
  	allErrs = append(allErrs, componentconfigs.Known.Validate(c)...)
  	return allErrs
  }
docs: // ValidateClusterConfiguration validates an ClusterConfiguration object and collects all encountered errors