Skip to content

Commit 1504075

Browse files
committed
Merging changes synced from https://github.com/MicrosoftDocs/azure-docs-pr (branch live)
2 parents 36e371d + 598c5a2 commit 1504075

File tree

326 files changed

+1925
-3030
lines changed

Some content is hidden

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

326 files changed

+1925
-3030
lines changed

.openpublishing.redirection.json

Lines changed: 347 additions & 322 deletions
Large diffs are not rendered by default.

articles/active-directory/develop/quickstart-configure-app-access-web-apis.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,41 @@ To add a credential to your web application:
168168
To add permission(s) to access resource APIs from your client:
169169

170170
1. From the app's **Overview** page, select **API permissions**.
171-
1. Select the **Add a permission** button.
171+
1. Under the **Configured permissions** section, select the **Add a permission** button.
172172
1. By default, the view allows you to select from **Microsoft APIs**. Select the section of APIs that you're interested in:
173173
* **Microsoft APIs** - Lets you select permissions for Microsoft APIs such as Microsoft Graph.
174174
* **APIs my organization uses** - Lets you select permissions for APIs that have been exposed by your organization, or APIs that your organization has integrated with.
175175
* **My APIs** - Lets you select permissions for APIs that you have exposed.
176176
1. Once you've selected the APIs, you'll see the **Request API Permissions** page. If the API exposes both delegated and application permissions, select which type of permission your application needs.
177177
1. When finished, select **Add permissions**. You will return to the **API permissions** page, where the permissions have been saved and added to the table.
178178

179+
## Understanding API permissions and admin consent UI
180+
181+
### Configured permissions
182+
183+
This section shows the permissions that have been explicitly configured on the application object (\the permissions that are part of the app's required resource access list). You may add or remove permissions from this table. As an admin, you can also grant/revoke admin consent for a set of an API's permissions or individual permissions in this section.
184+
185+
### Other permissions granted
186+
187+
If your application is registered in a tenant, you may see an additional section titled **Other permissions granted for Tenant**. This section shows permissions that have been granted for the tenant but have not been explicitly configured on the application object (e.g. permissions that were dynamically requested and consented). This section only appears if there is at least one permission that applies.
188+
189+
You may add a set of an API's permissions or individual permissions that appear in this section to the **Configured permissions** section. As an admin, you can also revoke admin consent for individual APIs or permissions in this section.
190+
191+
### Admin consent button
192+
193+
If your application is registered in a tenant, you will see a **Grant admin consent for Tenant** button. It will be disabled if you are not an admin, or if no permissions have been configured for the application.
194+
This button allows an admin to easily grant admin consent to the permissions configured for the application. Clicking the admin consent button launches a new window with a consent prompt showing all the configured permissions.
195+
196+
> [!NOTE]
197+
> There is a delay between permissions being configured for the application and them appearing on the consent prompt. If you do not see all the configured permissions in the consent prompt, close it and launch it again.
198+
199+
If you have permissions that have been granted but not configured, when clicking the admin consent button you will be prompted to decide how to handle these permissions. You may add them to configured permissions or you may remove them.
200+
201+
The consent prompt provides the option to **Accept** or **Cancel**. If you select **Accept**, admin consent is granted. If you select **Cancel**, admin consent is not granted, and you will see an error stating that consent has been declined.
202+
203+
> [!NOTE]
204+
> There is a delay between granting admin consent (selecting **Accept** on the consent prompt) and the status of admin consent being reflected in the UI.
205+
179206
## Next steps
180207

181208
Learn about these other related app management quickstarts for apps:

articles/active-directory/hybrid/how-to-connect-install-custom.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ms.assetid: 6d42fb79-d9cf-48da-8445-f482c4c536af
1010
ms.service: active-directory
1111
ms.workload: identity
1212
ms.topic: conceptual
13-
ms.date: 09/25/2019
13+
ms.date: 11/14/2019
1414
ms.subservice: hybrid
1515
ms.author: billmath
1616
ms.collection: M365-identity-device-management
@@ -82,7 +82,9 @@ After entering the forest name and clicking **Add Directory**, a pop-up dialog
8282
![Connect Directory](./media/how-to-connect-install-custom/connectdir02.png)
8383

8484
#### Enterprise Admin and Domain Admin accounts not supported
85-
As of build 1.4.###.# it is no longer supported to use an Enterprise Admin or a Domain Admin account as the AD DS Connector account. If you attempt to enter an account that is an enterprise admin or domain admin when specifying **use existing account**, you will receive an error.
85+
As of build 1.4.18.0 it is no longer supported to use an Enterprise Admin or a Domain Admin account as the AD DS Connector account. If you attempt to enter an account that is an enterprise admin or domain admin when specifying **use existing account**, you will receive the following error:
86+
87+
**“Using an Enterprise or Domain administrator account for your AD forest account is not allowed. Let Azure AD Connect create the account for you or specify a synchronization account with the correct permissions. <Learn More>**
8688

8789
### Azure AD sign-in configuration
8890
This page allows you to review the UPN domains present in on-premises AD DS and which have been verified in Azure AD. This page also allows you to configure the attribute to use for the userPrincipalName.

articles/aks/concepts-clusters-workloads.md

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,24 +83,32 @@ kubectl describe node [NODE_NAME]
8383
To maintain node performance and functionality, resources are reserved on each node by AKS. As a node grows larger in resources, the resource reservation grows due to a higher amount of user deployed pods needing management.
8484

8585
>[!NOTE]
86-
> Using add-ons such as OMS will consume additional node resources.
86+
> Using AKS add-ons such as Container Insights (OMS) will consume additional node resources.
8787
8888
- **CPU** - reserved CPU is dependent on node type and cluster configuration which may cause less allocatable CPU due to running additional features
8989

9090
| CPU cores on host | 1 | 2 | 4 | 8 | 16 | 32|64|
9191
|---|---|---|---|---|---|---|---|
9292
|Kube-reserved (millicores)|60|100|140|180|260|420|740|
9393

94-
- **Memory** - reservation of memory follows a progressive rate
95-
- 25% of the first 4 GB of memory
96-
- 20% of the next 4 GB of memory (up to 8 GB)
97-
- 10% of the next 8 GB of memory (up to 16 GB)
98-
- 6% of the next 112 GB of memory (up to 128 GB)
99-
- 2% of any memory above 128 GB
94+
- **Memory** - reserved memory includes the sum of two values
10095

101-
These reservations mean that the amount of available CPU and memory for your applications may appear less than the node itself contains. If there are resource constraints due to the number of applications that you run, these reservations ensure CPU and memory remains available for the core Kubernetes components. The resource reservations can't be changed.
96+
1. The kubelet daemon is installed on all Kubernetes agent nodes to manage container creation and termination. By default on AKS, this daemon has the following eviction rule: memory.available<750Mi, which means a node must always have at least 750 Mi allocatable at all times. When a host is below that threshold of available memory, the kubelet will terminate one of the running pods to free memory on the host machine and protect it.
10297

103-
The underlying node OS also requires some amount of CPU and memory resources to complete its own core functions.
98+
2. The second value is a progressive rate of memory reserved for the kubelet daemon to properly function (kube-reserved).
99+
- 25% of the first 4 GB of memory
100+
- 20% of the next 4 GB of memory (up to 8 GB)
101+
- 10% of the next 8 GB of memory (up to 16 GB)
102+
- 6% of the next 112 GB of memory (up to 128 GB)
103+
- 2% of any memory above 128 GB
104+
105+
As a result of these two defined rules imposed to keep Kubernetes and agent nodes healthy, the amount of allocatable CPU and memory will appear less than the node itself could offer. The resource reservations defined above cannot be changed.
106+
107+
For example, if a node offers 7 GB, it will report 34% of memory not allocatable:
108+
109+
`750Mi + (0.25*4) + (0.20*3) = 0.786GB + 1 GB + 0.6GB = 2.386GB / 7GB = 34% reserved`
110+
111+
In addition to reservations for Kubernetes, the underlying node OS also reserves an amount of CPU and memory resources to maintain OS functions.
104112

105113
For associated best practices, see [Best practices for basic scheduler features in AKS][operator-best-practices-scheduler].
106114

articles/aks/developer-best-practices-resource-management.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: zr-msft
66

77
ms.service: container-service
88
ms.topic: conceptual
9-
ms.date: 11/26/2018
9+
ms.date: 11/13/2019
1010
ms.author: zarhoads
1111
---
1212

@@ -27,16 +27,24 @@ This best practices article focuses on how to run your cluster and workloads fro
2727

2828
A primary way to manage the compute resources within an AKS cluster is to use pod requests and limits. These requests and limits let the Kubernetes scheduler know what compute resources a pod should be assigned.
2929

30-
* **Pod requests** define a set amount of CPU and memory that the pod needs. These requests should be the amount of compute resources the pod needs to provide an acceptable level of performance.
31-
* When the Kubernetes scheduler tries to place a pod on a node, the pod requests are used to determine which node has sufficient resources available.
32-
* Monitor the performance of your application to adjust these requests to make sure you don't define less resources that required to maintain an acceptable level of performance.
33-
* **Pod limits** are the maximum amount of CPU and memory that a pod can use. These limits help prevent one or two runaway pods from taking too much CPU and memory from the node. This scenario would reduce the performance of the node and other pods that run on it.
30+
* **Pod CPU/Memory requests** define a set amount of CPU and memory that the pod needs on a regular basis.
31+
* When the Kubernetes scheduler tries to place a pod on a node, the pod requests are used to determine which node has sufficient resources available for scheduling.
32+
* Not setting a pod request will default it to the limit defined.
33+
* It is very important to monitor the performance of your application to adjust these requests. If insufficient requests are made, your application may receive degraded performance due to over scheduling a node. If requests are overestimated, your application may have increased difficulty getting scheduled.
34+
* **Pod CPU/Memory limits** are the maximum amount of CPU and memory that a pod can use. These limits help define which pods should be killed in the event of node instability due to insufficient resources. Without proper limits set pods will be killed until resource pressure is lifted.
35+
* Pod limits help define when a pod has lost of control of resource consumption. When a limit is exceeded, the pod is prioritized for killing to maintain node health and minimize impact to pods sharing the node.
36+
* Not setting a pod limit defaults it to the highest available value on a given node.
3437
* Don't set a pod limit higher than your nodes can support. Each AKS node reserves a set amount of CPU and memory for the core Kubernetes components. Your application may try to consume too many resources on the node for other pods to successfully run.
35-
* Again, monitor the performance of your application at different times during the day or week. Determine when the peak demand is, and align the pod limits to the resources required to meet the application's needs.
38+
* Again, it is very important to monitor the performance of your application at different times during the day or week. Determine when the peak demand is, and align the pod limits to the resources required to meet the application's max needs.
3639

37-
In your pod specifications, it's best practice to define these requests and limits. If you don't include these values, the Kubernetes scheduler doesn't understand what resources are needed. The scheduler may schedule the pod on a node without sufficient resources to provide acceptable application performance. The cluster administrator may set *resource quotas* on a namespace that requires you to set resource requests and limits. For more information, see [resource quotas on AKS clusters][resource-quotas].
40+
In your pod specifications, it's **best practice and very important** to define these requests and limits based on the above information. If you don't include these values, the Kubernetes scheduler cannot take into account the resources your applications require to aid in scheduling decisions.
3841

39-
When you define a CPU request or limit, the value is measured in CPU units. *1.0* CPU equates to one underlying virtual CPU core on the node. The same measurement is used for GPUs. You can also define a fractional request or limit, typically in millicpu. For example, *100m* is *0.1* of an underlying virtual CPU core.
42+
If the scheduler places a pod on a node with insufficient resources, application performance will be degraded. It is highly recommended for cluster administrators to set *resource quotas* on a namespace that requires you to set resource requests and limits. For more information, see [resource quotas on AKS clusters][resource-quotas].
43+
44+
When you define a CPU request or limit, the value is measured in CPU units.
45+
* *1.0* CPU equates to one underlying virtual CPU core on the node.
46+
* The same measurement is used for GPUs.
47+
* You can define fractions measured in millicores. For example, *100m* is *0.1* of an underlying vCPU core.
4048

4149
In the following basic example for a single NGINX pod, the pod requests *100m* of CPU time, and *128Mi* of memory. The resource limits for the pod are set to *250m* CPU and *256Mi* memory:
4250

articles/api-management/import-and-publish.md

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ This section shows how to import and publish an OpenAPI specification backend AP
7171
> [!TIP]
7272
> If you are experiencing problems with import of your own API definition, [see the list of known issues and restrictions](api-management-api-import-restrictions.md).
7373
74-
## Test the new APIM API in the Azure portal
74+
## Test the new API in the Azure portal
7575

7676
![Test API map](./media/api-management-get-started/01-import-first-api-01.png)
7777

@@ -84,31 +84,13 @@ Operations can be called directly from the Azure portal, which provides a conven
8484

8585
Backend responds with **200 OK** and some data.
8686

87-
## <a name="call-operation"> </a>Call an operation from the developer portal
88-
89-
Operations can also be called from the **Developer portal** to test APIs.
90-
91-
1. Navigate to the **Developer portal**.
92-
93-
![Developer portal](./media/api-management-get-started/developer-portal.png)
94-
95-
2. Select **APIS**, click on **Demo Conference API** and then **GetSpeakers**.
96-
97-
The page displays fields for query parameters, in this case none, and headers. One of the headers is "Ocp-Apim-Subscription-Key", for the subscription key of the product that is associated with this API. If you created the APIM instance, you are an administrator already, so the key is filled in automatically.
98-
99-
3. Press **Try it**.
100-
4. Press **Send**.
101-
102-
After an operation is invoked, the developer portal shows the responses.
103-
10487
## <a name="next-steps"> </a>Next steps
10588

10689
In this tutorial, you learned how to:
10790

10891
> [!div class="checklist"]
10992
> * Import your first API
11093
> * Test the API in the Azure portal
111-
> * Test the API in the Developer portal
11294
11395
Advance to the next tutorial:
11496

articles/api-management/import-api-app-as-api.md

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ In this article, you learn how to:
5454
* **Unlimited**
5555
7. Select **Create**.
5656

57-
## Test the new APIM API in the Azure portal
57+
## Test the new API in the Azure portal
5858

5959
Operations can be called directly from the Azure portal, which provides a convenient way to view and test the operations of an API.
6060

@@ -67,21 +67,6 @@ Operations can be called directly from the Azure portal, which provides a conven
6767

6868
Backend responds with **200 OK** and some data.
6969

70-
## <a name="call-operation"> </a>Call an operation from the developer portal
71-
72-
Operations can also be called **Developer portal** to test APIs.
73-
74-
1. Select the API you created in the "Import and publish a back-end API" step.
75-
2. Press **Developer portal**.
76-
77-
The "Developer portal" site opens up.
78-
3. Select the **API** that you created.
79-
4. Click the operation you want to test.
80-
5. Press **Try it**.
81-
6. Press **Send**.
82-
83-
After an operation is invoked, the developer portal displays the **Response status**, the **Response headers**, and any **Response content**.
84-
8570
[!INCLUDE [api-management-navigate-to-instance.md](../../includes/api-management-append-apis.md)]
8671

8772
[!INCLUDE [api-management-define-api-topics.md](../../includes/api-management-define-api-topics.md)]

articles/api-management/import-api-from-oas.md

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ Complete the following quickstart: [Create an Azure API Management instance](get
3939

4040
1. Select **APIs** from under **API MANAGEMENT**.
4141
2. Select **OpenAPI specification** from the **Add a new API** list.
42+
4243
![OpenAPI specification](./media/import-api-from-oas/oas-api.png)
4344
3. Enter appropriate settings. You can set all the API values during creation. Alternately, you can set some of them later by going to the **Settings** tab. <br/> If you press **tab** some (or all) of the fields get filled up with the info from the specified back-end service.
4445

@@ -59,41 +60,19 @@ Complete the following quickstart: [Create an Azure API Management instance](get
5960
> [!NOTE]
6061
> The API import limitations are documented in [another article](api-management-api-import-restrictions.md).
6162
62-
## Test the new APIM API in the Azure portal
63+
## Test the new API in the Azure portal
6364

64-
Operations can be called directly from the Azure portal, which provides a convenient way to view and test the operations of an API.
65+
![Test API map](./media/api-management-get-started/01-import-first-api-01.png)
6566

66-
![Test API](./media/api-management-get-started/01-import-first-api-01.png)
67+
Operations can be called directly from the Azure portal, which provides a convenient way to view and test the operations of an API.
6768

68-
1. Select the API you created in the previous step.
69+
1. Select the API you created in the previous step (from the **APIs** tab).
6970
2. Press the **Test** tab.
70-
3. Click on **GetSpeakers**.
71-
72-
The page displays fields for query parameters but in this case we don't have any. The page also displays fields for the headers. One of the headers is "Ocp-Apim-Subscription-Key", for the subscription key of the product that is associated with this API. If you created the APIM instance, you are an administrator already, so the key is filled in automatically.
71+
3. Click on **GetSpeakers**. The page displays fields for query parameters, in this case none, and headers. One of the headers is "Ocp-Apim-Subscription-Key", for the subscription key of the product that is associated with this API. The key is filled in automatically.
7372
4. Press **Send**.
7473

7574
Backend responds with **200 OK** and some data.
7675

77-
## <a name="call-operation"> </a>Call an operation from the Developer portal
78-
79-
Operations can also be called **Developer portal** to test APIs.
80-
81-
1. Select the API you created in the "Import and publish a back-end API" step.
82-
2. Press **Developer portal**.
83-
84-
![Test in Developer portal](./media/api-management-get-started/developer-portal.png)
85-
86-
The "Developer portal" site opens up.
87-
3. Select **API**.
88-
4. Select **Demo Conference API**.
89-
5. Click **GetSpeakers**.
90-
91-
The page displays fields for query parameters but in this case we don't have any. The page also displays fields for the headers. One of the headers is "Ocp-Apim-Subscription-Key", for the subscription key of the product that is associated with this API. If you created the APIM instance, you are an administrator already, so the key is filled in automatically.
92-
6. Press **Try it**.
93-
7. Press **Send**.
94-
95-
After an operation is invoked, the developer portal displays the **Response status**, the **Response headers**, and any **Response content**.
96-
9776
[!INCLUDE [api-management-navigate-to-instance.md](../../includes/api-management-append-apis.md)]
9877

9978
[!INCLUDE [api-management-define-api-topics.md](../../includes/api-management-define-api-topics.md)]

0 commit comments

Comments
 (0)