Struct[{
'dc' => String[1],
'cluster_alias' => Optional[String[1]],
'cluster_group' => String[1],
'master' => Stdlib::Fqdn,
'master_port' => Stdlib::Port,
'master_url' => Stdlib::HTTPSUrl,
'version' => K8s::KubernetesVersion,
'pki_intermediate_base' => Cfssl::Ca_name,
'pki_renew_seconds' => Integer[1800],
'control_plane_nodes' => Array[Stdlib::Host, 1],
'cluster_dns' => Array[Stdlib::IP::Address, 1],
'service_cluster_cidr' => K8s::ClusterCIDR,
'cluster_cidr' => K8s::ClusterCIDR,
'etcd_urls' => Array[Stdlib::HTTPSUrl, 3],
'service_node_port_range' => Array[Stdlib::Port, 2, 2],
'ipv6dualstack' => Boolean,
'infra_pod' => String[1],
'use_cni' => Boolean,
'admission_configuration' => Optional[Array[Hash]],
'admission_plugins' => K8s::AdmissionPlugins,
'cluster_nodes' => Array[Stdlib::Host, 1],
'calico_version' => Calico::CalicoVersion,
# TODO: istio_cni_version should have it's own type, validating available versions
'istio_cni_version' => String[1],
'cni_config' => Hash,
'imagecatalog' => Boolean,
'prometheus' => Optional[K8s::ClusterConfig::Prometheus],
'apparmor_profiles' => Optional[Array[String]],
'audit_policy' => Optional[String],
}]