Skip to content

Commit 48a63cc

Browse files
authored
Merge pull request #263133 from MicrosoftDocs/main
1/12/2024 AM Publish
2 parents 8fd7a3c + 81ada70 commit 48a63cc

File tree

50 files changed

+1106
-916
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1106
-916
lines changed

articles/aks/azure-cni-overlay.md

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Configure Azure CNI Overlay networking in Azure Kubernetes Service (AKS)
3-
description: Learn how to configure Azure CNI Overlay networking in Azure Kubernetes Service (AKS), including deploying an AKS cluster into an existing virtual network and subnet.
3+
description: Learn how to configure Azure CNI Overlay networking in Azure Kubernetes Service (AKS), including deploying an AKS cluster into an existing virtual network and subnets.
44
author: asudbring
55
ms.author: allensu
66
ms.subservice: aks-networking
@@ -17,7 +17,7 @@ With Azure CNI Overlay, the cluster nodes are deployed into an Azure Virtual Net
1717

1818
## Overview of Overlay networking
1919

20-
In Overlay networking, only the Kubernetes cluster nodes are assigned IPs from a subnet. Pods receive IPs from a private CIDR provided at the time of cluster creation. Each node is assigned a `/24` address space carved out from the same CIDR. Extra nodes created when you scale out a cluster automatically receive `/24` address spaces from the same CIDR. Azure CNI assigns IPs to pods from this `/24` space.
20+
In Overlay networking, only the Kubernetes cluster nodes are assigned IPs from subnets. Pods receive IPs from a private CIDR provided at the time of cluster creation. Each node is assigned a `/24` address space carved out from the same CIDR. Extra nodes created when you scale out a cluster automatically receive `/24` address spaces from the same CIDR. Azure CNI assigns IPs to pods from this `/24` space.
2121

2222
A separate routing domain is created in the Azure Networking stack for the pod's private CIDR space, which creates an Overlay network for direct communication between pods. There's no need to provision custom routes on the cluster subnet or use an encapsulation method to tunnel traffic between pods, which provides connectivity performance between pods on par with VMs in a VNet. Workloads running within the pods are not even aware that network address manipulation is happening.
2323

@@ -43,7 +43,7 @@ Like Azure CNI Overlay, Kubenet assigns IP addresses to pods from an address spa
4343

4444
## IP address planning
4545

46-
- **Cluster Nodes**: When setting up your AKS cluster, make sure your VNet subnet has enough room to grow for future scaling. Keep in mind that clusters can't scale across subnets, but you can always add new node pools in another subnet within the same VNet for extra space. A `/24`subnet can fit up to 251 nodes since the first three IP addresses are reserved for management tasks.
46+
- **Cluster Nodes**: When setting up your AKS cluster, make sure your VNet subnets have enough room to grow for future scaling. You can assign each node pool to a dedicated subnet. A `/24`subnet can fit up to 251 nodes since the first three IP addresses are reserved for management tasks.
4747
- **Pods**: The Overlay solution assigns a `/24` address space for pods on every node from the private CIDR that you specify during cluster creation. The `/24` size is fixed and can't be increased or decreased. You can run up to 250 pods on a node. When planning the pod address space, ensure the private CIDR is large enough to provide `/24` address spaces for new nodes to support future cluster expansion.
4848
- When planning IP address space for pods, consider the following factors:
4949
- The same pod CIDR space can be used on multiple independent AKS clusters in the same VNet.
@@ -112,6 +112,25 @@ az aks create -n $clusterName -g $resourceGroup \
112112
--pod-cidr 192.168.0.0/16
113113
```
114114

115+
## Add a new nodepool to a dedicated subnet
116+
117+
After your have created a cluster with Azure CNI Overlay, you can create another nodepool and assign the nodes to a new subnet of the same VNet.
118+
This approach can be usefull if you want to control the ingress or egress IPs of the host from/ towards targets in the same VNET or peered VNets.
119+
120+
```azurecli-interactive
121+
clusterName="myOverlayCluster"
122+
resourceGroup="myResourceGroup"
123+
location="westcentralus"
124+
nodepoolName="newpool1"
125+
subscriptionId=$(az account show --query id -o tsv)
126+
vnetName="yourVnetName"
127+
subnetName="yourNewSubnetName"
128+
subnetResourceId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnetName/subnets/$subnetName"
129+
az aks nodepool add -g $resourceGroup --cluster-name $clusterName \
130+
--name $nodepoolName --node-count 1 \
131+
--mode system --vnet-subnet-id $subnetResourceId
132+
```
133+
115134
## Upgrade an existing cluster to CNI Overlay
116135

117136
> [!NOTE]

articles/aks/open-ai-quickstart.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ Now that the application is deployed, you can deploy the Python-based microservi
229229
memory: 50Mi
230230
limits:
231231
cpu: 30m
232-
memory: 65Mi
232+
memory: 85Mi
233233
---
234234
apiVersion: v1
235235
kind: Service

articles/aks/open-ai-secure-access-quickstart.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ To use Microsoft Entra Workload ID on AKS, you need to make a few changes to the
227227
memory: 50Mi
228228
limits:
229229
cpu: 30m
230-
memory: 65Mi
230+
memory: 85Mi
231231
EOF
232232
```
233233

articles/api-management/api-management-api-import-restrictions.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ Namespaces other than the target aren't preserved on export. While you can impor
254254
### Multiple endpoints
255255
WSDL files can define multiple services and endpoints (ports) by one or more `wsdl:service` and `wsdl:port` elements. However, the API Management gateway is able to import and proxy requests to only a single service and endpoint. If multiple services or endpoints are defined in the WSDL file, identify the target service name and endpoint when importing the API by using the [wsdlSelector](/rest/api/apimanagement/apis/create-or-update#wsdlselector) property.
256256

257+
> [!TIP]
258+
> If you want to load-balance requests across multiple services and endpoints, consider configuring a [load-balanced backend pool](backends.md#load-balanced-pool-preview).
259+
257260
### Arrays
258261
SOAP-to-REST transformation supports only wrapped arrays shown in the example below:
259262

articles/api-management/backends.md

Lines changed: 125 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
---
22
title: Azure API Management backends | Microsoft Docs
3-
description: Learn about custom backends in API Management
3+
description: Learn about custom backends in Azure API Management
44
services: api-management
55
documentationcenter: ''
66
author: dlepow
77
editor: ''
88

99
ms.service: api-management
1010
ms.topic: article
11-
ms.date: 08/16/2023
11+
ms.date: 01/09/2024
1212
ms.author: danlep
1313
ms.custom:
1414
---
@@ -26,9 +26,13 @@ API Management also supports using other Azure resources as an API backend, such
2626
* A [Service Fabric cluster](how-to-configure-service-fabric-backend.md).
2727
* A custom service.
2828

29-
API Management supports custom backends so you can manage the backend services of your API. Use custom backends, for example, to authorize the credentials of requests to the backend service. Configure and manage custom backends in the Azure portal, or using Azure APIs or tools.
29+
API Management supports custom backends so you can manage the backend services of your API. Use custom backends for one or more of the following:
3030

31-
After creating a backend, you can reference the backend in your APIs. Use the [`set-backend-service`](set-backend-service-policy.md) policy to direct an incoming API request to the custom backend. If you already configured a backend web service for an API, you can use the `set-backend-service` policy to redirect the request to a custom backend instead of the default backend web service configured for that API.
31+
* Authorize the credentials of requests to the backend service
32+
* Protect your backend from too many requests
33+
* Route or load-balance requests to multiple backends
34+
35+
Configure and manage custom backends in the Azure portal, or using Azure APIs or tools.
3236

3337
## Benefits of backends
3438

@@ -38,6 +42,43 @@ A custom backend has several benefits, including:
3842
* Easily used by configuring a transformation policy on an existing API.
3943
* Takes advantage of API Management functionality to maintain secrets in Azure Key Vault if [named values](api-management-howto-properties.md) are configured for header or query parameter authentication.
4044

45+
## Reference backend using set-backend-service policy
46+
47+
After creating a backend, you can reference the backend in your APIs. Use the [`set-backend-service`](set-backend-service-policy.md) policy to direct an incoming API request to the custom backend. If you already configured a backend web service for an API, you can use the `set-backend-service` policy to redirect the request to a custom backend instead of the default backend web service configured for that API. For example:
48+
49+
```xml
50+
<policies>
51+
<inbound>
52+
<base />
53+
<set-backend-service backend-id="myBackend" />
54+
</inbound>
55+
[...]
56+
<policies/>
57+
```
58+
59+
You can use conditional logic with the `set-backend-service` policy to change the effective backend based on location, gateway that was called, or other expressions.
60+
61+
For example, here is a policy to route traffic to another backend based on the gateway that was called:
62+
63+
```xml
64+
<policies>
65+
<inbound>
66+
<base />
67+
<choose>
68+
<when condition="@(context.Deployment.Gateway.Id == "factory-gateway")">
69+
<set-backend-service backend-id="backend-on-prem" />
70+
</when>
71+
<when condition="@(context.Deployment.Gateway.IsManaged == false)">
72+
<set-backend-service backend-id="self-hosted-backend" />
73+
</when>
74+
<otherwise />
75+
</choose>
76+
</inbound>
77+
[...]
78+
<policies/>
79+
```
80+
81+
4182
## Circuit breaker (preview)
4283

4384
Starting in API version 2023-03-01 preview, API Management exposes a [circuit breaker](/rest/api/apimanagement/current-preview/backend/create-or-update?tabs=HTTP#backendcircuitbreaker) property in the backend resource to protect a backend service from being overwhelmed by too many requests.
@@ -50,16 +91,15 @@ The backend circuit breaker is an implementation of the [circuit breaker pattern
5091

5192
### Example
5293

53-
Use the API Management REST API or a Bicep or ARM template to configure a circuit breaker in a backend. In the following example, the circuit breaker trips when there are three or more `5xx` status codes indicating server errors in a day. The circuit breaker resets after one hour.
94+
Use the API Management [REST API](/rest/api/apimanagement/backend) or a Bicep or ARM template to configure a circuit breaker in a backend. In the following example, the circuit breaker in *myBackend* in the API Management instance *myAPIM* trips when there are three or more `5xx` status codes indicating server errors in a day. The circuit breaker resets after one hour.
5495

5596
#### [Bicep](#tab/bicep)
5697

57-
Include a snippet similar to the following in your Bicep template:
98+
Include a snippet similar to the following in your Bicep template for a backend resource with a circuit breaker:
5899

59100
```bicep
60101
resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-03-01-preview' = {
61-
name: 'myBackend'
62-
parent: resourceSymbolicName
102+
name: 'myAPIM/myBackend'
63103
properties: {
64104
url: 'https://mybackend.com'
65105
protocol: 'http'
@@ -72,7 +112,6 @@ resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-03-01-previ
72112
'Server errors'
73113
]
74114
interval: 'P1D'
75-
percentage: int
76115
statusCodeRanges: [
77116
{
78117
min: 500
@@ -85,20 +124,19 @@ resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-03-01-previ
85124
}
86125
]
87126
}
88-
}
89-
[...]
90-
}
127+
}
128+
}
91129
```
92130

93131
#### [ARM](#tab/arm)
94132

95-
Include a JSON snippet similar to the following in your ARM template:
133+
Include a JSON snippet similar to the following in your ARM template for a backend resource with a circuit breaker:
96134

97135
```JSON
98136
{
99137
"type": "Microsoft.ApiManagement/service/backends",
100138
"apiVersion": "2023-03-01-preview",
101-
"name": "myBackend",
139+
"name": "myAPIM/myBackend",
102140
"properties": {
103141
"url": "https://mybackend.com",
104142
"protocol": "http",
@@ -122,18 +160,88 @@ Include a JSON snippet similar to the following in your ARM template:
122160
]
123161
}
124162
}
125-
[...]
126163
}
127164
```
128165

129166
---
130167

168+
## Load-balanced pool (preview)
169+
170+
Starting in API version 2023-05-01 preview, API Management supports backend *pools*, when you want to implement multiple backends for an API and load-balance requests across those backends. Currently, the backend pool supports round-robin load balancing.
171+
172+
Use a backend pool for scenarios such as the following:
173+
174+
* Spread the load to multiple backends, which may have individual backend circuit breakers.
175+
* Shift the load from one set of backends to another for upgrade (blue-green deployment).
131176

177+
To create a backend pool, set the `type` property of the backend to `pool` and specify a list of backends that make up the pool.
178+
179+
> [!NOTE]
180+
> Currently, you can only include single backends in a backend pool. You can't add a backend of type `pool` to another backend pool.
181+
182+
### Example
183+
184+
Use the API Management [REST API](/rest/api/apimanagement/backend) or a Bicep or ARM template to configure a backend pool. In the following example, the backend *myBackendPool* in the API Management instance *myAPIM* is configured with a backend pool. Example backends in the pool are named *backend-1* and *backend-2*.
185+
186+
#### [Bicep](#tab/bicep)
187+
188+
Include a snippet similar to the following in your Bicep template for a backend resource with a load-balanced pool:
189+
190+
```bicep
191+
resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-05-01-preview' = {
192+
name: 'myAPIM/myBackendPool'
193+
properties: {
194+
description: 'Load balancer for multiple backends'
195+
type: 'Pool'
196+
protocol: 'http'
197+
url: 'http://unused'
198+
pool: {
199+
services: [
200+
{
201+
id: '/backends/backend-1'
202+
}
203+
{
204+
id: '/backends/backend-2'
205+
}
206+
]
207+
}
208+
}
209+
}
210+
```
211+
#### [ARM](#tab/arm)
212+
213+
Include a JSON snippet similar to the following in your ARM template for a backend resource with a load-balanced pool:
214+
215+
```json
216+
{
217+
"type": "Microsoft.ApiManagement/service/backends",
218+
"apiVersion": "2023-05-01-preview",
219+
"name": "myAPIM/myBackendPool",
220+
"properties": {
221+
"description": "Load balancer for multiple backends",
222+
"type": "Pool",
223+
"protocol": "http",
224+
"url": "http://unused",
225+
"pool": {
226+
"services": [
227+
{
228+
"id": "/backends/backend-1"
229+
},
230+
{
231+
"id": "/backends/backend-2"
232+
}
233+
]
234+
}
235+
}
236+
}
237+
```
238+
239+
---
132240
## Limitation
133241

134242
For **Developer** and **Premium** tiers, an API Management instance deployed in an [internal virtual network](api-management-using-with-internal-vnet.md) can throw HTTP 500 `BackendConnectionFailure` errors when the gateway endpoint URL and backend URL are the same. If you encounter this limitation, follow the instructions in the [Self-Chained API Management request limitation in internal virtual network mode](https://techcommunity.microsoft.com/t5/azure-paas-blog/self-chained-apim-request-limitation-in-internal-virtual-network/ba-p/1940417) article in the Tech Community blog.
135243

136-
## Next steps
244+
## Related content
137245

138246
* Set up a [Service Fabric backend](how-to-configure-service-fabric-backend.md) using the Azure portal.
139-
* Backends can also be configured using the API Management [REST API](/rest/api/apimanagement), [Azure PowerShell](/powershell/module/az.apimanagement/new-azapimanagementbackend), or [Azure Resource Manager templates](../service-fabric/service-fabric-tutorial-deploy-api-management.md).
247+

articles/app-service/toc.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
href: quickstart-python.md
2626
- name: Deploy WordPress
2727
href: quickstart-wordpress.md
28-
- name: Deploy Go (experimental)
29-
href: quickstart-golang.md
3028
- name: Deploy a custom container
3129
href: quickstart-custom-container.md
3230
- name: Use ARM template

articles/azure-arc/servers/troubleshoot-agent-onboard.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,13 @@ The following table lists some of the known errors and suggestions on how to tro
104104
|--------|------|---------------|---------|
105105
|Failed to acquire authorization token device flow |`Error occurred while sending request for Device Authorization Code: Post https://login.windows.net/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/devicecode?api-version=1.0: dial tcp 40.126.9.7:443: connect: network is unreachable.` |Can't reach `login.windows.net` endpoint | Run [azcmagent check](azcmagent-check.md) to see if a firewall is blocking access to Microsoft Entra ID. |
106106
|Failed to acquire authorization token device flow |`Error occurred while sending request for Device Authorization Code: Post https://login.windows.net/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/devicecode?api-version=1.0: dial tcp 40.126.9.7:443: connect: network is Forbidden`. |Proxy or firewall is blocking access to `login.windows.net` endpoint. | Run [azcmagent check](azcmagent-check.md) to see if a firewall is blocking access to Microsoft Entra ID.|
107-
|Failed to acquire authorization token device flow |`Error occurred while sending request for Device Authorization Code: Post https://login.windows.net/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/devicecode?api-version=1.0: dial tcp lookup login.windows.net: no such host`. | Group Policy Object *Computer Configuration\ Administrative Templates\ System\ User Profiles\ Delete user profiles older than a specified number of days on system restart* is enabled. | Verify the GPO is enabled and targeting the affected machine. See footnote <sup>[1](#footnote1)</sup> for further details. |
108107
|Failed to acquire authorization token from SPN |`Failed to execute the refresh request. Error = 'Post https://login.windows.net/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/token?api-version=1.0: Forbidden'` |Proxy or firewall is blocking access to `login.windows.net` endpoint. |Run [azcmagent check](azcmagent-check.md) to see if a firewall is blocking access to Microsoft Entra ID. |
109108
|Failed to acquire authorization token from SPN |`Invalid client secret is provided` |Wrong or invalid service principal secret. |Verify the service principal secret. |
110109
| Failed to acquire authorization token from SPN |`Application with identifier 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' wasn't found in the directory 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant` |Incorrect service principal and/or Tenant ID. |Verify the service principal and/or the tenant ID.|
111110
|Get ARM Resource Response |`The client '[email protected]' with object id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not have authorization to perform action 'Microsoft.HybridCompute/machines/read' over scope '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.HybridCompute/machines/MSJC01' or the scope is invalid. If access was recently granted, please refresh your credentials."}}" Status Code=403` |Wrong credentials and/or permissions |Verify you or the service principal is a member of the **Azure Connected Machine Onboarding** role. |
112111
|Failed to AzcmagentConnect ARM resource |`The subscription isn't registered to use namespace 'Microsoft.HybridCompute'` |Azure resource providers aren't registered. |Register the [resource providers](prerequisites.md#azure-resource-providers). |
113112
|Failed to AzcmagentConnect ARM resource |`Get https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.HybridCompute/machines/MSJC01?api-version=2019-03-18-preview: Forbidden` |Proxy server or firewall is blocking access to `management.azure.com` endpoint. | Run [azcmagent check](azcmagent-check.md) to see if a firewall is blocking access to Azure Resource Manager. |
114113

115-
<a name="footnote1"></a><sup>1</sup>If this GPO is enabled and applies to machines with the Connected Machine agent, it deletes the user profile associated with the built-in account specified for the *himds* service. As a result, it also deletes the authentication certificate used to communicate with the service that is cached in the local certificate store for 30 days. Before the 30-day limit, an attempt is made to renew the certificate. To resolve this issue, follow the steps to [disconnect the agent](azcmagent-disconnect.md) and then re-register it with the service running `azcmagent connect`.
116-
117114
## Next steps
118115

119116
If you don't see your problem here or you can't resolve your issue, try one of the following channels for more support:

0 commit comments

Comments
 (0)