0
votes

I am trying to follow this design by Microsoft to securely connect an Azure App Service to MySQL Database. https://docs.microsoft.com/en-us/azure/architecture/example-scenario/private-web-app/private-web-app#architecture

I have:

  • VNet (Address Space 10.1.0.0/16)
    • Subnet - 'app_subnet' 10.1.2.0/24 (Service Endpoint(Microsoft.Web))
    • Subnet - 'mysql_subnet' 10.1.1.0/24
  • App Service (Linux, Dotnet Core App)
    • Connected to Vnet Subnet 'app_subnet'
    • AppSettings:
      • WEBSITE_DNS_SERVER = 168.63.129.16
      • WEBSITE_VNET_ROUTE_ALL = 1
  • Private Endpoint (MySQLEndPoint)
    • private DNS privatelink-mysql-database-azure-com ZONE privatelink.mysql.database.azure.com
    • Subnet 'mysql_subnet'
  • MySQL Database
    • Private Endpoint 'MySQLEndPoint'

*Anything missing tell me and I can add it

Running the App to connect gets a Connection Timeout.

I have gone into the Kudu BASH and ran:
ping -c 3 .mysql.database.azure.com
Got response:
PING .privatelink.mysql.database.azure.com (10.1.1.4) 56(84) bytes of data.

I have also got the credentials down and tested them locally, which I can connect to the DB with my IP whitelisted.

I can't see/think of anything else to test/try.

1

1 Answers

0
votes

I found out the issue was the Private Link name needs to be valid from this list: https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-dns

As I was using Terraform, I assumed the name property was just a friendly name. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_dns_zone