Skip to content

Commit 829bf83

Browse files
authored
Merge pull request #223722 from phealy/pahealy/doc-updates
Add AKS features
2 parents 3e6b4ab + db55c4f commit 829bf83

9 files changed

+565
-129
lines changed

articles/aks/TOC.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@
248248
href: use-cvm.md
249249
- name: Use system node pools
250250
href: use-system-pools.md
251+
- name: Use instance-level public IP addresses
252+
href: use-node-public-ips.md
251253
- name: Use WebAssembly System Interface (WASI) node pools
252254
href: use-wasi-node-pools.md
253255
- name: Start/stop node pools
@@ -388,8 +390,10 @@
388390
items:
389391
- name: Restrict and control cluster egress traffic
390392
href: limit-egress-traffic.md
391-
- name: Use a user defined route for egress
393+
- name: Configure outbound type for AKS
392394
href: egress-outboundtype.md
395+
- name: Use a user defined route for egress
396+
href: egress-udr.md
393397
- name: Managed NAT Gateway
394398
href: nat-gateway.md
395399
- name: Use an HTTP proxy

articles/aks/api-server-authorized-ip-ranges.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The *API server authorized IP ranges* feature has the following limitations:
2626

2727
- The *API server authorized IP ranges* feature was moved out of preview in October 2019. For clusters created after the feature was moved out of preview, this feature is only supported on the *Standard* SKU load balancer. Any existing clusters on the *Basic* SKU load balancer with the *API server authorized IP ranges* feature enabled will continue to work as is. However, these clusters cannot be migrated to a *Standard* SKU load balancer. Existing clusters will continue to work if the Kubernetes version and control plane are upgraded.
2828
- The *API server authorized IP ranges* feature isn't supported on private clusters.
29-
- When using this feature with clusters that use [Node Public IP](use-multiple-node-pools.md#assign-a-public-ip-per-node-for-your-node-pools), the node pools using Node Public IP must use public IP prefixes. The public IP prefixes must be added as authorized ranges.
29+
- When using this feature with clusters that use [Node Public IP](use-node-public-ips.md), the node pools using Node Public IP must use public IP prefixes. The public IP prefixes must be added as authorized ranges.
3030

3131
## Overview of API server authorized IP ranges
3232

@@ -38,7 +38,7 @@ For more information about the API server and other cluster components, see [Kub
3838

3939
## Create an AKS cluster with API server authorized IP ranges enabled
4040

41-
Create a cluster using the [az aks create][az-aks-create] and specify the *`--api-server-authorized-ip-ranges`* parameter to provide a list of authorized IP address ranges. These IP address ranges are usually address ranges used by your on-premises networks or public IPs. When you specify a CIDR range, start with the first IP address in the range. For example, *137.117.106.90/29* is a valid range, but make sure you specify the first IP address in the range, such as *137.117.106.88/29*.
41+
Create a cluster using the [`az aks create`][az-aks-create] and specify the *`--api-server-authorized-ip-ranges`* parameter to provide a list of authorized IP address ranges. These IP address ranges are usually address ranges used by your on-premises networks or public IPs. When you specify a CIDR range, start with the first IP address in the range. For example, *137.117.106.90/29* is a valid range, but make sure you specify the first IP address in the range, such as *137.117.106.88/29*.
4242

4343
> [!IMPORTANT]
4444
> By default, your cluster uses the [Standard SKU load balancer][standard-sku-lb] which you can use to configure the outbound gateway. When you enable API server authorized IP ranges during cluster creation, the public IP for your cluster is also allowed by default in addition to the ranges you specify. If you specify *""* or no value for *`--api-server-authorized-ip-ranges`*, API server authorized IP ranges will be disabled. Note that if you're using PowerShell, use *`--api-server-authorized-ip-ranges=""`* (with equals sign) to avoid any parsing issues.
@@ -105,7 +105,7 @@ az aks create \
105105

106106
## Update a cluster's API server authorized IP ranges
107107

108-
To update the API server authorized IP ranges on an existing cluster, use [az aks update][az-aks-update] command and use the *`--api-server-authorized-ip-ranges`*, *`--load-balancer-outbound-ip-prefixes`*, *`--load-balancer-outbound-ips`*, or *`--load-balancer-outbound-ip-prefixes`* parameters.
108+
To update the API server authorized IP ranges on an existing cluster, use [`az aks update`][az-aks-update] command and use the *`--api-server-authorized-ip-ranges`*, *`--load-balancer-outbound-ip-prefixes`*, *`--load-balancer-outbound-ips`*, or *`--load-balancer-outbound-ip-prefixes`* parameters.
109109

110110
The following example updates API server authorized IP ranges on the cluster named *myAKSCluster* in the resource group named *myResourceGroup*. The IP address range to authorize is *73.140.245.0/24*:
111111

@@ -120,7 +120,7 @@ You can also use *0.0.0.0/32* when specifying the *`--api-server-authorized-ip-r
120120

121121
## Disable authorized IP ranges
122122

123-
To disable authorized IP ranges, use [az aks update][az-aks-update] and specify an empty range to disable API server authorized IP ranges. For example:
123+
To disable authorized IP ranges, use [`az aks update`][az-aks-update] and specify an empty range to disable API server authorized IP ranges. For example:
124124

125125
```azurecli-interactive
126126
az aks update \
@@ -137,7 +137,7 @@ az aks update \
137137
138138
## Find existing authorized IP ranges
139139

140-
To find IP ranges that have been authorized, use [az aks show][az-aks-show] and specify the cluster's name and resource group. For example:
140+
To find IP ranges that have been authorized, use [`az aks show`][az-aks-show] and specify the cluster's name and resource group. For example:
141141

142142
```azurecli-interactive
143143
az aks show \

articles/aks/azure-cni-overlay.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,8 @@ Use the traditional VNet option when:
8484

8585
## Limitations with Azure CNI Overlay
8686

87-
The overlay solution has the following limitations today
87+
The overlay solution has the following limitations:
8888

89-
* You can't deploy multiple overlay clusters on the same subnet.
9089
* Overlay can be enabled only for new clusters. Existing (already deployed) clusters can't be configured to use overlay.
9190
* You can't use Application Gateway as an Ingress Controller (AGIC) for an overlay cluster.
9291

articles/aks/configure-azure-cni.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ A minimum value for maximum pods per node is enforced to guarantee space for sys
7777
> [!NOTE]
7878
> The minimum value in the table above is strictly enforced by the AKS service. You can not set a maxPods value lower than the minimum shown as doing so can prevent the cluster from starting.
7979
80-
* **Azure CLI**: Specify the `--max-pods` argument when you deploy a cluster with the [az aks create][az-aks-create] command. The maximum value is 250.
80+
* **Azure CLI**: Specify the `--max-pods` argument when you deploy a cluster with the [`az aks create`][az-aks-create] command. The maximum value is 250.
8181
* **Resource Manager template**: Specify the `maxPods` property in the [ManagedClusterAgentPoolProfile] object when you deploy a cluster with a Resource Manager template. The maximum value is 250.
8282
* **Azure portal**: Change the `Max pods per node` field in the node pool settings when creating a cluster or adding a new node pool.
8383

@@ -123,7 +123,7 @@ $ az network vnet subnet list \
123123
/subscriptions/<guid>/resourceGroups/myVnet/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/default
124124
```
125125

126-
Use the [az aks create][az-aks-create] command with the `--network-plugin azure` argument to create a cluster with advanced networking. Update the `--vnet-subnet-id` value with the subnet ID collected in the previous step:
126+
Use the [`az aks create`][az-aks-create] command with the `--network-plugin azure` argument to create a cluster with advanced networking. Update the `--vnet-subnet-id` value with the subnet ID collected in the previous step:
127127

128128
```azurecli-interactive
129129
az aks create \
@@ -164,7 +164,6 @@ A drawback with the traditional CNI is the exhaustion of pod IP addresses as the
164164
165165
The [prerequisites][prerequisites] already listed for Azure CNI still apply, but there are a few additional limitations:
166166

167-
* Only linux node clusters and node pools are supported.
168167
* AKS Engine and DIY clusters are not supported.
169168
* Azure CLI version `2.37.0` or later.
170169

@@ -248,7 +247,7 @@ az aks nodepool add --cluster-name $clusterName -g $resourceGroup -n newnodepoo
248247
Azure CNI provides the capability to monitor IP subnet usage. To enable IP subnet usage monitoring, follow the steps below:
249248

250249
### Get the YAML file
251-
1. Download or grep the file named container-azm-ms-agentconfig.yaml from [github][github].
250+
1. Download or grep the file named container-azm-ms-agentconfig.yaml from [GitHub][github].
252251
2. Find azure_subnet_ip_usage in integrations. Set `enabled` to `true`.
253252
3. Save the file.
254253

articles/aks/egress-outboundtype.md

Lines changed: 79 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,29 @@
11
---
2-
title: Customize user-defined routes (UDR) in Azure Kubernetes Service (AKS)
3-
description: Learn how to define a custom egress route in Azure Kubernetes Service (AKS)
2+
title: Customize cluster egress with outbound types in Azure Kubernetes Service (AKS)
3+
description: Learn how to configure outbound types in Azure Kubernetes Service (AKS)
44
services: container-service
55
ms.topic: article
66
ms.date: 06/29/2020
7-
7+
ms.author: pahealy
8+
author: phealy
89

910
#Customer intent: As a cluster operator, I want to define my own egress paths with user-defined routes. Since I define this up front I do not want AKS provided load balancer configurations.
1011
---
1112

12-
# Customize cluster egress with a User-Defined Route
13+
# Customize cluster egress with outbound types in Azure Kubernetes Service (AKS)
1314

1415
Egress from an AKS cluster can be customized to fit specific scenarios. By default, AKS will provision a Standard SKU Load Balancer to be set up and used for egress. However, the default setup may not meet the requirements of all scenarios if public IPs are disallowed or additional hops are required for egress.
1516

16-
This article walks through how to customize a cluster's egress route to support custom network scenarios, such as those which disallows public IPs and requires the cluster to sit behind a network virtual appliance (NVA).
17-
18-
## Prerequisites
19-
* Azure CLI version 2.0.81 or greater
20-
* API version of `2020-01-01` or greater
21-
17+
This article covers the various types of outbound connectivity that are available in AKS Clusters.
2218

2319
## Limitations
24-
* OutboundType can only be defined at cluster create time and can't be updated afterwards.
20+
* Outbound type can only be defined at cluster create time and can't be updated afterwards.
21+
* Reconfiguring outbound type is now supported in preview; see below.
2522
* Setting `outboundType` requires AKS clusters with a `vm-set-type` of `VirtualMachineScaleSets` and `load-balancer-sku` of `Standard`.
26-
* Setting `outboundType` to a value of `UDR` requires a user-defined route with valid outbound connectivity for the cluster.
27-
* Setting `outboundType` to a value of `UDR` implies the ingress source IP routed to the load-balancer may **not match** the cluster's outgoing egress destination address.
2823

2924
## Overview of outbound types in AKS
3025

31-
An AKS cluster can be customized with a unique `outboundType` of type `loadBalancer` or `userDefinedRouting`.
26+
An AKS cluster can be configured with three different categories of outbound type: load balancer, NAT gateway, or user-defined routing.
3227

3328
> [!IMPORTANT]
3429
> Outbound type impacts only the egress traffic of your cluster. For more information, see [setting up ingress controllers](ingress-basic.md).
@@ -49,6 +44,19 @@ Below is a network topology deployed in AKS clusters by default, which use an `o
4944

5045
![Diagram shows ingress I P and egress I P, where the ingress I P directs traffic to a load balancer, which directs traffic to and from an internal cluster and other traffic to the egress I P, which directs traffic to the Internet, M C R, Azure required services, and the A K S Control Plane.](media/egress-outboundtype/outboundtype-lb.png)
5146

47+
For more information, see [using a standard load balancer in AKS](load-balancer-standard.md) for more information.
48+
49+
### Outbound type of `managedNatGateway` or `userAssignedNatGateway`
50+
51+
If `managedNatGateway` or `userAssignedNatGateway` are selected for `outboundType`, AKS relies on [Azure Networking NAT gateway](/azure/virtual-network/nat-gateway/manage-nat-gateway) for cluster egress.
52+
53+
- `managedNatGateway` is used when using managed virtual networks, and tells AKS to provision a NAT gateway and attach it to the cluster subnet.
54+
- `userAssignedNatGateway` is used when using bring-your-own virtual networking, and requires that a NAT gateway has been provisioned before cluster creation.
55+
56+
NAT gateway has significantly improved handling of SNAT ports when compared to Standard Load Balancer.
57+
58+
For more information, see [using NAT Gateway with AKS](nat-gateway.md) for more information.
59+
5260
### Outbound type of userDefinedRouting
5361

5462
> [!NOTE]
@@ -58,26 +66,71 @@ If `userDefinedRouting` is set, AKS won't automatically configure egress paths.
5866

5967
The AKS cluster must be deployed into an existing virtual network with a subnet that has been previously configured because when not using standard load balancer (SLB) architecture, you must establish explicit egress. As such, this architecture requires explicitly sending egress traffic to an appliance like a firewall, gateway, proxy or to allow the Network Address Translation (NAT) to be done by a public IP assigned to the standard load balancer or appliance.
6068

61-
#### Load balancer creation with userDefinedRouting
69+
For more information, see [configuring cluster egress via user-defined routing](egress-udr.md) for more information.
6270

63-
AKS clusters with an outbound type of UDR receive a standard load balancer (SLB) only when the first Kubernetes service of type 'loadBalancer' is deployed. The load balancer is configured with a public IP address for *inbound* requests and a backend pool for *inbound* requests. Inbound rules are configured by the Azure cloud provider, but **no outbound public IP address or outbound rules** are configured as a result of having an outbound type of UDR. Your UDR will still be the only source for egress traffic.
71+
## Updating `outboundType` after cluster creation (PREVIEW)
6472

65-
Azure load balancers [don't incur a charge until a rule is placed](https://azure.microsoft.com/pricing/details/load-balancer/).
73+
Changing the outbound type after cluster creation will deploy or remove resources as required to put the cluster into the new egress configuration.
6674

67-
## Deploy a cluster with outbound type of UDR and Azure Firewall
75+
Migration is only supported between `loadBalancer`, `managedNATGateway` (if using a managed virtual network), and `userDefinedNATGateway` (if using a custom virtual network).
6876

69-
To illustrate the application of a cluster with outbound type using a user-defined route, a cluster can be configured on a virtual network with an Azure Firewall on its own subnet. See this example on the [restrict egress traffic with Azure firewall example](limit-egress-traffic.md#restrict-egress-traffic-using-azure-firewall).
77+
> [!WARNING]
78+
> Changing the outbound type on a cluster is disruptive to network connectivity and will result in a change of the cluster's egress IP address. If any firewall rules have been configured to restrict traffic from the cluster, they will need to be updated to match the new egress IP address.
7079
71-
> [!IMPORTANT]
72-
> Outbound type of UDR requires there is a route for 0.0.0.0/0 and next hop destination of NVA (Network Virtual Appliance) in the route table.
73-
> The route table already has a default 0.0.0.0/0 to Internet, without a Public IP to SNAT just adding this route will not provide you egress. AKS will validate that you don't create a 0.0.0.0/0 route pointing to the Internet but instead to NVA or gateway, etc.
74-
> When using an outbound type of UDR, a load balancer public IP address for **inbound requests** is not created unless a service of type *loadbalancer* is configured. A public IP address for **outbound requests** is never created by AKS if an outbound type of UDR is set.
80+
[!INCLUDE [preview features callout](includes/preview/preview-callout.md)]
7581

76-
## Next steps
82+
### Install the aks-preview Azure CLI extension
83+
84+
`aks-preview` version 0.5.113 is required.
85+
86+
To install the `aks-preview` extension, run the following command:
87+
88+
```azurecli
89+
az extension add --name aks-preview
90+
```
7791

78-
See [Azure networking UDR overview](../virtual-network/virtual-networks-udr-overview.md).
92+
Run the following command to update to the latest version of the extension released:
93+
94+
```azurecli
95+
az extension update --name aks-preview
96+
```
97+
98+
### Register the 'AKS-OutBoundTypeMigrationPreview' feature flag
99+
100+
Register the `AKS-OutBoundTypeMigrationPreview` feature flag by using the [az feature register][az-feature-register] command, as shown in the following example:
101+
102+
```azurecli-interactive
103+
az feature register --namespace "Microsoft.ContainerService" --name "AKS-OutBoundTypeMigrationPreview"
104+
```
105+
106+
It takes a few minutes for the status to show *Registered*. Verify the registration status by using the [az feature show][az-feature-show] command:
107+
108+
```azurecli-interactive
109+
az feature show --namespace "Microsoft.ContainerService" --name "AKS-OutBoundTypeMigrationPreview"
110+
```
111+
112+
When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider by using the [az provider register][az-provider-register] command:
113+
114+
```azurecli-interactive
115+
az provider register --namespace Microsoft.ContainerService
116+
```
117+
118+
### Update a cluster to use a new outbound type
119+
120+
Run the following command to change a cluster's outbound configuration:
121+
122+
```azurecli-interactive
123+
az aks update -g <resourceGroup> -n <clusterName> --outbound-type <loadBalancer|managedNATGateway|userAssignedNATGateway>
124+
```
125+
126+
## Next steps
79127

80-
See [how to create, change, or delete a route table](../virtual-network/manage-route-table.md).
128+
- [Configure standard load balancing in an AKS cluster](load-balancer-standard.md)
129+
- [Configure NAT gateway in an AKS cluster](nat-gateway.md)
130+
- [Configure user-defined routing in an AKS cluster](egress-udr.md)
131+
- [NAT gateway documentation](/azure/aks/nat-gateway)
132+
- [Azure networking UDR overview](../virtual-network/virtual-networks-udr-overview.md).
133+
- [Manage route tables](../virtual-network/manage-route-table.md).
81134

82135
<!-- LINKS - internal -->
83136
[az-aks-get-credentials]: /cli/azure/aks#az_aks_get_credentials

0 commit comments

Comments
 (0)