An Azure service that provides private connectivity from a virtual network to Azure platform as a service, customer-owned, or Microsoft partner services.
What you are seeing does not look like a healthy, fully provisioned Application Gateway Private Link configuration.
For question 1:
Microsoft's current Application Gateway Private Link documentation says the dedicated Private Link subnet is used specifically for Private Link IP configurations, and that at least one IP address must be configured. Only dynamic allocation is supported.
The current ARM schema for ApplicationGatewayPrivateLinkIpConfigurationProperties also exposes:
- privateIPAddress
- privateIPAllocationMethod
- primary
- subnet
So I would expect a successfully provisioned Private Link configuration to have an IP configuration associated with the dedicated subnet, with a dynamically assigned private IP.
A configuration showing provisioningState = Succeeded while:
- privateIPAddress is null
- primary is null
- the dedicated subnet has no ipConfiguration reference
- and Private Endpoint connections can be approved but no traffic reaches the gateway
is strong evidence that the Private Link data path has not actually been provisioned correctly.
For question 2:
I would not use the absence of a normal Microsoft.Network/privateLinkServices resource from a resource list as the primary health test.
Microsoft's Azure Front Door documentation specifically tells you to construct the Application Gateway Private Link Service resource ID in this form:
/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/privateLinkServices/e41f87a2{applicationGatewayName}_{privateLinkConfigName}
The documentation also notes that Application Gateway Private Link does not expose the normal Private Link Service alias and must be referenced through its resource URI.
That suggests this integration should not necessarily be treated like a customer-created standalone Private Link Service resource.
The missing IP configuration is the more significant symptom.
For question 3:
I would verify the documented prerequisites before treating this as a backend fault:
- Confirm an active listener is actually using the frontend IP configuration that the Private Link configuration is attached to.
Microsoft explicitly says the listener must already be actively configured against the target frontend before creating the Private Link configuration.
- Confirm the Private Link subnet:
- is separate from the Application Gateway subnet
- has privateLinkServiceNetworkPolicies disabled
- has sufficient address space
- has no conflicting delegation/configuration
- Confirm dynamic allocation is being used. Static allocation is not supported.
- Check the combined Application Gateway name plus Private Link configuration name. Microsoft currently documents a 70-character combined limit to avoid deployment failures.
- Use an Application Gateway API version of 2020-03-01 or later.
After those checks, I would remove and recreate the Private Link configuration and then immediately inspect:
az network application-gateway private-link list ...
and:
az network application-gateway private-link ip-config list ...
A healthy result should give you an actual Private Link IP configuration tied to the dedicated subnet rather than null IP configuration properties.
Because you have already recreated the configuration, have approved Private Endpoint connections, and traffic still never reaches the gateway, if the listener and subnet prerequisites above are confirmed I would open an Azure support case.
I would include:
- Application Gateway resource ID
- Private Link configuration resource ID
- correlation/request IDs from the create/update operation
- Activity Log entries
- output of the private-link and ip-config list commands
- subnet resource JSON
- Private Endpoint connection JSON
- exact timestamps
The contradiction between provisioningState = Succeeded and the absence of an allocated Private Link IP is the key evidence I would give support.
References:
https://learn.microsoft.com/azure/application-gateway/private-link-configure
https://learn.microsoft.com/azure/application-gateway/private-link
https://learn.microsoft.com/azure/frontdoor/how-to-enable-private-link-application-gateway