Skip to content

Commit 055a086

Browse files
Learn Build Service GitHub AppLearn Build Service GitHub App
authored andcommitted
Merging changes synced from https://github.com/MicrosoftDocs/azure-docs-pr (branch live)
2 parents 6a97be0 + 012a6cc commit 055a086

File tree

92 files changed

+1266
-352
lines changed

Some content is hidden

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

92 files changed

+1266
-352
lines changed

articles/aks/kubernetes-service-principal.md

Lines changed: 33 additions & 36 deletions
Large diffs are not rendered by default.

articles/aks/use-multiple-node-pools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ The following limitations apply when you create and manage AKS clusters that sup
3636
## Create an AKS cluster
3737

3838
> [!IMPORTANT]
39-
> If you run a single system node pool for your AKS cluster in a production environment, we recommend you use at least three nodes for the node pool.
39+
> If you run a single system node pool for your AKS cluster in a production environment, we recommend you use at least three nodes for the node pool. If one node goes down, you lose control plane resources and redundancy is compromised. You can mitigate this risk by having more control plane nodes.
4040
4141
To get started, create an AKS cluster with a single node pool. The following example uses the [az group create][az-group-create] command to create a resource group named *myResourceGroup* in the *eastus* region. An AKS cluster named *myAKSCluster* is then created using the [`az aks create`][az-aks-create] command.
4242

articles/aks/use-system-pools.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ In Azure Kubernetes Service (AKS), nodes of the same configuration are grouped t
1313
> [!Important]
1414
> If you run a single system node pool for your AKS cluster in a production environment, we recommend you use at least three nodes for the node pool.
1515
16+
This article explains how to manage system node pools in AKS. For information about how to use multiple node pools, see [use multiple node pools][use-multiple-node-pools].
17+
1618
## Before you begin
1719

1820
### [Azure CLI](#tab/azure-cli)
@@ -29,9 +31,9 @@ You need the Azure PowerShell version 7.5.0 or later installed and configured. R
2931

3032
The following limitations apply when you create and manage AKS clusters that support system node pools.
3133

32-
* See [Quotas, virtual machine size restrictions, and region availability in Azure Kubernetes Service (AKS)][quotas-skus-regions].
33-
* The name of a node pool may only contain lowercase alphanumeric characters and must begin with a lowercase letter. For Linux node pools, the length must be between 1 and 12 characters. For Windows node pools, the length must be between one and six characters.
34+
* See [Quotas, VM size restrictions, and region availability in AKS][quotas-skus-regions].
3435
* An API version of 2020-03-01 or greater must be used to set a node pool mode. Clusters created on API versions older than 2020-03-01 contain only user node pools, but can be migrated to contain system node pools by following [update pool mode steps](#update-existing-cluster-system-and-user-node-pools).
36+
* The name of a node pool may only contain lowercase alphanumeric characters and must begin with a lowercase letter. For Linux node pools, the length must be between 1 and 12 characters. For Windows node pools, the length must be between one and six characters.
3537
* The mode of a node pool is a required property and must be explicitly set when using ARM templates or direct API calls.
3638

3739
## System and user node pools
@@ -41,12 +43,12 @@ You can enforce this behavior by creating a dedicated system node pool. Use the
4143

4244
System node pools have the following restrictions:
4345

46+
* System node pools must support at least 30 pods as described by the [minimum and maximum value formula for pods][maximum-pods].
4447
* System pools osType must be Linux.
4548
* User node pools osType may be Linux or Windows.
4649
* System pools must contain at least one node, and user node pools may contain zero or more nodes.
4750
* System node pools require a VM SKU of at least 2 vCPUs and 4 GB memory. But burstable-VM(B series) isn't recommended.
4851
* A minimum of two nodes 4 vCPUs is recommended (for example, Standard_DS4_v2), especially for large clusters (Multiple CoreDNS Pod replicas, 3-4+ add-ons, etc.).
49-
* System node pools must support at least 30 pods as described by the [minimum and maximum value formula for pods][maximum-pods].
5052
* Spot node pools require user node pools.
5153
* Adding another system node pool or changing which node pool is a system node pool *does not* automatically move system pods. System pods can continue to run on the same node pool, even if you change it to a user node pool. If you delete or scale down a node pool running system pods that were previously a system node pool, those system pods are redeployed with preferred scheduling to the new system node pool.
5254

@@ -311,7 +313,7 @@ Remove-AzResourceGroup -Name myResourceGroup
311313

312314
## Next steps
313315

314-
In this article, you learned how to create and manage system node pools in an AKS cluster. For more information about how to use multiple node pools, see [use multiple node pools][use-multiple-node-pools].
316+
In this article, you learned how to create and manage system node pools in an AKS cluster. For information about how to start and stop AKS node pools, see [start and stop AKS node pools][start-stop-nodepools].
315317

316318
<!-- EXTERNAL LINKS -->
317319
[kubernetes-drain]: https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/
@@ -351,3 +353,4 @@ In this article, you learned how to create and manage system node pools in an AK
351353
[use-multiple-node-pools]: use-multiple-node-pools.md
352354
[maximum-pods]: configure-azure-cni.md#maximum-pods-per-node
353355
[update-node-pool-mode]: use-system-pools.md#update-existing-cluster-system-and-user-node-pools
356+
[start-stop-nodepools]: /start-stop-nodepools.md

articles/api-management/TOC.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@
8888
href: devops-api-development-templates.md
8989
- name: APIs
9090
items:
91+
- name: GraphQL APIs
92+
href: graphql-apis-overview.md
9193
- name: API design ebook
9294
href: https://azure.microsoft.com/mediahandler/files/resourcefiles/api-design/Azure_API-Design_Guide_eBook.pdf?toc=%2Fazure%2Fapi-management%2Ftoc.json&bc=/azure/api-management/breadcrumb/toc.json
9395
- name: RESTful web API design
@@ -265,6 +267,8 @@
265267
- name: Manage secrets using named values
266268
displayName: Azure CLI, az apim nv
267269
href: api-management-howto-properties.md
270+
- name: Configure a GraphQL resolver
271+
href: configure-graphql-resolver.md
268272
- name: Secure your APIs
269273
items:
270274
- name: Secure API access
@@ -432,6 +436,8 @@
432436
href: forward-request-policy.md
433437
- name: get-authorization-context
434438
href: get-authorization-context-policy.md
439+
- name: http-data-source
440+
href: http-data-source-policy.md
435441
- name: include-fragment
436442
href: include-fragment-policy.md
437443
- name: invoke-dapr-binding
@@ -448,6 +454,8 @@
448454
href: mock-response-policy.md
449455
- name: proxy
450456
href: proxy-policy.md
457+
- name: publish-event
458+
href: publish-event-policy.md
451459
- name: publish-to-dapr
452460
href: publish-to-dapr-policy.md
453461
- name: quota

articles/api-management/api-management-features.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: dlepow
77

88
ms.service: api-management
99
ms.topic: article
10-
ms.date: 02/07/2022
10+
ms.date: 02/22/2023
1111
ms.author: danlep
1212
---
1313

@@ -38,12 +38,11 @@ Each API Management [pricing tier](https://aka.ms/apimpricing) offers a distinct
3838
| Direct management API | No | Yes | Yes | Yes | Yes |
3939
| Azure Monitor logs and metrics | No | Yes | Yes | Yes | Yes |
4040
| Static IP | No | Yes | Yes | Yes | Yes |
41-
| [WebSocket APIs](websocket-api.md) | No | Yes | Yes | Yes | Yes |
42-
| [GraphQL APIs](graphql-api.md)<sup>5</sup> | Yes | Yes | Yes | Yes | Yes |
43-
| [Synthetic GraphQL APIs (preview)](graphql-schema-resolve-api.md) | No | Yes | Yes | Yes | Yes |
41+
| [Pass-through WebSocket APIs](websocket-api.md) | No | Yes | Yes | Yes | Yes |
42+
| [Pass-through GraphQL APIs](graphql-apis-overview.md) | Yes | Yes | Yes | Yes | Yes |
43+
| [Synthetic GraphQL APIs](graphql-apis-overview.md) | Yes | Yes | Yes | Yes | Yes |
4444

4545
<sup>1</sup> Enables the use of Azure AD (and Azure AD B2C) as an identity provider for user sign in on the developer portal.<br/>
4646
<sup>2</sup> Including related functionality such as users, groups, issues, applications, and email templates and notifications.<br/>
4747
<sup>3</sup> See [Gateway overview](api-management-gateways-overview.md#feature-comparison-managed-versus-self-hosted-gateways) for a feature comparison of managed versus self-hosted gateways. In the Developer tier self-hosted gateways are limited to a single gateway node. <br/>
48-
<sup>4</sup> The following policies aren't available in the Consumption tier: rate limit by key and quota by key. <br/>
49-
<sup>5</sup> GraphQL subscriptions aren't supported in the Consumption tier.
48+
<sup>4</sup> The following policies aren't available in the Consumption tier: rate limit by key and quota by key.

articles/api-management/api-management-gateways-overview.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: dlepow
77

88
ms.service: api-management
99
ms.topic: conceptual
10-
ms.date: 08/04/2022
10+
ms.date: 02/22/2023
1111
ms.author: danlep
1212
---
1313

@@ -91,11 +91,9 @@ The following table compares features available in the managed gateway versus th
9191
| [Function App](import-function-app-as-api.md) | ✔️ | ✔️ | ✔️ |
9292
| [Container App](import-container-app-with-oas.md) | ✔️ | ✔️ | ✔️ |
9393
| [Service Fabric](../service-fabric/service-fabric-api-management-overview.md) | Developer, Premium |||
94-
| [Passthrough GraphQL](graphql-api.md) | ✔️ | ✔️<sup>1</sup> ||
95-
| [Synthetic GraphQL](graphql-schema-resolve-api.md) | ✔️ |||
96-
| [Passthrough WebSocket](websocket-api.md) | ✔️ |||
97-
98-
<sup>1</sup> GraphQL subscriptions aren't supported in the Consumption tier.
94+
| [Pass-through GraphQL](graphql-apis-overview.md) | ✔️ | ✔️ ||
95+
| [Synthetic GraphQL](graphql-apis-overview.md)| ✔️ | ✔️ ||
96+
| [Pass-through WebSocket](websocket-api.md) | ✔️ |||
9997

10098
### Policies
10199

@@ -104,9 +102,9 @@ Managed and self-hosted gateways support all available [policies](api-management
104102
| Policy | Managed (Dedicated) | Managed (Consumption) | Self-hosted<sup>1</sup> |
105103
| --- | ----- | ----- | ---------- |
106104
| [Dapr integration](api-management-policies.md#dapr-integration-policies) ||| ✔️ |
107-
| [Get authorization context](get-authorization-context-policy.md) | ✔️ |||
105+
| [GraphQL resolvers](api-management-policies.md#graphql-resolver-policies) and [GraphQL validation](api-management-policies.md#validation-policies)| ✔️ | ✔️ ||
106+
| [Get authorization context](get-authorization-context-policy.md) | ✔️ | ✔️ ||
108107
| [Quota and rate limit](api-management-policies.md#access-restriction-policies) | ✔️ | ✔️<sup>2</sup> | ✔️<sup>3</sup>
109-
| [Set GraphQL resolver](set-graphql-resolver-policy.md) | ✔️ |||
110108

111109
<sup>1</sup> Configured policies that aren't supported by the self-hosted gateway are skipped during policy execution.<br/>
112110
<sup>2</sup> The rate limit by key and quota by key policies aren't available in the Consumption tier.<br/>

articles/api-management/api-management-howto-deploy-multi-region.md

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Learn how to deploy a Premium tier Azure API Management instance to
55
author: dlepow
66
ms.service: api-management
77
ms.topic: how-to
8-
ms.date: 09/27/2022
8+
ms.date: 01/26/2023
99
ms.author: danlep
1010
---
1111

@@ -50,18 +50,16 @@ When adding a region, you configure:
5050
## <a name="remove-region"> </a>Remove an API Management service region
5151

5252
1. In the Azure portal, navigate to your API Management service and select **Locations** from the left menu.
53-
2. For the location you would like to remove, select the context menu using the **...** button at the right end of the table. Select **Delete**.
54-
3. Confirm the deletion and select **Save** to apply the changes.
53+
1. For the location you would like to remove, select the context menu using the **...** button at the right end of the table. Select **Delete**.
54+
1. Confirm the deletion and select **Save** to apply the changes.
55+
5556

5657
## <a name="route-backend"> </a>Route API calls to regional backend services
5758

5859
By default, each API routes requests to a single backend service URL. Even if you've configured Azure API Management gateways in various regions, the API gateway will still forward requests to the same backend service, which is deployed in only one region. In this case, the performance gain will come only from responses cached within Azure API Management in a region specific to the request; contacting the backend across the globe may still cause high latency.
5960

6061
To take advantage of geographical distribution of your system, you should have backend services deployed in the same regions as Azure API Management instances. Then, using policies and `@(context.Deployment.Region)` property, you can route the traffic to local instances of your backend.
6162

62-
> [!TIP]
63-
> Optionally set the `disableGateway` property in a regional gateway to disable routing of API traffic there. For example, temporarily disable a regional gateway when testing or updating a regional backend service.
64-
6563
1. Navigate to your Azure API Management instance and select **APIs** from the left menu.
6664
2. Select your desired API.
6765
3. Select **Code editor** from the arrow dropdown in the **Inbound processing**.
@@ -118,6 +116,44 @@ API Management routes the requests to a regional gateway based on [the lowest la
118116
1. [Configure the API Management regional status endpoints in Traffic Manager](../traffic-manager/traffic-manager-monitoring.md). The regional status endpoints follow the URL pattern of `https://<service-name>-<region>-01.regional.azure-api.net/status-0123456789abcdef`, for example `https://contoso-westus2-01.regional.azure-api.net/status-0123456789abcdef`.
119117
1. Specify [the routing method](../traffic-manager/traffic-manager-routing-methods.md) of the Traffic Manager.
120118

119+
## Disable routing to a regional gateway
120+
121+
Under some conditions, you might need to temporarily disable routing to one of the regional gateways. For example:
122+
123+
* After adding a new region, to keep it disabled while you configure and test the regional backend service
124+
* During regular backend maintenance in a region
125+
* To redirect traffic to other regions during a planned disaster recovery drill that simulates an unavailable region, or during a regional failure
126+
127+
To disable routing to a regional gateway in your API Management instance, update the gateway's `disableGateway` property value to `true`. You can set the value using the [Create or update service](/rest/api/apimanagement/current-ga/api-management-service/create-or-update) REST API, the [az apim update](/cli/azure/apim#az-apim-update) command in the Azure CLI, the [set-azapimanagement](/powershell/module/az.apimanagement/set-azapimanagement) Azure PowerShell cmdlet, or other Azure tools.
128+
129+
To disable a regional gateway using the Azure CLI:
130+
131+
1. Use the [az apim show](/cli/azure/apim#az-apim-show) command to show the locations, gateway status, and regional URLs configured for the API Management instance.
132+
```azurecli
133+
az apim show --name contoso --resource-group myResourceGroup \
134+
--query "additionalLocations[].{Location:location,Disabled:disableGateway,Url:gatewayRegionalUrl}" \
135+
--output table
136+
```
137+
Example output:
138+
139+
```
140+
Location Disabled Url
141+
---------- ---------- ------------------------------------------------------------
142+
West US 2 True https://contoso-westus2-01.regional.azure-api.net
143+
West Europe True https://contoso-westeurope-01.regional.azure-api.net
144+
```
145+
1. Use the [az apim update](/cli/azure/apim#az-apim-update) command to disable the gateway in an available location, such as West US 2.
146+
```azurecli
147+
az apim update --name contoso --resource-group myResourceGroup \
148+
--set additionalLocations[location="West US 2"].disableGateway=true
149+
```
150+
151+
The update may take a few minutes.
152+
153+
1. Verify that traffic directed to the regional gateway URL is redirected to another region.
154+
155+
To restore routing to the regional gateway, set the value of `disableGateway` to `false`.
156+
121157
## Virtual networking
122158

123159
This section provides considerations for multi-region deployments when the API Management instance is injected in a virtual network.

articles/api-management/api-management-howto-policies.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,16 @@ When configuring a policy, you must first select the scope at which the policy a
9999

100100
For more information, see [Set or edit policies](set-edit-policies.md#use-base-element-to-set-policy-evaluation-order).
101101

102+
### GraphQL resolver policies
103+
104+
In API Management, a [GraphQL resolver](configure-graphql-resolver.md) is configured using policies scoped to a specific operation type and field in a [GraphQL schema](graphql-apis-overview.md#resolvers).
105+
106+
* Currently, API Management supports GraphQL resolvers that specify HTTP data sources. Configure a single [`http-data-source`](http-data-source-policy.md) policy with elements to specify a request to (and optionally response from) an HTTP data source.
107+
* You can't include a resolver policy in policy definitions at other scopes such as API, product, or all APIs. It also doesn't inherit policies configured at other scopes.
108+
* The gateway evaluates a resolver-scoped policy *after* any configured `inbound` and `backend` policies in the policy execution pipeline.
109+
110+
For more information, see [Configure a GraphQL resolver](configure-graphql-resolver.md).
111+
102112
## Examples
103113

104114
### Apply policies specified at different scopes

articles/api-management/api-management-policies.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ More information about policies:
7373
- [Send message to Pub/Sub topic](publish-to-dapr-policy.md): Uses Dapr runtime to publish a message to a Publish/Subscribe topic. To learn more about Publish/Subscribe messaging in Dapr, see the description in this [README](https://github.com/dapr/docs/blob/master/README.md) file.
7474
- [Trigger output binding](invoke-dapr-binding-policy.md): Uses Dapr runtime to invoke an external system via output binding. To learn more about bindings in Dapr, see the description in this [README](https://github.com/dapr/docs/blob/master/README.md) file.
7575

76-
## GraphQL API policies
77-
- [Validate GraphQL request](validate-graphql-request-policy.md) - Validates and authorizes a request to a GraphQL API.
78-
- [Set GraphQL resolver](set-graphql-resolver-policy.md) - Retrieves or sets data for a GraphQL field in an object type specified in a GraphQL schema.
76+
## GraphQL resolver policies
77+
- [HTTP data source for resolver](http-data-source-policy.md) - Configures the HTTP request and optionally the HTTP response to resolve data for an object type and field in a GraphQL schema.
78+
- [Publish event to GraphQL subscription](publish-event-policy.md) - Publishes an event to one or more subscriptions specified in a GraphQL API schema. Used in the `http-response` element of the `http-data-source` policy
7979

8080
## Transformation policies
8181
- [Convert JSON to XML](json-to-xml-policy.md) - Converts request or response body from JSON to XML.
@@ -92,6 +92,7 @@ More information about policies:
9292
## Validation policies
9393

9494
- [Validate content](validate-content-policy.md) - Validates the size or content of a request or response body against one or more API schemas. The supported schema formats are JSON and XML.
95+
- [Validate GraphQL request](validate-graphql-request-policy.md) - Validates and authorizes a request to a GraphQL API.
9596
- [Validate parameters](validate-parameters-policy.md) - Validates the request header, query, or path parameters against the API schema.
9697
- [Validate headers](validate-headers-policy.md) - Validates the response headers against the API schema.
9798
- [Validate status code](validate-status-code-policy.md) - Validates the HTTP status codes in

0 commit comments

Comments
 (0)