terraform - Terraform AKS 和对 node_resource_group 的引用
问题描述
所以我正在尝试使用 Terraform 创建一个应用程序网关以用作 AGIC。我希望将资源放在与节点相同的资源组中,这是自动创建的。
AKS
# Create aks cluster
# A new resource group will be auto created for node_resource_group
resource "azurerm_kubernetes_cluster" "aks" {
name = "${var.RESOURCE_GRP_NAME}-AKS"
location = var.LOCATION
resource_group_name = azurerm_resource_group.k8s_resource_grp.name
dns_prefix = "${var.RESOURCE_GRP_NAME}-AKS"
node_resource_group = "${var.RESOURCE_GRP_NAME}-INF"
kubernetes_version = var.KUBERNETES.KubernetesVersion
api_server_authorized_ip_ranges = var.KUBERNETES_ALLOWED_IP_RANGES
tags = var.TAGS
default_node_pool {
name = "default"
type = "VirtualMachineScaleSets"
node_count = var.KUBERNETES.NodeCount
availability_zones = var.KUBERNETES.AvailabilityZones
vm_size = var.KUBERNETES.NodeVmSize
enable_auto_scaling = var.KUBERNETES.AutoScaleBool
os_disk_size_gb = var.KUBERNETES.OSDiskSize
max_pods = var.KUBERNETES.MaxPods
node_labels = var.KUBERNETES.Labels
node_taints = var.KUBERNETES.Taints
min_count = var.KUBERNETES.AutoScaleMinCount
max_count = var.KUBERNETES.AutoScaleMaxCount
}
identity {
type = "SystemAssigned"
}
role_based_access_control {
enabled = true
azure_active_directory {
managed = true
admin_group_object_ids = var.KUBERNETES.AdminGroupObjectIds
}
}
addon_profile {
oms_agent {
enabled = true
log_analytics_workspace_id = azurerm_log_analytics_workspace.log_analytics_workspace.id
}
kube_dashboard {
enabled = false
}
azure_policy {
enabled = true
}
}
network_profile {
load_balancer_sku = "standard"
outbound_type = "loadBalancer"
network_plugin = "azure"
network_policy = "azure"
dns_service_ip = "10.0.0.10"
docker_bridge_cidr = "172.17.0.1/16"
service_cidr = "10.0.0.0/16"
}
}
只是尝试这样的事情:
resource "azurerm_virtual_network" "aks_vnet" {
name = "vnet"
location = var.LOCATION
resource_group_name = "${var.RESOURCE_GRP_NAME}-INF"
address_space = ["10.0.0.0/8"]
tags = var.TAGS
depends_on = [azurerm_kubernetes_cluster.aks]
}
退货Error: Cycle: azurerm_virtual_network.aks_vnet, azurerm_subnet.pods_subnet, azurerm_kubernetes_cluster.aks
为什么不能azurerm_kubernetes_cluster
用在depends_on
?
我还尝试引用将创建的资源组,例如:
resource "azurerm_virtual_network" "aks_vnet" {
name = "vnet"
location = var.LOCATION
resource_group_name = azurerm_kubernetes_cluster.aks.node_resource_group
address_space = ["10.0.0.0/8"]
tags = var.TAGS
}
这给了我Error: Cycle: azurerm_kubernetes_cluster.aks, azurerm_virtual_network.aks_vnet, azurerm_subnet.pods_subnet
为什么会这样?我不能引用里面的任何东西azurerm_kubernetes_cluster
。
解决方案
简短的回答:你不能。至少不是以简单和推荐的方式。
可以将您的 VNet 放在该资源组中,但如果您也想将它用于 AKS,则不能。根据您的错误消息,我希望您在像(in )azurerm_subnet.pods_subnet
这样的 AKS 设置中使用它,这确实会产生循环依赖。vnet_subnet_id = azurerm_subnet.pods_subnet.id
default_node_pool
可以导入托管 VNet(当您未vnet_subnet_id
在此 VNet for AGIC 中指定和添加子网时为 AKS 创建,但我不建议这样做。
推荐阅读
- jquery - Symfony:使用 ajax 更新值
- python - django application field loaded from already created database and not initialized from the django code
- oauth-2.0 - 是获取 Google Docs OAuth 2.0 的任何方式。访问令牌,存在时间超过 3600 秒?
- php - PHP 工作,然后停止
- python - 使用 python matplotlib 用线条绘制非连续数据
- python - 如何为循环中的每个按钮分配一个单独的值?
- python - np.fromfunction 出现“数组的真值不明确”错误
- javascript - 有没有办法用同一个按钮(都是 onclick)激活 .cs 函数和 javascript 函数?
- winforms - Win2D 与 winfroms
- in-app-purchase - 无法更改 IAP(AppStore)的“已清除销售”