【发布时间】:2021-06-23 17:20:12
【问题描述】:
我使用 terraform 在 AWS 中为我的 K3S 集群配置基础设施。我在端口 80 和 443 上为 NLB 提供了两个侦听器,并带有适当的自签名证书。这行得通。我可以通过 nlb 访问集群中的 HTTP 服务。
resource "tls_private_key" "agents" {
algorithm = "RSA"
}
resource "tls_self_signed_cert" "agents" {
key_algorithm = "RSA"
private_key_pem = tls_private_key.agents.private_key_pem
validity_period_hours = 24
subject {
common_name = "my hostname"
organization = "My org"
}
allowed_uses = [
"key_encipherment",
"digital_signature",
"server_auth"
]
}
resource "aws_acm_certificate" "agents" {
private_key = tls_private_key.agents.private_key_pem
certificate_body = tls_self_signed_cert.agents.cert_pem
}
resource "aws_lb" "agents" {
name = "basic-load-balancer"
load_balancer_type = "network"
subnet_mapping {
subnet_id = aws_subnet.agents.id
allocation_id = aws_eip.agents.id
}
}
resource "aws_lb_listener" "agents_80" {
load_balancer_arn = aws_lb.agents.arn
protocol = "TCP"
port = 80
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.agents_80.arn
}
}
resource "aws_lb_listener" "agents_443" {
load_balancer_arn = aws_lb.agents.arn
protocol = "TLS"
port = 443
certificate_arn = aws_acm_certificate.agents.arn
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.agents_443.arn
}
}
resource "aws_lb_target_group" "agents_80" {
port = 30000
protocol = "TCP"
vpc_id = var.vpc.id
depends_on = [
aws_lb.agents
]
}
resource "aws_lb_target_group" "agents_443" {
port = 30001
protocol = "TCP"
vpc_id = var.vpc.id
depends_on = [
aws_lb.agents
]
}
resource "aws_autoscaling_attachment" "agents_80" {
autoscaling_group_name = aws_autoscaling_group.agents.name
alb_target_group_arn = aws_lb_target_group.agents_80.arn
}
resource "aws_autoscaling_attachment" "agents_443" {
autoscaling_group_name = aws_autoscaling_group.agents.name
alb_target_group_arn = aws_lb_target_group.agents_443.arn
}
这是我的代码的精简版。
我已将入口控制器配置为分别在 NodePorts 30000 和 30001 上侦听 HTTP 和 HTTPS。这也有效。
不起作用的是 NLB 正在终止 TLS,但我需要它来传递。我这样做是为了可以访问 Kubernetes 仪表板(以及其他应用程序),但仪表板需要 https 才能登录,如果 tls 在 nlb 处终止,我将无法提供。
我需要帮助配置 nlb 以进行直通。我已经搜索和搜索,找不到任何示例。如果有人知道如何配置它,最好获取一些 tf 代码,或者只是了解在 AWS 中实现它的适当方法,以便我可以自己在 tf 中实现它。
【问题讨论】:
标签: amazon-web-services terraform tls1.2 nlb