Terraform Azure AKS 内部负载均衡器
Terraform Azure AKS internal load balancer
我通过以下 terraform 语句将 Azure AKS 集群部署到现有 vnet 中。它起作用了,AKS 集群是使用 Azure 负载均衡器和分配给它的 public IP 地址创建的。我只需要使用内部 Azure 负载均衡器进行设置。我如何更改 Terraform 代码以仅获取内部 Azure 负载均衡器?谢谢
resource "azurerm_kubernetes_cluster" "aks" {
name = "${var.tags.department}-${var.tags.stage}-${var.tags.environment}_aks"
location = var.location
resource_group_name = azurerm_resource_group.aksrg.name
dns_prefix = lower("${var.tags.department}-${var.tags.stage}-${var.tags.environment}-aks")
private_link_enabled = true
node_resource_group = "${var.tags.department}-${var.tags.stage}-${var.tags.environment}_aks_nodes_rg"
linux_profile {
admin_username = "testadmin"
ssh_key {
key_data = file("/ssh/id_rsa.pub") #ssh-keygen
}
}
default_node_pool {
name = "default"
vm_size = "Standard_DS1_v2"
enable_auto_scaling = false
enable_node_public_ip = false
node_count = 1
vnet_subnet_id = azurerm_subnet.akssubnet.id
}
network_profile {
network_plugin = "azure"
service_cidr = "172.100.0.0/24"
dns_service_ip = "172.100.0.10"
docker_bridge_cidr = "172.101.0.1/16"
load_balancer_sku = "standard"
}
service_principal {
client_id = azurerm_azuread_service_principal.aks_sp.application_id
client_secret = azurerm_azuread_service_principal_password.aks_sp_pwd.value
}
addon_profile {
kube_dashboard {
enabled = true
}
}
role_based_access_control {
enabled = false
}
}
对于您的问题,您可以看到您是这样设置 AKS 集群的 network_profile:
network_profile {
network_plugin = "azure"
service_cidr = "172.100.0.0/24"
dns_service_ip = "172.100.0.10"
docker_bridge_cidr = "172.101.0.1/16"
load_balancer_sku = "standard"
}
并且你设置属性load_balancer_sku
,它会为你创建一个standard
类型的负载均衡器。而这个属性只能使用值basic
和standard
。因此,似乎在没有负载均衡器的情况下无法创建 AKS 群集。您可以在 Github 中看到 issue。正如它所说,最新的 CLI 也无法帮助您实现这一目标。
如果您对此问题有更多疑问,请告诉我。很高兴能帮您解决问题
这是在 Kubernetes LoadBalancer 服务中使用注解配置的。具体来说,您需要将 service.beta.kubernetes.io/azure-load-balancer-internal: "true"
添加到 LoadBalancer
服务的规范中。
此 public IP 用于出站连接。要拒绝创建此 IP,您需要指定参数 outbound_type = "userDefinedRouting",并为您的网络提供附加路由 table。
我通过以下 terraform 语句将 Azure AKS 集群部署到现有 vnet 中。它起作用了,AKS 集群是使用 Azure 负载均衡器和分配给它的 public IP 地址创建的。我只需要使用内部 Azure 负载均衡器进行设置。我如何更改 Terraform 代码以仅获取内部 Azure 负载均衡器?谢谢
resource "azurerm_kubernetes_cluster" "aks" {
name = "${var.tags.department}-${var.tags.stage}-${var.tags.environment}_aks"
location = var.location
resource_group_name = azurerm_resource_group.aksrg.name
dns_prefix = lower("${var.tags.department}-${var.tags.stage}-${var.tags.environment}-aks")
private_link_enabled = true
node_resource_group = "${var.tags.department}-${var.tags.stage}-${var.tags.environment}_aks_nodes_rg"
linux_profile {
admin_username = "testadmin"
ssh_key {
key_data = file("/ssh/id_rsa.pub") #ssh-keygen
}
}
default_node_pool {
name = "default"
vm_size = "Standard_DS1_v2"
enable_auto_scaling = false
enable_node_public_ip = false
node_count = 1
vnet_subnet_id = azurerm_subnet.akssubnet.id
}
network_profile {
network_plugin = "azure"
service_cidr = "172.100.0.0/24"
dns_service_ip = "172.100.0.10"
docker_bridge_cidr = "172.101.0.1/16"
load_balancer_sku = "standard"
}
service_principal {
client_id = azurerm_azuread_service_principal.aks_sp.application_id
client_secret = azurerm_azuread_service_principal_password.aks_sp_pwd.value
}
addon_profile {
kube_dashboard {
enabled = true
}
}
role_based_access_control {
enabled = false
}
}
对于您的问题,您可以看到您是这样设置 AKS 集群的 network_profile:
network_profile {
network_plugin = "azure"
service_cidr = "172.100.0.0/24"
dns_service_ip = "172.100.0.10"
docker_bridge_cidr = "172.101.0.1/16"
load_balancer_sku = "standard"
}
并且你设置属性load_balancer_sku
,它会为你创建一个standard
类型的负载均衡器。而这个属性只能使用值basic
和standard
。因此,似乎在没有负载均衡器的情况下无法创建 AKS 群集。您可以在 Github 中看到 issue。正如它所说,最新的 CLI 也无法帮助您实现这一目标。
如果您对此问题有更多疑问,请告诉我。很高兴能帮您解决问题
这是在 Kubernetes LoadBalancer 服务中使用注解配置的。具体来说,您需要将 service.beta.kubernetes.io/azure-load-balancer-internal: "true"
添加到 LoadBalancer
服务的规范中。
此 public IP 用于出站连接。要拒绝创建此 IP,您需要指定参数 outbound_type = "userDefinedRouting",并为您的网络提供附加路由 table。