Ger*_*erb 5 kubernetes terraform azure-aks
我正在尝试获取 Azure AKS 中的 nginx 入口控制器负载均衡器 IP。我想我会通过以下方式使用 kubernetes 提供程序:
data "kubernetes_service" "nginx_service" {
metadata {
name = "${local.ingress_name}-ingress-nginx-controller"
namespace = local.ingress_ns
}
depends_on = [helm_release.ingress]
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到 IP 地址,这是我得到的:
nginx_service = [
+ {
+ cluster_ip = "10.0.165.249"
+ external_ips = []
+ external_name = ""
+ external_traffic_policy = "Local"
+ health_check_node_port = 31089
+ load_balancer_ip = ""
+ load_balancer_source_ranges = []
+ port = [
+ {
+ name = "http"
+ node_port = 30784
+ port = 80
+ protocol = "TCP"
+ target_port = "http"
},
+ {
+ name = "https"
+ node_port = 32337
+ port = 443
+ protocol = "TCP"
+ target_port = "https"
},
]
+ publish_not_ready_addresses = false
+ selector = {
+ "app.kubernetes.io/component" = "controller"
+ "app.kubernetes.io/instance" = "nginx-ingress-internal"
+ "app.kubernetes.io/name" = "ingress-nginx"
}
+ session_affinity = "None"
+ type = "LoadBalancer"
},
]
Run Code Online (Sandbox Code Playgroud)
但是,当我通过以下方式下拉服务时,kubectl我可以通过以下方式获取IP地址:
kubectl get svc nginx-ingress-internal-ingress-nginx-controller -n nginx-ingress -o json | jq -r '.status.loadBalancer.ingress[].ip'
10.141.100.158
Run Code Online (Sandbox Code Playgroud)
这是 AKS 的 kubernetes 提供程序的限制吗?如果是这样,其他人使用过什么解决方法?我的最终目标是使用 IP 来配置应用程序网关后端。
我想我可以使用local-exec,但这看起来很糟糕。然而,这可能是我目前唯一的选择。
谢谢,
杰瑞
尽管我强烈建议不要使用 Terraform 在 Kubernetes 内创建资源,但您可以这样做:
使用 Terraform 创建公共 IP -> 使用 Terraform 在 Kubernetes 内创建 ingress-nginx,并传递annotationsTerraformloadBalancerIP资源中的数据。最终清单应如下所示:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/azure-load-balancer-resource-group: myResourceGroup
name: ingress-nginx-controller
spec:
loadBalancerIP: <YOUR_STATIC_IP>
type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)
Terraform 可能看起来像这样:
resource "kubernetes_service" "ingress_nginx" {
metadata {
name = "tingress-nginx-controller"
annotations {
"service.beta.kubernetes.io/azure-load-balancer-resource-group" = "${azurerm_resource_group.YOUR_RG.name}"
}
spec {
selector = {
app = <PLACEHOLDER>
}
port {
port = <PLACEHOLDER>
target_port = <PLACEHOLDER>
}
type = "LoadBalancer"
load_balancer_ip = "${azurerm_public_ip.YOUR_IP.ip_address}"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |