You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AZ或Terraform为AKS Istio外部网关指定自定义静态IP?

使用自定义静态公网IP配置AKS Istio外部入口网关

前提条件

  • 静态公网IP需与AKS集群处于同一区域,且为标准SKU(Basic SKU不支持绑定到LoadBalancer类型的Service)
  • 若还未创建静态IP,需先完成创建

方式一:Azure CLI实现

步骤1:创建或获取静态公网IP

如果还没有符合要求的静态IP,执行以下命令创建:

az network public-ip create \
  --resource-group myrg \
  --name my-static-ip \
  --sku Standard \
  --allocation-method Static \
  --location eastus  # 替换为你的AKS集群区域

若已有静态IP,获取其资源ID和IP地址:

# 获取资源ID
az network public-ip show \
  --resource-group myrg \
  --name my-static-ip \
  --query id -o tsv

# 获取IP地址
az network public-ip show \
  --resource-group myrg \
  --name my-static-ip \
  --query ipAddress -o tsv

步骤2:配置Istio入口网关使用静态IP

情况A:尚未启用外部入口网关

直接在启用命令中指定静态IP的资源ID:

az aks mesh enable-ingress-gateway \
  --resource-group myrg \
  --name myk8s \
  --ingress-gateway-type external \
  --public-ip-resource-id <你的静态IP资源ID>

情况B:已启用外部入口网关(即你当前的状态)

通过kubectl修改已存在的入口网关Service,绑定静态IP:

kubectl patch service aks-istio-ingressgateway-external \
  -n aks-istio-ingress \
  --patch '{"spec": {"loadBalancerIP": "<你的静态IP地址>"}}'

执行后,等待Service重新绑定IP,可通过以下命令验证:

kubectl get service aks-istio-ingressgateway-external -n aks-istio-ingress

方式二:Terraform实现

步骤1:定义静态公网IP资源

在Terraform配置中添加静态IP资源:

resource "azurerm_public_ip" "istio_ingress" {
  name                = "my-static-ip"
  resource_group_name = azurerm_resource_group.myrg.name
  location            = azurerm_resource_group.myrg.location
  allocation_method   = "Static"
  sku                 = "Standard"
}

步骤2:配置AKS Istio Add-on及入口网关

在AKS资源的Istio配置中,启用外部入口网关并指定静态IP:

resource "azurerm_kubernetes_cluster" "myk8s" {
  name                = "myk8s"
  resource_group_name = azurerm_resource_group.myrg.name
  location            = azurerm_resource_group.myrg.location
  # 其他AKS基础配置(如节点池、身份认证等)...

  addon_profile {
    istio {
      enabled = true

      ingress_gateway {
        name = "external"
        type = "External"
        public_ip_resource_id = azurerm_public_ip.istio_ingress.id
      }
    }
  }
}

步骤3:应用Terraform配置

执行初始化、计划和应用命令:

terraform init
terraform plan
terraform apply

如果是已创建的AKS集群和Istio网关,可通过Terraform修改Service资源绑定静态IP:

resource "kubernetes_service" "istio_ingress" {
  metadata {
    name      = "aks-istio-ingressgateway-external"
    namespace = "aks-istio-ingress"
  }

  spec {
    type             = "LoadBalancer"
    load_balancer_ip = azurerm_public_ip.istio_ingress.ip_address
    # 保留原有Service的端口、选择器等配置...
  }
}

内容的提问来源于stack exchange,提问作者briconaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:52:24