nlb.tf
1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# NLB Service for EKS
resource "kubernetes_service_v1" "user_management_nlb" {
metadata {
name = "${var.service_name}-nlb"
namespace = var.namespace
labels = {
app = "user-management-app"
service = "nlb"
}
annotations = {
# NLB 配置
"service.beta.kubernetes.io/aws-load-balancer-type" = "external"
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" = "ip"
"service.beta.kubernetes.io/aws-load-balancer-scheme" = "internet-facing"
# 性能优化
"service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled" = "true"
"service.beta.kubernetes.io/aws-load-balancer-attributes" = join(",", [
"load_balancing.cross_zone.enabled=true",
"access_logs.s3.enabled=false"
])
}
}
spec {
selector = {
app = "user-management-app"
}
port {
name = "http"
port = 80
target_port = 8080
protocol = "TCP"
}
type = "LoadBalancer"
}
depends_on = [kubernetes_namespace.user_management]
}
# 确保命名空间存在
resource "kubernetes_namespace" "user_management" {
metadata {
name = var.namespace
labels = {
name = var.namespace
}
}
}
# 获取 NLB 信息
data "aws_lb" "nlb" {
name = regex("^[^-]+", kubernetes_service_v1.user_management_nlb.status.0.load_balancer.0.ingress.0.hostname)
depends_on = [kubernetes_service_v1.user_management_nlb]
}