Skip to content

Commit ef5cee6

Browse files
authored
Merge pull request #303899 from jainsabal/local-branch-sabal
AFD/CDN MIgration FAQ added
2 parents 79f29a4 + fa88efb commit ef5cee6

File tree

4 files changed

+247
-0
lines changed

4 files changed

+247
-0
lines changed

articles/frontdoor/TOC.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@
177177
href: ../cdn/cdn-change-provider.md?toc=/azure/frontdoor/toc.json
178178
- name: Custom domain
179179
href: migrate-cdn-to-front-door.md
180+
- name: AFD/CDN Classic migration FAQ
181+
href: migration-faq.md
182+
- name: Post migration Dev-Ops experience
183+
href: post-migration-dev-ops-experience.md
180184
- name: Upgrades
181185
items:
182186
- name: Upgrade from Standard to Premium tier - Portal

articles/frontdoor/migration-faq.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: AFD/CDN Classic Migration FAQ
3+
description: Frequently asked questions about migrating from AFD/CDN Classic to AFD Standard or Premium.
4+
author: jainsabal
5+
ms.author: jainsabal
6+
ms.service: azure-frontdoor
7+
ms.topic: overview
8+
ms.date: 08/06/2025
9+
10+
#CustomerIntent: As a <type of user>, I want <what?> so that <why?>.
11+
---
12+
13+
# AFD and CDN Classic Migration FAQ
14+
15+
This document provides answers to frequently asked questions regarding the migration from Azure Front Door (AFD) Classic and CDN Classic to AFD Standard/Premium.
16+
17+
### Will there be downtime during migration?
18+
19+
No, there is no downtime during the migration. This is a control plane-only migration, meaning traffic delivery is unaffected.
20+
21+
During migration, the classic Azure Front Door (AFD) endpoint mydomain.azurefd.net is created as a dummy custom domain on AFD standard/premium that is CNAMEd to AFD standard/premium endpoint mydomain.randomstring.z01.azurefd.net. It continues to receive traffic until you update the DNS record of AFD custom domain (www.mydomain.com) to mydomain.randomstring.z01.azurefd.net directly. It is highly recommended to change the CNAME from classic endpoint to AFD standard/premium endpoint after verification.
22+
23+
Even in rare cases where the migration fails, traffic delivery continues to work as expected.
24+
25+
There is no rollback support, please reach out to the support team for help if migration fails.
26+
27+
28+
29+
### What should I do after migration?
30+
31+
After migration:
32+
33+
- Verify traffic delivery continues to work.
34+
35+
- Update the DNS CNAME record for your custom domain to point to the AFD Standard/Premium endpoint (exampledomain-hash.z01.azurefd.net) instead of the classic endpoint (exampledomain.azurefd.net for classic AFD or exampledomain.azureedge.net). Wait for the DNS update propagation until DNS TTL expires, depending on how long TTL is configured on DNS provider.
36+
37+
- Verify again that traffic works in the custom domain.
38+
39+
- Once confirmed, delete the pseudo custom domain (i.e., the classic endpoint that was pointing to the AFD Standard/Premium endpoint) from the AFD Standard/Premium profile.
40+
41+
### When I change my DNS CNAME from classic AFD endpoint to AFD standard/premium endpoint, does DNS propagation cause downtime?
42+
43+
No, both classic endpoint and Std/premium endpoints point to the same IP, so the final resolution remains the same before and after DNS propagation.
44+
45+
### When should I delete the classic SKU?
46+
47+
For AFD Classic: After verifying that traffic works and the DNS record has been updated to point to the AFD Standard/Premium endpoint, you can safely delete the classic resource.
48+
49+
For CDN Classic: You do not need to delete the classic resource. Migration is treated as a SKU upgrade, and the classic resource can remain.
50+
51+
### Do I need to update my DevOps pipeline?
52+
53+
Yes. After migration, make sure to update your DevOps pipeline to reflect the new AFD Standard/Premium configuration and endpoints.
54+
55+
## Next step
56+
57+
* Understand the [settings mapping between Azure Front Door tiers](tier-mapping.md).
58+
* Learn how to [migrate from Azure Front Door (classic) to Standard or Premium tier](migrate-tier.md) using the Azure portal.
59+
* Learn how to [migrate from Azure Front Door (classic) to Standard or Premium tier](migrate-tier-powershell.md) using Azure PowerShell.
60+
* Learn how to [migrate from Azure CDN from Microsoft (classic)](migrate-tier.md) to Azure Front Door using the Azure portal.
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
title: Post Migration Dev-Ops Experience
3+
description: Guidance to update Terraform, ARM templates, Bicep, PowerShell, and Azure CLI pipelines after migrating from Azure Front Door (Classic) or CDN Classic to Azure Front Door Standard/Premium.
4+
author: jainsabal
5+
ms.author: jainsabal
6+
ms.service: azure-frontdoor
7+
ms.topic: overview
8+
ms.date: 08/06/2025
9+
---
10+
# Post Migration Dev-Ops Experience
11+
12+
After migrating from Azure Front Door (Classic) or CDN Classic to Azure Front Door Standard/Premium, update your DevOps pipeline scripts to deploy and manage the new Front Door Standard/Premium resources. Use the guidance below for various tools and pipeline types.
13+
14+
## Terraform
15+
16+
### Prerequisites
17+
18+
- Ensure the Terraform CLI is installed. See [Install Terraform](https://developer.hashicorp.com/terraform/tutorials/azure-get-started/install-cli).
19+
- Install the Azure Resource Manager Export extension for Terraform to export existing Azure resources to Terraform templates. See [Overview of Azure Export for Terraform](https://learn.microsoft.com/azure/developer/terraform/azure-export-for-terraform/export-terraform-overview).
20+
21+
### Steps
22+
23+
After migration, all classic AFD resources are migrated to AFD Standard and Premium. Then:
24+
25+
- **Export the new AFD Standard/Premium configuration**: Use Azure’s export tool to generate Terraform configurations for your new Front Door Standard/Premium resources. Follow [Quickstart: Export your first resources using Azure Export for Terraform](https://learn.microsoft.com/azure/developer/terraform/azure-export-for-terraform/export-first-resources?tabs=azure-cli) to export the Front Door Standard/Premium resources into Terraform files.
26+
- **Update Terraform templates in your pipeline**: Replace references to Front Door Classic resources with the exported Standard/Premium configuration.
27+
- For AFD Classic, the Terraform resource is [`azurerm_frontdoor`](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/frontdoor).
28+
- For CDN Classic, use the [`azurerm_cdn_*`](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cdn_endpoint) resources.
29+
- For AFD Standard/Premium (AFDx), use the [`azurerm_cdn_frontdoor_*`](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cdn_frontdoor_profile) resources.
30+
- Check in the updated Terraform code to your pipeline and run plan/apply to start managing the new Front Door via Terraform.
31+
32+
## ARM template
33+
34+
### Steps
35+
36+
After migration, all classic AFD resources are migrated to AFD Standard and Premium.
37+
38+
- **Export ARM templates for Front Door Standard/Premium** using any of the following:
39+
- **Azure portal**: [Export template in Azure portal](../azure-resource-manager/templates/export-template-portal.md).
40+
- **Azure CLI**: [Export template in Azure CLI](../azure-resource-manager/templates/export-template-cli.md).
41+
- **Azure PowerShell**: [Export template in Azure PowerShell](../azure-resource-manager/templates/export-template-powershell.md).
42+
- **Update ARM templates in your pipeline** to use the new Front Door Standard/Premium template instead of the Front Door (Classic) template. In Azure DevOps or GitHub Actions, update the template path and parameters in your deployment step, then deploy the new template.
43+
- **Validate**: Remove or archive references to the classic Front Door template to avoid confusion.
44+
45+
## Bicep
46+
47+
### Prerequisites
48+
49+
- Install the Bicep CLI and tools. See [Set up Bicep development and deployment environments](../azure-resource-manager/bicep/install.md).
50+
51+
### Steps
52+
53+
After migration, all classic AFD resources are migrated to AFD Standard and Premium.
54+
55+
- **Generate a Bicep template for Front Door Standard/Premium** by decompiling an exported ARM template. See [Decompile ARM template JSON to Bicep](../azure-resource-manager/bicep/decompile.md?tabs=azure-cli).
56+
- **Update Bicep files in your pipeline**: Replace Front Door Classic definitions with Standard/Premium. This may include updating resource types such as [`Microsoft.Cdn/profiles`](https://learn.microsoft.com/azure/templates/microsoft.cdn/profiles?pivots=deployment-language-bicep) and child resources (endpoints, routes, etc.).
57+
- **Test** a deployment (for example, `az deployment group create`) to verify provisioning of AFD Standard/Premium.
58+
59+
## PowerShell
60+
61+
### Prerequisites
62+
63+
Make sure you have the latest Azure PowerShell Az modules installed (Az.Cdn module version that supports AFD Standard/Premium). See [Install Azure PowerShell](https://learn.microsoft.com/powershell/azure/install-azps-windows).
64+
65+
### Steps
66+
67+
- **Update PowerShell deployment scripts**: Replace any Front Door (Classic) cmdlets with AFD Standard/Premium cmdlets. For examples, see the [Azure Front Door PowerShell quickstart](create-front-door-powershell.md).
68+
- **Incorporate new configuration and remove old references**: Ensure scripts configure required components (origins, origin groups, routes, rules, etc.). Remove or comment commands that manage Classic Front Door.
69+
- Command group mapping:
70+
- AzFrontDoorCdn commands under the [Az.Cdn module](https://learn.microsoft.com/powershell/module/az.cdn/) are for AFD Standard/Premium.
71+
- AzCdn commands under the [Az.Cdn module](https://learn.microsoft.com/powershell/module/az.cdn/) are for CDN Classic.
72+
- The [Az.FrontDoor module](https://learn.microsoft.com/powershell/module/az.frontdoor/) is for AFD Classic.
73+
- **Test** your script (locally or in a test pipeline) to verify creation or updates to AFD Standard/Premium, then commit changes to your pipeline.
74+
75+
## CLI
76+
77+
### Prerequisites
78+
79+
- Ensure Azure CLI is installed and updated to a version that supports the `afd` command group (for example, 2.63.0 or later). See [Install Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli).
80+
- Log in (`az login`) and set the correct subscription context.
81+
82+
### Steps
83+
84+
- **Update CLI commands in scripts**: Use the Azure Front Door Standard/Premium command group: [`az afd`](https://learn.microsoft.com/cli/azure/afd).
85+
- **Replace or remove Front Door Classic CLI usage**:
86+
- CDN Classic commands: [`az cdn`](https://learn.microsoft.com/cli/azure/cdn)
87+
- AFD Classic commands: [`az network front-door`](https://learn.microsoft.com/cli/azure/network/front-door)
88+
- **Validate** the updated CLI script manually or in a staging pipeline to ensure successful configuration of Front Door Standard/Premium.
89+
90+
## Next step
91+
92+
* For more questions, refer to the [AFD/CDN Classic Migration FAQ](migration-faq.md).
93+
* Understand the [settings mapping between Azure Front Door tiers](tier-mapping.md).
94+
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: 'Connect Azure Front Door Premium to an App Service Origin with Private Link Using Azure PowerShell'
3+
titleSuffix: Azure Private Link
4+
description: Learn how to connect your Azure Front Door Premium to a WebApp privately using Azure PowerShell.
5+
services: frontdoor
6+
author: jainsabal
7+
ms.service: azure-frontdoor
8+
ms.topic: how-to
9+
ms.date: 11/15/2024
10+
ms.author: jainsabal
11+
---
12+
13+
# Connect Azure Front Door Premium to an App Service (Web App) Origin with Private Link Using Azure PowerShell
14+
15+
This article guides you through how to configure Azure Front Door Premium tier to connect to your App Service (Web App) privately using the Azure Private Link service with Azure PowerShell.
16+
17+
## Prerequisites
18+
19+
- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
20+
- Azure PowerShell installed locally or Azure Cloud Shell
21+
- Azure FrontDoor Premium profile, endpoint, and origin group. For more information on how to create an Azure Front Door profile, see [Create a Front Door - PowerShell](../create-front-door-powershell.md).
22+
- Azure App Service (WebApp) instance. For more information on how to create an Azure App Service, see [Create an App Service - PowerShell](../../app-service/quickstart-dotnetcore.md?tabs=net80&pivots=development-environment-ps).
23+
24+
> [!NOTE]
25+
> Private endpoints requires your App Service plan to meet some requirements. For more information, see [Using Private Endpoints for Azure Web App](../../app-service/networking/private-endpoint.md).
26+
> This feature is not supported with App Service Slots
27+
28+
## Enable Private Link to an App Service in Azure Front Door Premium
29+
30+
1. Run [Get-AzResource](/powershell/module/az.resources/get-azresource) to get the resource ID of the App Service to be used as the origin for Azure Front Door
31+
32+
```azurepowershell-interactive
33+
get-AzResource -Name testWebAppAFD
34+
-ResourceGroupName testRG
35+
36+
```
37+
38+
2. Run [New-AzFrontDoorCdnOrigin](/powershell/module/az.cdn/new-azfrontdoorcdnorigin) to add your App Service origin to your origin group.
39+
40+
```azurepowershell-interactive
41+
# Add App Service origin to the Azure Front Door profile with Private Link
42+
$origin1 = New-AzFrontDoorCdnOrigin `
43+
-OriginGroupName default-origin-group `
44+
-OriginName test-origin `
45+
-ProfileName testAFD `
46+
-ResourceGroupName testRG `
47+
-HostName testwebapp.canadacentral-01.azurewebsites.net `
48+
-OriginHostHeader testwebapp.canadacentral-01.azurewebsites.net `
49+
-HttpPort 80 `
50+
-HttpsPort 443 `
51+
-Priority 1 `
52+
-Weight 1000 `
53+
-PrivateLinkId /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Web/sites/testWebAppAFD `
54+
-SharedPrivateLinkResourceGroupId sites `
55+
-SharedPrivateLinkResourcePrivateLinkLocation "Central US" `
56+
-SharedPrivateLinkResourceRequestMessage "testWebAppAFDPL Private Link request" `
57+
58+
```
59+
60+
## Approve Azure Front Door Premium private endpoint connection from App Service
61+
62+
1. Run [Get-AzPrivateEndpointConnection](/powershell/module/az.network/get-azprivateendpointconnection) to list the private endpoint connections for your App Service. Note down the 'Name' of the private endpoint connection available in your App Service, in the first line of your output.
63+
64+
```azurepowershell-interactive
65+
66+
#PrivateLinkResourceId is the resource ID of the WebApp
67+
Get-AzPrivateEndpointConnection -PrivateLinkResourceId '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Web/sites/testWebAppAFD'
68+
69+
```
70+
71+
2. Run [Approve-AzPrivateEndpointConnection](/powershell/module/az.network/approve-azprivateendpointconnection) to approve the private endpoint connection.
72+
73+
```azurepowershell-interactive
74+
75+
Approve-AzPrivateEndpointConnection -Name 00000000-0000-0000-0000-000000000000-00000000-0000-0000-0000-000000000000 -ResourceGroupName testRG -ServiceName testWebAppAFD -PrivateLinkResourceType Microsoft.Web/sites
76+
77+
```
78+
79+
3. Once approved, it takes a few minutes for the connection to fully establish. You can now access your App Service from Azure Front Door Premium. Direct access to the App Service from the public internet gets disabled after private endpoint gets enabled. Run [Get-AzPrivateEndpointConnection](/powershell/module/az.network/get-azprivateendpointconnection) to verify the status of the private endpoint connection.
80+
81+
```azurepowershell-interactive
82+
83+
Get-AzPrivateEndpointConnection -PrivateLinkResourceId '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Web/sites/testWebAppAFD'
84+
85+
```
86+
87+
## Next steps
88+
89+
Learn about [Private Link service with App service](../../app-service/networking/private-endpoint.md).

0 commit comments

Comments
 (0)