-
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
Merged
Ipv6 #449
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
a48d0a2
Draft
madsd ea097d0
CLI
madsd 93506c6
ready for review
madsd 016359b
update regions
madsd 0958360
Proof read
madsd b8529a6
Falcon feedback
madsd 8052bb3
Adding Brazil South
madsd 8877ccb
quick edits
seligj95 086c92c
GA message
madsd 6c87793
Merge branch 'ipv6' of https://github.com/Azure/AppService into ipv6
madsd File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
--- | ||
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. This announcement: IPv6 inbound support (multi-tenant) | ||
1. In development: IPv6 non-vnet outbound support (multi-tenant) | ||
1. Backlog: IPv6 vnet outbound support (multi-tenant and App Service Environment v3) | ||
1. Backlog: IPv6 vnet inbound support (App Service Environment v3 - both internal and external) | ||
|
||
Limitations in this public preview: | ||
|
||
* Only a subset of regions are supported - see the list below. | ||
* Basic and Standard tier currently does not support changing the `IPMode` property. | ||
* Functions Consumption may have multiple IP addresses in the DNS result. | ||
* Functions Consumption and Elastic Premium may not remove the IPv4 address in IPv6 mode. | ||
* The IPv6 address is not visible in the `inboundIpAddress` or `possibleInboundIpAddresses` properties. | ||
* IP-SSL IPv6 bindings are not supported. | ||
|
||
For GA we will work on including Basic and Standard tier, adding all regions, include the IPv6 addresses in new properties and stabilize the DNS results to not show extra addresses. | ||
|
||
## 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. 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 your local machine since many networks today only support IPv4. | ||
|
||
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. If your client does support IPv6, you can test the IPv6 connection using curl: | ||
|
||
```bash | ||
curl -6 https://<app-name>.azurewebsites.net | ||
``` | ||
|
||
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 to the default hostname of the site in which case you will use the behavior of `IPMode`. | ||
|
||
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 | :heavy_check_mark: | | ||
| 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 | | |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
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 comment
The 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