gpt4 book ai didi

azure - 使用 terraform 销毁资源时出现 ApplicationGatewaySubnetInboundTrafficBlockedByNetworkSecurityGroup 错误

转载 作者:行者123 更新时间:2023-12-03 06:51:21 34 4
gpt4 key购买 nike

我正在使用 terraform 创建 Azure 基础设施。我能够在网关子网中创建 AppGateway。 AppGateway 需要 NSG 规则才能对端口 65200 - 65535 进行所有访问,我已添加 NSG。我能够与 AppGateway 后面的应用程序进行通信。但是当我尝试破坏完整的设置时,我的 Jenkins 管道失败了,它说 -

Error: Deleting Security Rule: (Name "AllowGatewayManagerInbound" / Network Security Group 
Name "gateway" / Resource Group "primary"): network.SecurityRulesClient#Delete: Failure
sending request: StatusCode=400 -- Original Error:
Code="ApplicationGatewaySubnetInboundTrafficBlockedByNetworkSecurityGroup" Message="Network
security group /subscriptions/****/resourceGroups/primary/providers/Microsoft.Network/networkSecurityGroups
/gateway blocks incoming internet traffic on ports 65200 - 65535 to subnet
/subscriptions/****/resourceGroups/primary/providers/Microsoft.Network/virtualNetworks/primary/subnets/gateway,
associated with Application Gateway subscriptions/****/resourceGroups/primary/providers/Microsoft.Network/applicationGateways/primary-centralus.
This is not permitted for Application Gateways that have V2 Sku." Details=[]

用于创建子网、NSG 和创建 AppGateway 的 Terraform 代码。

   resource "azurerm_network_security_group" "gateway" {
name = "gateway"
location = var.location
resource_group_name = azurerm_resource_group.app.name
tags = var.tags
}

resource "azurerm_network_security_rule" "gateway_allow_gateway_manager_https_inbound" {
name = "AllowGatewayManagerInbound"
description = "Allow Azure application GatewayManager on management ports"
resource_group_name = azurerm_network_security_group.gateway.resource_group_name
network_security_group_name = azurerm_network_security_group.gateway.name
priority = 2510
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
source_address_prefix = "GatewayManager"
destination_port_range = "65200-65535"
destination_address_prefix = "*"
}


module "app_gateway" {
source = "../../modules/app_gateway"
name = "${azurerm_resource_group.app.name}-${var.location}"
location = azurerm_resource_group.app.location
resource_group_name = azurerm_resource_group.app.name
vnet_subnet_id = azurerm_subnet.gateway.id
app_public_dns_zone = local.app_public_dns_zone
a_record_domain_name = local.a_record_subdomain
key_vault = local.key_vault
ssl_certificates = local.ssl_certificates
env = local.suffix
tags = var.tags
depends_on = [
azurerm_network_security_group.gateway
]
}

我在 AppGateway 和 NSG 之间添加了 depends_on 关系,因为 AppGateway 依赖于 NSG。我需要帮助来使用 terraform 销毁这些资源。

最佳答案

• 通过您使用的 terraform 代码执行的“销毁”任务失败,因为无法通过 NSG 与 Azure 资源(即本例中的应用程序网关)建立来自 Jenkins 管道的入站连接,因为 NSG阻止 Jenkins 管道访问端口 65200 – 65535 上的 Azure 资源。

因此,由于您已在“网关”子网中部署了“应用程序网关”,并且您已允许通过 NSG 到部署在应用程序网关后面的应用程序

• 因此,请确保该允许规则的优先级设置高于同一类别的拒绝规则。此外,允许应用程序网关 v2 SKU 使用 TCP 端口 65200 - 65535,目标子网为“Any”,源为“GatewayManager”服务标记,以便在 Jenkin 管道和 Azure 资源管理器之间进行通信

请检查并确保 NSG 中的以下规则设置正确:-

a) 无法阻止出站 Internet 连接。 NSG 中的默认出站规则允许 Internet 连接。

b) 不要删除默认的出站规则。

c) 不要创建拒绝任何出站连接的其他出站规则。

d) 必须允许来自目标子网为 Any 的“AzureLoadBalancer”标记的流量。

最后,检查上述所有规则和配置的优先级,如果入站规则的优先级设置高于拒绝规则,则它们将不起作用。请找到以下快照供您引用:-

NSG Rule creation

关于azure - 使用 terraform 销毁资源时出现 ApplicationGatewaySubnetInboundTrafficBlockedByNetworkSecurityGroup 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73621961/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com