我一直在使用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。