如何使用证书创建hcloud负载均衡器服务



我正在尝试创建一个hcloud(hetzner云(负载均衡器,并通过terraform向其添加https服务。由于某些原因,我无法将证书附加到负载均衡器服务,并且我收到以下错误:

Error: Incorrect attribute value type
on hcloud.tf line 76, in resource "hcloud_load_balancer_service" "web_lb_service":
76:     certificates     = data.hcloud_certificate.lb_cert.id
Inappropriate value for attribute "certificates": list of number required.

我用于负载均衡器服务的地形配置如下:

resource "hcloud_certificate" "domain_cert" {
name = var.domain
private_key = tls_private_key.cert_private_key.private_key_pem
certificate = acme_certificate.certificate.certificate_pem
labels = {
type = "cert"
}
}
resource "hcloud_load_balancer" "web_lb" {
name               = "web_lb"
load_balancer_type = "lb11"
location           = var.location
labels = {
type = "web"
}
dynamic "target" {
for_each = hcloud_server.web
content {
type      = "server"
server_id = target.value["id"]
}
}
algorithm {
type = "round_robin"
}
}
data "hcloud_certificate" "lb_cert" {
id = hcloud_certificate.domain_cert.id
}
resource "hcloud_load_balancer_service" "web_lb_service" {
load_balancer_id = hcloud_load_balancer.web_lb.id
protocol         = "https"
listen_port      = var.https_port
destination_port = var.https_port
health_check {
protocol = var.https_protocol
port     = var.https_port
interval = "10"
timeout  = "10"
http {
path         = "/"
status_codes = ["2??", "3??"]
}
}
http {
certificates     = data.hcloud_certificate.lb_cert.id
}
}
resource "hcloud_load_balancer_network" "web_network" {
load_balancer_id        = hcloud_load_balancer.web_lb.id
subnet_id               = hcloud_network_subnet.hc_private_subnet.id
enable_public_interface = "true"
}

有什么想法吗

谢谢!

br

您需要将certificates作为列表传递,而不是作为单个参数传递。https://registry.terraform.io/providers/hetznercloud/hcloud/latest/docs/resources/load_balancer_service

certificates-(可选,list[int](负载平衡器拥有的证书中的ID列表。

所以这个部分应该看起来像

resource "hcloud_load_balancer_service" "web_lb_service" {
load_balancer_id = hcloud_load_balancer.web_lb.id
protocol         = "https"
listen_port      = var.https_port
destination_port = var.https_port
health_check {
protocol = var.https_protocol
port     = var.https_port
interval = "10"
timeout  = "10"
http {
path         = "/"
status_codes = ["2??", "3??"]
}
}
http {
certificates     = [data.hcloud_certificate.lb_cert.id]
}
}

最新更新