kubernetes - 如何使用 Terraform 为 Kubernetes 入口分配静态 IP 地址?
问题描述
我一直在使用 kubernetes 入口配置文件来分配 GCP 创建的静态外部 IP 地址。入口和部署由 GKE 管理。
入口.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 配置文件。
入口.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 后,入口已成功创建,但 IP 地址未附加到入口。
在 GCP 的 Ingress 详细信息中,消息出现错误
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 地址上,IP 地址行In use by
显示None
。
这里有什么问题?我是否错过了 Terraform 的某些内容?
解决方案
正如@MattBrowne 在评论中所说,需要是全球 IP 而不是区域性的。这也为我解决了。
推荐阅读
- wix - WixToolset 3.11 Util:PermissionEx 创建文件夹错误
- grep - 提取具有字符串和可变数字模式的行
- java - Java - 如何过滤二维字符串数组
- linux - 不同蓝牙协议的多重广告(pybluez)
- python-3.x - py4j.protocol.Py4JJavaError: 调用 z:org.apache.spark.api.python.PythonRDD.runJob 时出错
- c# - 定位游戏对象以始终保持在屏幕中心
- wordpress - WP Customizer 主题设置在 wp 数据库还原/迁移后消失
- postgresql - “查询没有结果数据的目的地”错误,即使在函数中返回
- javascript - Java ArrayList 到 javascript
- python - 基于相关 M2M 字段的排序查询集