mirror of
https://github.com/puppetmaster/typhoon.git
synced 2024-12-25 16:29:35 +01:00
cf4beeba34
* Cilium (v1.8) was added to Typhoon in v1.18.5 in June 2020 and its become more impressive since then. Its currently the leading CNI provider choice. * Calico has grown complex, has lots of CRDs, masks its management complexity with an operator (which we won't use), doesn't provide multi-arch images, and hasn't been compatible with Kubernetes v1.23 (with ipvs) for several releases. * Both have CNCF conformance quirks (flannel used for conformance), but that's not the main factor in choosing the default
144 lines
3.5 KiB
HCL
144 lines
3.5 KiB
HCL
variable "cluster_name" {
|
|
type = string
|
|
description = "Unique cluster name (prepended to dns_zone)"
|
|
}
|
|
|
|
# Google Cloud
|
|
|
|
variable "region" {
|
|
type = string
|
|
description = "Google Cloud Region (e.g. us-central1, see `gcloud compute regions list`)"
|
|
}
|
|
|
|
variable "dns_zone" {
|
|
type = string
|
|
description = "Google Cloud DNS Zone (e.g. google-cloud.example.com)"
|
|
}
|
|
|
|
variable "dns_zone_name" {
|
|
type = string
|
|
description = "Google Cloud DNS Zone name (e.g. example-zone)"
|
|
}
|
|
|
|
# instances
|
|
|
|
variable "controller_count" {
|
|
type = number
|
|
description = "Number of controllers (i.e. masters)"
|
|
default = 1
|
|
}
|
|
|
|
variable "worker_count" {
|
|
type = number
|
|
description = "Number of workers"
|
|
default = 1
|
|
}
|
|
|
|
variable "controller_type" {
|
|
type = string
|
|
description = "Machine type for controllers (see `gcloud compute machine-types list`)"
|
|
default = "n1-standard-1"
|
|
}
|
|
|
|
variable "worker_type" {
|
|
type = string
|
|
description = "Machine type for controllers (see `gcloud compute machine-types list`)"
|
|
default = "n1-standard-1"
|
|
}
|
|
|
|
variable "os_image" {
|
|
type = string
|
|
description = "Flatcar Linux image for compute instances (flatcar-stable, flatcar-beta, flatcar-alpha)"
|
|
default = "flatcar-stable"
|
|
|
|
validation {
|
|
condition = contains(["flatcar-stable", "flatcar-beta", "flatcar-alpha"], var.os_image)
|
|
error_message = "The os_image must be flatcar-stable, flatcar-beta, or flatcar-alpha."
|
|
}
|
|
}
|
|
|
|
variable "disk_size" {
|
|
type = number
|
|
description = "Size of the disk in GB"
|
|
default = 30
|
|
}
|
|
|
|
variable "worker_preemptible" {
|
|
type = bool
|
|
description = "If enabled, Compute Engine will terminate workers randomly within 24 hours"
|
|
default = false
|
|
}
|
|
|
|
variable "controller_snippets" {
|
|
type = list(string)
|
|
description = "Controller Container Linux Config snippets"
|
|
default = []
|
|
}
|
|
|
|
variable "worker_snippets" {
|
|
type = list(string)
|
|
description = "Worker Container Linux Config snippets"
|
|
default = []
|
|
}
|
|
|
|
# configuration
|
|
|
|
variable "ssh_authorized_key" {
|
|
type = string
|
|
description = "SSH public key for user 'core'"
|
|
}
|
|
|
|
variable "networking" {
|
|
type = string
|
|
description = "Choice of networking provider (flannel, calico, or cilium)"
|
|
default = "cilium"
|
|
}
|
|
|
|
variable "pod_cidr" {
|
|
type = string
|
|
description = "CIDR IPv4 range to assign Kubernetes pods"
|
|
default = "10.2.0.0/16"
|
|
}
|
|
|
|
variable "service_cidr" {
|
|
type = string
|
|
description = <<EOD
|
|
CIDR IPv4 range to assign Kubernetes services.
|
|
The 1st IP will be reserved for kube_apiserver, the 10th IP will be reserved for coredns.
|
|
EOD
|
|
default = "10.3.0.0/16"
|
|
}
|
|
|
|
|
|
variable "enable_reporting" {
|
|
type = bool
|
|
description = "Enable usage or analytics reporting to upstreams (Calico)"
|
|
default = false
|
|
}
|
|
|
|
variable "enable_aggregation" {
|
|
type = bool
|
|
description = "Enable the Kubernetes Aggregation Layer"
|
|
default = true
|
|
}
|
|
|
|
variable "worker_node_labels" {
|
|
type = list(string)
|
|
description = "List of initial worker node labels"
|
|
default = []
|
|
}
|
|
|
|
# unofficial, undocumented, unsupported
|
|
|
|
variable "cluster_domain_suffix" {
|
|
type = string
|
|
description = "Queries for domains with the suffix will be answered by coredns. Default is cluster.local (e.g. foo.default.svc.cluster.local) "
|
|
default = "cluster.local"
|
|
}
|
|
|
|
variable "daemonset_tolerations" {
|
|
type = list(string)
|
|
description = "List of additional taint keys kube-system DaemonSets should tolerate (e.g. ['custom-role', 'gpu-role'])"
|
|
default = []
|
|
}
|