mirror of
https://github.com/outbackdingo/typhoon.git
synced 2026-01-28 10:20:41 +00:00
* AWS IPv4 address pricing is quite high compared to other clouds, and an NLB unavoidably uses at least 3. * Unlike Azure's nice outbound through LB options, AWS has only NAT options which are even more costly than IPv4 in budget clusters. Another option is to simply forget about accessing nodes via IPv4 or outbound IPv4 internet access (tradeoff: GitHub is a notable website that only serves via IPv4, so cut ties)
141 lines
3.3 KiB
HCL
141 lines
3.3 KiB
HCL
variable "name" {
|
|
type = string
|
|
description = "Unique name for the worker pool"
|
|
}
|
|
|
|
# AWS
|
|
|
|
variable "vpc_id" {
|
|
type = string
|
|
description = "Must be set to `vpc_id` output by cluster"
|
|
}
|
|
|
|
variable "subnet_ids" {
|
|
type = list(string)
|
|
description = "Must be set to `subnet_ids` output by cluster"
|
|
}
|
|
|
|
variable "security_groups" {
|
|
type = list(string)
|
|
description = "Must be set to `worker_security_groups` output by cluster"
|
|
}
|
|
|
|
# instances
|
|
|
|
variable "worker_count" {
|
|
type = number
|
|
description = "Number of instances"
|
|
default = 1
|
|
}
|
|
|
|
variable "instance_type" {
|
|
type = string
|
|
description = "EC2 instance type"
|
|
default = "t3.small"
|
|
}
|
|
|
|
variable "associate_public_ipv4_address" {
|
|
type = bool
|
|
description = "Associate a public IPv4 address to instances (otherwise, no IPv4 access to instances from the internet and no outbound IPv4 access to the internet)"
|
|
default = true
|
|
}
|
|
|
|
variable "os_image" {
|
|
type = string
|
|
description = "AMI channel for a Container Linux derivative (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 EBS volume in GB"
|
|
default = 30
|
|
}
|
|
|
|
variable "disk_type" {
|
|
type = string
|
|
description = "Type of the EBS volume (e.g. standard, gp2, gp3, io1)"
|
|
default = "gp3"
|
|
}
|
|
|
|
variable "disk_iops" {
|
|
type = number
|
|
description = "IOPS of the EBS volume (required for io1)"
|
|
default = 0
|
|
}
|
|
|
|
variable "spot_price" {
|
|
type = number
|
|
description = "Spot price in USD for worker instances or 0 to use on-demand instances"
|
|
default = 0
|
|
}
|
|
|
|
variable "cpu_credits" {
|
|
type = string
|
|
description = "CPU burst credits mode (if applicable)"
|
|
default = null
|
|
}
|
|
|
|
variable "target_groups" {
|
|
type = list(string)
|
|
description = "Additional target group ARNs to which instances should be added"
|
|
default = []
|
|
}
|
|
|
|
variable "snippets" {
|
|
type = list(string)
|
|
description = "Container Linux Config snippets"
|
|
default = []
|
|
}
|
|
|
|
# configuration
|
|
|
|
variable "kubeconfig" {
|
|
type = string
|
|
description = "Must be set to `kubeconfig` output by cluster"
|
|
}
|
|
|
|
variable "ssh_authorized_key" {
|
|
type = string
|
|
description = "SSH public key for user 'core'"
|
|
}
|
|
|
|
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 "node_labels" {
|
|
type = list(string)
|
|
description = "List of initial node labels"
|
|
default = []
|
|
}
|
|
|
|
variable "node_taints" {
|
|
type = list(string)
|
|
description = "List of initial node taints"
|
|
default = []
|
|
}
|
|
|
|
# unofficial, undocumented, unsupported
|
|
|
|
variable "arch" {
|
|
type = string
|
|
description = "Container architecture (amd64 or arm64)"
|
|
default = "amd64"
|
|
|
|
validation {
|
|
condition = contains(["amd64", "arm64"], var.arch)
|
|
error_message = "The arch must be amd64 or arm64."
|
|
}
|
|
}
|