Browse Source

Upcloud: Added support for deprecated network field for loadbalancers

pull/11386/head
Fredrik Liv 4 months ago
parent
commit
57f65da9e4
No known key found for this signature in database GPG Key ID: 207869278D64F059
5 changed files with 41 additions and 11 deletions
  1. 1
      contrib/terraform/upcloud/README.md
  2. 1
      contrib/terraform/upcloud/main.tf
  3. 38
      contrib/terraform/upcloud/modules/kubernetes-cluster/main.tf
  4. 5
      contrib/terraform/upcloud/modules/kubernetes-cluster/variables.tf
  5. 7
      contrib/terraform/upcloud/variables.tf

1
contrib/terraform/upcloud/README.md

@ -134,6 +134,7 @@ terraform destroy --var-file cluster-settings.tfvars \
* `end_address`: End of address range to allow
* `loadbalancer_enabled`: Enable managed load balancer
* `loadbalancer_plan`: Plan to use for load balancer *(development|production-small)*
* `loadbalancer_legacy_network`: If the loadbalancer should use the deprecated network field instead of networks blocks. You probably want to have this set to false (default value)
* `loadbalancers`: Ports to load balance and which machines to forward to. Key of this object will be used as the name of the load balancer frontends/backends
* `port`: Port to load balance.
* `target_port`: Port to the backend servers.

1
contrib/terraform/upcloud/main.tf

@ -36,6 +36,7 @@ module "kubernetes" {
loadbalancer_enabled = var.loadbalancer_enabled
loadbalancer_plan = var.loadbalancer_plan
loadbalancer_outbound_proxy_protocol = var.loadbalancer_proxy_protocol ? "v2" : ""
loadbalancer_legacy_network = var.loadbalancer_legacy_network
loadbalancers = var.loadbalancers
router_enable = var.router_enable

38
contrib/terraform/upcloud/modules/kubernetes-cluster/main.tf

@ -549,16 +549,27 @@ resource "upcloud_loadbalancer" "lb" {
name = "${local.resource-prefix}lb"
plan = var.loadbalancer_plan
zone = var.private_cloud ? var.public_zone : var.zone
networks {
name = "Private-Net"
type = "private"
family = "IPv4"
network = upcloud_network.private.id
network = var.loadbalancer_legacy_network ? upcloud_network.private.id : null
dynamic "networks" {
for_each = var.loadbalancer_legacy_network ? [] : [1]
content {
name = "Private-Net"
type = "private"
family = "IPv4"
network = upcloud_network.private.id
}
}
networks {
name = "Public-Net"
type = "public"
family = "IPv4"
dynamic "networks" {
for_each = var.loadbalancer_legacy_network ? [] : [1]
content {
name = "Public-Net"
type = "public"
family = "IPv4"
}
}
lifecycle {
@ -584,8 +595,13 @@ resource "upcloud_loadbalancer_frontend" "lb_frontend" {
mode = "tcp"
port = each.value.port
default_backend_name = upcloud_loadbalancer_backend.lb_backend[each.key].name
networks {
name = "Public-Net"
dynamic "networks" {
for_each = var.loadbalancer_legacy_network ? [] : [1]
content {
name = "Public-Net"
}
}
dynamic "networks" {

5
contrib/terraform/upcloud/modules/kubernetes-cluster/variables.tf

@ -98,6 +98,11 @@ variable "loadbalancer_outbound_proxy_protocol" {
type = string
}
variable "loadbalancer_legacy_network" {
type = bool
default = false
}
variable "loadbalancers" {
description = "Load balancers"

7
contrib/terraform/upcloud/variables.tf

@ -136,6 +136,13 @@ variable "loadbalancer_proxy_protocol" {
default = false
}
variable "loadbalancer_legacy_network" {
description = "If the loadbalancer should use the deprecated network field instead of networks blocks. You probably want to have this set to false"
type = bool
default = false
}
variable "loadbalancers" {
description = "Load balancers"

Loading…
Cancel
Save