Skip to content

Commit a8d84b6

Browse files
authored
Merge pull request #267485 from MicrosoftDocs/repo_sync_working_branch
Confirm merge from repo_sync_working_branch to main to sync with https://github.com/MicrosoftDocs/azure-docs (branch main)
2 parents e81c2f0 + a89713a commit a8d84b6

10 files changed

+128
-22
lines changed

articles/aks/azure-cni-overview.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ ms.date: 9/13/2023
1515

1616
By default, AKS clusters use [kubenet][kubenet] and create a virtual network and subnet. With *kubenet*, nodes get an IP address from a virtual network subnet. Network address translation (NAT) is then configured on the nodes, and pods receive an IP address "hidden" behind the node IP. This approach reduces the number of IP addresses that you need to reserve in your network space for pods to use.
1717

18-
With [Azure Container Networking Interface (CNI)][cni-networking], every pod gets an IP address from the subnet and can be accessed directly. Systems in the same virtual network as the AKS cluster see the pod IP as the source address for any traffic from the pod. Systems outside the AKS cluster virtual network see the node IP as the source address for any traffic from the pod. These IP addresses must be unique across your network space and must be planned in advance. Each node has a configuration parameter for the maximum number of pods that it supports. The equivalent number of IP addresses per node are then reserved up front for that node. This approach requires more planning, and often leads to IP address exhaustion or the need to rebuild clusters in a larger subnet as your application demands grow.
18+
With [Azure Container Networking Interface (CNI)][cni-networking], every pod gets an IP address from the subnet and can be accessed directly. Systems in the same virtual network as the AKS cluster see the pod IP as the source address for any traffic from the pod. Systems outside the AKS cluster virtual network see the node IP as the source address for any traffic from the pod. These IP addresses must be unique across your network space and must be planned in advance. Each node has a configuration parameter for the maximum number of pods that it supports. The equivalent number of IP addresses per node are then reserved up front for that node. This approach requires more planning, and often leads to IP address exhaustion or the need to rebuild clusters in a larger subnet as your application demands grow.
19+
20+
> [!NOTE]
21+
>
22+
> This article is only introducing traditional Azure CNI. For [Azure CNI Overlay][azure-cni-overlay] and [Azure CNI for dynamic IP allocation][configure-azure-cni-dynamic-ip-allocation], refer to their documentation instead.
1923
2024
## Prerequisites
2125

@@ -120,11 +124,13 @@ Although it's technically possible to specify a service address range within the
120124

121125
* **Can I deploy VMs in my cluster subnet?**
122126

123-
Yes.
127+
Yes. But for [Azure CNI for dynamic IP allocation][configure-azure-cni-dynamic-ip-allocation], the VMs cannot be deployed in pod's subnet.
124128

125129
* **What source IP do external systems see for traffic that originates in an Azure CNI-enabled pod?**
126130

127131
Systems in the same virtual network as the AKS cluster see the pod IP as the source address for any traffic from the pod. Systems outside the AKS cluster virtual network see the node IP as the source address for any traffic from the pod.
132+
133+
But for [Azure CNI for dynamic IP allocation][configure-azure-cni-dynamic-ip-allocation], no matter the connection is inside the same virtual network or cross virtual networks, the pod IP is always the source address for any traffic from the pod. This is because the [Azure CNI for dynamic IP allocation][configure-azure-cni-dynamic-ip-allocation] implements [Microsoft Azure Container Networking][github-azure-container-networking] infrastructure, which gives end-to-end experience. Hence, it eliminates the use of [`ip-masq-agent`][ip-masq-agent], which is still used by traditional Azure CNI.
128134

129135
* **Can I configure per-pod network policies?**
130136

@@ -166,6 +172,8 @@ Learn more about networking in AKS in the following articles:
166172
[cni-networking]: https://github.com/Azure/azure-container-networking/blob/master/docs/cni.md
167173
[kubenet]: concepts-network.md#kubenet-basic-networking
168174
[github]: https://raw.githubusercontent.com/microsoft/Docker-Provider/ci_prod/kubernetes/container-azm-ms-agentconfig.yaml
175+
[github-azure-container-networking]: https://github.com/Azure/azure-container-networking
176+
[ip-masq-agent]: https://kubernetes.io/docs/tasks/administer-cluster/ip-masq-agent/
169177

170178
<!-- LINKS - Internal -->
171179
[az-aks-create]: /cli/azure/aks#az_aks_create
@@ -183,3 +191,5 @@ Learn more about networking in AKS in the following articles:
183191
[network-comparisons]: concepts-network.md#compare-network-models
184192
[system-node-pools]: use-system-pools.md
185193
[prerequisites]: configure-azure-cni.md#prerequisites
194+
[azure-cni-overlay]: azure-cni-overlay.md
195+
[configure-azure-cni-dynamic-ip-allocation]: configure-azure-cni-dynamic-ip-allocation.md

articles/aks/configure-azure-cni-dynamic-ip-allocation.md

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,18 +133,9 @@ Azure CNI provides the capability to monitor IP subnet usage. To enable IP subne
133133

134134
Set the variables for subscription, resource group and cluster. Consider the following as examples:
135135

136-
```azurecli
137-
138-
$s="subscriptionId"
139-
140-
$rg="resourceGroup"
141-
142-
$c="ClusterName"
143-
144-
az account set -s $s
145-
146-
az aks get-credentials -n $c -g $rg
147-
136+
```azurecli-interactive
137+
az account set -s $subscription
138+
az aks get-credentials -n $clusterName -g $resourceGroup
148139
```
149140

150141
### Apply the config

articles/iot-hub-device-update/device-update-agent-check.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
title: Device Update for Azure IoT Hub agent check | Microsoft Docs
33
description: Device Update for IoT Hub uses Agent Check to find and diagnose missing devices.
4-
author: chrisjlin
5-
ms.author: lichris
4+
author: vimeht
5+
ms.author: vimeht
66
ms.date: 10/31/2022
77
ms.topic: how-to
88
ms.service: iot-hub-device-update

articles/iot-hub-device-update/troubleshoot-device-update.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
title: Troubleshoot common Device Update for Azure IoT Hub issues | Microsoft Docs
33
description: This document provides a list of tips and tricks to help remedy many possible issues you may be having with Device Update for IoT Hub.
4-
author: chrisjlin
5-
ms.author: lichris
4+
author: vimeht
5+
ms.author: vimeht
66
ms.date: 9/13/2022
77
ms.topic: troubleshooting
88
ms.service: iot-hub-device-update

articles/search/search-howto-complex-data-types.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,108 @@ To filter on a complex collection field, you can use a **lambda expression** wit
244244
245245
As with top-level simple fields, simple subfields of complex fields can only be included in filters if they have the **filterable** attribute set to `true` in the index definition. For more information, see the [Create Index API reference](/rest/api/searchservice/create-index).
246246

247+
Azure Search has the limitation that the complex objects in the collections across a single document cannot exceed 3000.
248+
249+
Users will encounter the below error during indexing when complex collections exceed the 3000 limit.
250+
251+
“A collection in your document exceeds the maximum elements across all complex collections limit. The document with key '1052' has '4303' objects in collections (JSON arrays). At most '3000' objects are allowed to be in collections across the entire document. Remove objects from collections and try indexing the document again."
252+
253+
In some use cases, we might need to add more than 3000 items to a collection. In those use cases, we can pipe (|) or use any form of delimiter to delimit the values, concatenate them, and store them as a delimited string. There is no limitation on the number of strings stored in an array in Azure Search. Storing these complex values as strings avoids the limitation. The customer needs to validate whether this workaround meets their scenario requirements.
254+
255+
For example, it wouldn't be possible to use complex types if the "searchScope" array below had more than 3000 elements.
256+
257+
```json
258+
259+
"searchScope": [
260+
{
261+
"countryCode": "FRA",
262+
"productCode": 1234,
263+
"categoryCode": "C100"
264+
},
265+
{
266+
"countryCode": "USA",
267+
"productCode": 1235,
268+
"categoryCode": "C200"
269+
}
270+
]
271+
```
272+
273+
Storing these complex values as strings with a delimiter avoids the limitation
274+
275+
```json
276+
"searchScope": [
277+
"|FRA|1234|C100|",
278+
"|FRA|*|*|",
279+
"|*|1234|*|",
280+
"|*|*|C100|",
281+
"|FRA|*|C100|",
282+
"|*|1234|C100|"
283+
]
284+
285+
```
286+
Rather than storing these with wildcards, we can also use a [custom analyzer](index-add-custom-analyzers.md) that splits the word into | to cut down on storage size.
287+
288+
The reason we have stored the values with wildcards instead of just storing them as below
289+
290+
>`|FRA|1234|C100|`
291+
292+
is to cater to search scenarios where the customer might want to search for items that have country France, irrespective of products and categories. Similarly, the customer might need to search to see if the item has product 1234, irrespective of the country or the category.
293+
294+
If we had stored only one entry
295+
296+
>`|FRA|1234|C100|`
297+
298+
without wildcards, if the user wants to filter only on France, we cannot convert the user input to match the "searchScope" array because we don't know what combination of France is present in our "searchScope" array
299+
300+
301+
If the user wants to filter only by country, let's say France. We will take the user input and construct it as a string as below:
302+
303+
>`|FRA|*|*|`
304+
305+
which we can then use to filter in azure search as we search in an array of item values
306+
307+
```csharp
308+
foreach (var filterItem in filterCombinations)
309+
{
310+
var formattedCondition = $"searchScope/any(s: s eq '{filterItem}')";
311+
combFilter.Append(combFilter.Length > 0 ? " or (" + formattedCondition + ")" : "(" + formattedCondition + ")");
312+
}
313+
314+
```
315+
Similarly, if the user searches for France and the 1234 product code, we will take the user input, construct it as a delimited string as below, and match it against our search array.
316+
317+
>`|FRA|1234|*|`
318+
319+
If the user searches for 1234 product code, we will take the user input, construct it as a delimited string as below, and match it against our search array.
320+
321+
>`|*|1234|*|`
322+
323+
If the user searches for the C100 category code, we will take the user input, construct it as a delimited string as below, and match it against our search array.
324+
325+
>`|*|*|C100|`
326+
327+
If the user searches for France and the 1234 product code and C100 category code, we will take the user input, construct it as a delimited string as below, and match it against our search array.
328+
329+
>`|FRA|1234|C100|`
330+
331+
If a user tries to search for countries not present in our list, it will not match the delimited array "searchScope" stored in the search index, and no results will be returned.
332+
For example, a user searches for Canada and product code 1234. The user search would be converted to
333+
334+
>`|CAN|1234|*|`
335+
336+
This will not match any of the entries in the delimited array in our search index.
337+
338+
Only the above design choice requires this wild card entry; if it had been saved as a complex object, we could have simply performed an explicit search as shown below.
339+
340+
```csharp
341+
var countryFilter = $"searchScope/any(ss: search.in(countryCode ,'FRA'))";
342+
var catgFilter = $"searchScope/any(ss: search.in(categoryCode ,'C100'))";
343+
var combinedCountryCategoryFilter = "(" + countryFilter + " and " + catgFilter + ")";
344+
345+
```
346+
We can thus satisfy requirements where we need to search for a combination of values by storing it as a delimited string instead of a complex collection if our complex collections exceed the Azure Search limit. This is one of the workarounds, and the customer needs to validate if this would meet their scenario requirements.
347+
348+
247349
## Next steps
248350

249351
Try the [Hotels data set](https://github.com/Azure-Samples/azure-search-sample-data/tree/master/hotels) in the **Import data** wizard. You need the Azure Cosmos DB connection information provided in the readme to access the data.

articles/virtual-machines/capacity-reservation-associate-vm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ In the request body, include the `capacityReservationGroup` property:
3838
"vmSize": "Standard_D2s_v3"
3939
},
4040
41-
"CapacityReservation":{
41+
"capacityReservation":{
4242
"capacityReservationGroup":{
4343
"id":"subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}"
4444
}

articles/virtual-machines/trusted-launch-faq.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,9 @@ Architecture : x64
357357

358358
---
359359

360+
### How external communication drivers work with Trusted Launch VMs ?
361+
362+
Adding COM ports requires disabling Secure Boot. Hence, COM ports are disabled by default in Trusted Launch VMs.
360363

361364
## Power states
362365

articles/virtual-network/application-security-groups.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Application security groups enable you to configure network security as a natura
1515

1616
:::image type="content" source="./media/security-groups/application-security-groups.png" alt-text="Diagram of Application security groups.":::
1717

18-
In the previous picture, *NIC1* and *NIC2* are members of the *AsgWeb* application security group. *NIC3* is a member of the *AsgLogic* application security group. *NIC4* is a member of the *AsgDb* application security group. Though each network interface (NIC) in this example is a member of only one network security group, a network interface can be a member of multiple application security groups, up to the [Azure limits](../azure-resource-manager/management/azure-subscription-service-limits.md?toc=%2fazure%2fvirtual-network%2ftoc.json#azure-resource-manager-virtual-networking-limits). None of the network interfaces have an associated network security group. *NSG1* is associated to both subnets and contains the following rules:
18+
In the previous picture, *NIC1* and *NIC2* are members of the *AsgWeb* application security group. *NIC3* is a member of the *AsgLogic* application security group. *NIC4* is a member of the *AsgDb* application security group. Though each network interface (NIC) in this example is a member of only one application security group, a network interface can be a member of multiple application security groups, up to the [Azure limits](../azure-resource-manager/management/azure-subscription-service-limits.md?toc=%2fazure%2fvirtual-network%2ftoc.json#azure-resource-manager-virtual-networking-limits). None of the network interfaces have an associated network security group. *NSG1* is associated to both subnets and contains the following rules:
1919

2020
## Allow-HTTP-Inbound-Internet
2121

articles/virtual-network/tutorial-tap-virtual-network-cli.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,13 @@ Read [prerequisites](virtual-network-tap-overview.md#prerequisites) before you c
5555
--out tsv)
5656
```
5757
58-
- Create the virtual network TAP in the *westcentralus* Azure region using the ID of the IP configuration as the destination and an optional port property. The port specifies the destination port on network interface IP configuration where the TAP traffic will be received :
58+
- Create the virtual network TAP in the *westcentralus* Azure region using the ID of the IP configuration as the destination. The traffic mirror destination must allow traffic to port 4789:
5959
6060
```azurecli-interactive
6161
az network vnet tap create \
6262
--resource-group myResourceGroup \
6363
--name myTap \
6464
--destination $IpConfigId \
65-
--port 4789 \
6665
--location westcentralus
6766
```
6867

articles/virtual-network/virtual-network-bandwidth-testing.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ To measure throughput from Linux machines, use [NTTTCP-for-Linux](https://github
156156
- For **Ubuntu**, install `build-essential` and `git`.
157157

158158
```bash
159+
sudo apt-get update
159160
sudo apt-get -y install build-essential
160161
sudo apt-get -y install git
161162
```

0 commit comments

Comments
 (0)