如何使用Terraform为Kubernetes入口分配静态ip地址?



我一直在使用kubernetes入口配置文件来分配由GCP创建的静态外部ip地址。入口和部署由GKE管理。

ingress.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: test-address
spec:
backend:
serviceName: test-service
servicePort: 80

使用这个yaml文件,已经成功地将创建的静态ip地址附加到入口。

在"VPC网络中的外部IP地址"菜单中,该IP地址被转发规则使用。

Name External Address Region Type Version In use by

test-address 12.34.56.78 asia-northeast2 Static IPv4 Forwarding rule k8s2-ab-blablablabla

然而,最近我试图测试Terraform以部署基础设施到GCP,并且我制作了一个与上述ingress.yaml完全相同的Terraform配置文件。

ingress.tf

resource "kubernetes_ingress" "test_ingress" {
metadata {
name = "test-ingress"
annotations = {
"kubernetes.io/ingress.global-static-ip-name" = "test-address"
}
}
spec {
backend {
service_name = test-service
service_port = "80"
}
}
}

将此配置应用于GCP后,ingress创建成功,但ip地址没有附加到ingress上。

在GCP的入口详细信息中,出现错误消息

Error syncing to GCP: error running load balancer syncing routine: loadbalancer blablablablabla does not exist: the given static IP name test-address doesn't translate to an existing static IP.

在"VPC网络中的外部IP地址"菜单中,"In use by"处的IP地址行显示为"None"。

这里有什么问题?我是不是错过了什么?

正如@MattBrowne在评论中所说,需要是全球IP而不是区域IP。

最新更新