-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ipv6 #449
Ipv6 #449
Changes from 5 commits
a48d0a2
ea097d0
93506c6
016359b
0958360
b8529a6
8052bb3
8877ccb
086c92c
6c87793
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,142 @@ | ||||||
--- | ||||||
title: "Announcing inbound IPv6 support in public preview" | ||||||
author_name: "Mads Damgård" | ||||||
toc: true | ||||||
toc_sticky: true | ||||||
--- | ||||||
|
||||||
I am happy to announce the first part of our IPv6 implementation in App Service. Public preview of inbound IPv6 support for multi-tenant apps on Premium SKUs, Functions Consumption, Functions Elastic Premium, and Logic Apps Standard). We'll be adding IPv6 support in four stages. | ||||||
|
||||||
1. IPv6 inbound support (multi-tenant) | ||||||
1. IPv6 non-vnet outbound support (multi-tenant) | ||||||
1. IPv6 vnet outbound support (multi-tenant and App Service Environment v3) | ||||||
1. IPv6 vnet inbound support (App Service Environment v3 - both internal and external) | ||||||
|
||||||
Limitations in public preview: | ||||||
|
||||||
* Only a subset of regions are supported - see the list below. | ||||||
* Basic and Standard tier is currently not supported. | ||||||
* Functions Consumption may temporarily have extra IP addresses in the DNS result. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this referring to the idle backup bug? Those extra IP addresses are not going to be temporary There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps we can clean them up manually (worth discussing offline) |
||||||
* Functions Consumption and Elastic Premium may not remove the IPv4 address in IPv6 mode. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Didn't we determine this was just a DNS caching thing and it goes away? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe this is referring to the issue where old function apps that were created using a secondary flex consumption A record will not have their A record removed in IPv6 mode |
||||||
* The IPv6 address is not visible in the API. | ||||||
* IP-SSL IPv6 bindings are not supported. | ||||||
|
||||||
## How does it work | ||||||
|
||||||
IPv6 inbound requires two things. An IPv6 address that accepts traffic coming in, and a DNS record that returns an IPv6 (AAAA) record. Finally you'll also need a client that can send and receive IPv6 traffic. This means that you may not be able to test it from you local machine since many networks today only support IPv4. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
Our stamps (deployment units) will all have IPv6 addresses added. When these are added, you can start sending traffic to both the IPv4 and IPv6 address. To ensure backwards compatibility, the DNS response for the default host name (_app-name_.azurewebsites.net) will return only the IPv4 address. If you want to change that, we have added a site property called `IPMode` that you can configure to `IPv6` or `IPv4AndIPv6`. If you set it to IPv6 only, your client will need to "understand" IPv6 in order to get a response. Setting it to IPv4 and IPv6 will allow you to have existing clients use IPv4, but allow capable clients to use IPv6. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You can call out that an easy way to test is using |
||||||
|
||||||
If you are using custom domain, you can define your custom DNS records the same way. If you only add an IPv6 (AAAA) record, your clients will need to support IPv6. You can also choose to add both, and finally you can use a CNAME in which case you will use the behavior of `IPMode`. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
Do make a note of some of the limitations and especially behavior of Functions plans. We will be working on fixing those issues before General Availability. Do also note that DNS tends to have multiple layers of caching, and sometimes it can take 5-10 minutes for DNS to return the right records. | ||||||
|
||||||
## Update using CLI | ||||||
|
||||||
To update an app to return IPv6 DNS records: | ||||||
|
||||||
```bash | ||||||
az resource update --name <app-name> --set ipMode="IPv6" -g <resource-group-name> --resource-type "Microsoft.Web/sites" | ||||||
``` | ||||||
|
||||||
## Create or update using Azure Resource Manager templates | ||||||
|
||||||
To deploy a new app or update an existing app using ARM, you can just set the IPMode to either IPv6 or IPv4AndIPv6. In this template, you are also creating an App Service plan. If you use the template below, replace the values prefixed with REPLACE. For the `reserved` property, true = Linux, false = Windows. | ||||||
|
||||||
```javascript | ||||||
{ | ||||||
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", | ||||||
"contentVersion": "1.0.0.0", | ||||||
"variables": { | ||||||
"appName": "REPLACE-APP-NAME", | ||||||
"appIPMode": "IPv6", | ||||||
"appServicePlanName": "REPLACE-PLAN-NAME", | ||||||
"appServicePlanSize": "P1v3", | ||||||
"appServicePlanInstanceCount": 1, | ||||||
"location": "[resourceGroup().location]" | ||||||
}, | ||||||
"resources": [ | ||||||
{ | ||||||
"name": "[variables('appServicePlanName')]", | ||||||
"type": "Microsoft.Web/serverfarms", | ||||||
"apiVersion": "2021-03-01", | ||||||
"location": "[variables('location')]", | ||||||
"properties": { | ||||||
"reserved": false | ||||||
}, | ||||||
"sku": { | ||||||
"name": "[variables('appServicePlanSize')]", | ||||||
"capacity": "[variables('appServicePlanInstanceCount')]" | ||||||
} | ||||||
}, | ||||||
{ | ||||||
"name": "[variables('appName')]", | ||||||
"type": "Microsoft.Web/sites", | ||||||
"apiVersion": "2021-03-01", | ||||||
"location": "[variables('location')]", | ||||||
"dependsOn": [ | ||||||
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]" | ||||||
], | ||||||
"properties": { | ||||||
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]", | ||||||
"httpsOnly": true, | ||||||
"ipMode": "[variables('appIPMode')]" | ||||||
} | ||||||
} | ||||||
] | ||||||
} | ||||||
``` | ||||||
|
||||||
## Supported regions | ||||||
|
||||||
This is the current list of supported regions in preview. | ||||||
|
||||||
| Region | IPv6 supported | | ||||||
| -------------------- | :-------------------: | | ||||||
| Australia Central | :heavy_check_mark: | | ||||||
| Australia Central 2 | :heavy_check_mark: | | ||||||
| Australia East | | | ||||||
| Australia Southeast | :heavy_check_mark: | | ||||||
| Brazil South | | | ||||||
| Brazil Southeast | :heavy_check_mark: | | ||||||
| Canada Central | :heavy_check_mark: | | ||||||
| Canada East | :heavy_check_mark: | | ||||||
| Central India | :heavy_check_mark: | | ||||||
| Central US | :heavy_check_mark: | | ||||||
| East Asia | | | ||||||
| East US | | | ||||||
| East US 2 | | | ||||||
| France Central | | | ||||||
| France South | :heavy_check_mark: | | ||||||
| Germany North | :heavy_check_mark: | | ||||||
| Germany West Central | | | ||||||
| Italy North | :heavy_check_mark: | | ||||||
| Japan East | :heavy_check_mark: | | ||||||
| Japan West | :heavy_check_mark: | | ||||||
| Jio India West | | | ||||||
| Korea Central | :heavy_check_mark: | | ||||||
| Korea South | :heavy_check_mark: | | ||||||
| North Central US | | | ||||||
| North Europe | | | ||||||
| Norway East | :heavy_check_mark: | | ||||||
| Norway West | :heavy_check_mark: | | ||||||
| Poland Central | :heavy_check_mark: | | ||||||
| Qatar Central | :heavy_check_mark: | | ||||||
| South Africa North | | | ||||||
| South Africa West | :heavy_check_mark: | | ||||||
| South Central US | | | ||||||
| South India | | | ||||||
| Southeast Asia | | | ||||||
| Sweden Central | | | ||||||
| Switzerland North | :heavy_check_mark: | | ||||||
| Switzerland West | :heavy_check_mark: | | ||||||
| UAE Central | :heavy_check_mark: | | ||||||
| UAE North | :heavy_check_mark: | | ||||||
| UK South | | | ||||||
| UK West | :heavy_check_mark: | | ||||||
| West Central US | | | ||||||
| West Europe | | | ||||||
| West India | | | ||||||
| West US | :heavy_check_mark: | | ||||||
| West US 2 | | | ||||||
| West US 3 | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Has the ASE team confirmed any level of support? We are so far not claiming anything works on ASE
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am also the ASE team :-) and driving the dialog with swift on supporting IPv6. Message is that they should have swift v2 ready by Oct and we can start implementing then - great risk of delays and no idea how long our implementation will take so a careful guess is mid-CY25. The list is also to say that it is not currently supported, but will be coming. I'll see if I can make it more clear.