Skip to content

Commit 6bffb5c

Browse files
authored
Merge pull request #255965 from MicrosoftDocs/main
10/24 11:00 AM IST Publishing
2 parents 1326416 + cffc3e8 commit 6bffb5c

29 files changed

+886
-216
lines changed

articles/ai-services/document-intelligence/concept-add-on-capabilities.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ monikerRange: 'doc-intel-3.1.0'
2222

2323
> [!NOTE]
2424
>
25-
> Add-on capabilities for Document Intelligence Studio are available with the Read and Layout models starting with the `2023-02-28-preview` and later releases.
25+
> Add-on capabilities for Document Intelligence Studio are available with the Read and Layout models starting with the `2023-07-31 (GA)` and later releases.
2626
>
2727
> Add-on capabilities are available within all models except for the [Business card model](concept-business-card.md).
2828
29-
Document Intelligence now supports more sophisticated analysis capabilities. These optional capabilities can be enabled and disabled depending on the scenario of the document extraction. The following add-on capabilities are available for`2023-02-28-preview` and later releases:
29+
Document Intelligence supports more sophisticated analysis capabilities. These optional features can be enabled and disabled depending on the scenario of the document extraction. The following add-on capabilities are available for `2023-07-31 (GA)` and later releases:
30+
31+
Document Intelligence now supports more sophisticated analysis capabilities. These optional capabilities can be enabled and disabled depending on the scenario of the document extraction. The following add-on capabilities are available for `2023-07-31 (GA)` and later releases:
3032

3133
* [`ocr.highResolution`](#high-resolution-extraction)
3234

articles/ai-services/document-intelligence/overview.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Azure AI Document Intelligence is a cloud-based [Azure AI service](../../ai-serv
3838

3939
| ✔️ [**Document analysis models**](#document-analysis-models) | ✔️ [**Prebuilt models**](#prebuilt-models) | ✔️ [**Custom models**](#custom-model-overview) |
4040

41-
### Document analysis models
41+
## Document analysis models
4242

4343
Document analysis models enable text extraction from forms and documents and return structured business-ready content ready for your organization's action, use, or progress.
4444

@@ -57,7 +57,7 @@ Document analysis models enable text extraction from forms and documents and ret
5757
:::column-end:::
5858
:::row-end:::
5959

60-
### Prebuilt models
60+
## Prebuilt models
6161

6262
Prebuilt models enable you to add intelligent document processing to your apps and flows without having to train and build your own models.
6363

@@ -110,7 +110,7 @@ Prebuilt models enable you to add intelligent document processing to your apps a
110110
:::column-end:::
111111
:::row-end:::
112112

113-
### Custom models
113+
## Custom models
114114

115115
Custom models are trained using your labeled datasets to extract distinct data from forms and documents, specific to your use cases. Standalone custom models can be combined to create composed models.
116116

@@ -363,7 +363,17 @@ You can use Document Intelligence to automate document processing in application
363363
> [!div class="nextstepaction"]
364364
> [Return to custom model types](#custom-models)
365365
366-
### Add-on capabilities
366+
## Add-on capabilities
367+
368+
Document Intelligence supports optional features that can be enabled and disabled depending on the document extraction scenario. The following add-on capabilities are available for`2023-07-31 (GA)` and later releases:
369+
370+
* [`ocr.highResolution`](concept-add-on-capabilities.md#high-resolution-extraction)
371+
372+
* [`ocr.formula`](concept-add-on-capabilities.md#formula-extraction)
373+
374+
* [`ocr.font`](concept-add-on-capabilities.md#font-property-extraction)
375+
376+
* [`ocr.barcode`](concept-add-on-capabilities.md#barcode-property-extraction)
367377

368378
:::moniker-end
369379

articles/aks/image-cleaner.md

Lines changed: 128 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ ms.author: nickoman
55
author: nickomang
66
ms.topic: article
77
ms.custom: devx-track-azurecli
8-
ms.date: 06/02/2023
8+
ms.date: 10/22/2023
99
---
1010

1111
# Use Image Cleaner to clean up stale images on your Azure Kubernetes Service (AKS) cluster
1212

13-
It's common to use pipelines to build and deploy images on Azure Kubernetes Service (AKS) clusters. While great for image creation, this process often doesn't account for the stale images left behind and can lead to image bloat on cluster nodes. These images may contain vulnerabilities, which may create security issues. To remove security risks in your clusters, you can clean these unreferenced images. Manually cleaning images can be time intensive. Image Cleaner performs automatic image identification and removal, which mitigates the risk of stale images and reduces the time required to clean them up.
13+
It's common to use pipelines to build and deploy images on Azure Kubernetes Service (AKS) clusters. While great for image creation, this process often doesn't account for the stale images left behind and can lead to image bloat on cluster nodes. These images might contain vulnerabilities, which might create security issues. To remove security risks in your clusters, you can clean these unreferenced images. Manually cleaning images can be time intensive. Image Cleaner performs automatic image identification and removal, which mitigates the risk of stale images and reduces the time required to clean them up.
1414

1515
> [!NOTE]
1616
> Image Cleaner is a feature based on [Eraser](https://eraser-dev.github.io/eraser).
@@ -27,20 +27,38 @@ Image Cleaner doesn't yet support Windows node pools or AKS virtual nodes.
2727

2828
## How Image Cleaner works
2929

30-
When you enable Image Cleaner, it deploys an `eraser-controller-manager` pod, which generates an `ImageList` CRD. The eraser pods running on each node clean up any unreferenced and vulnerable images according to the `ImageList`. A [trivy][trivy] scan helps determine vulnerability and flags images with a classification of `LOW`, `MEDIUM`, `HIGH`, or `CRITICAL`. Image Cleaner automatically generates an updated `ImageList` based on a set time interval and can also be supplied manually. Once Image Cleaner generates an `ImageList`, it removes all images in the list from node VMs.
30+
After you enable Image Cleaner, there will be a controller manager pod named `eraser-controller-manager` deployed to your cluster.
3131

32-
:::image type="content" source="./media/image-cleaner/image-cleaner.jpg" alt-text="Screenshot of a diagram showing ImageCleaner's workflow. The ImageCleaner pods running on the cluster can generate an ImageList, or manual input can be provided.":::
33-
34-
## Configuration options
32+
:::image type="content" source="./media/image-cleaner/Image-cleaner-1015.png" alt-text="Screenshot of a diagram showing ImageCleaner's workflow. The ImageCleaner pods running on the cluster can generate an ImageList, or manual input can be provided.":::
3533

3634
With Image Cleaner, you can choose between manual and automatic mode and the following configuration options:
3735

36+
## Configuration options
37+
3838
|Name|Description|Required|
3939
|----|-----------|--------|
4040
|`--enable-image-cleaner`|Enable the Image Cleaner feature for an AKS cluster|Yes, unless disable is specified|
4141
|`--disable-image-cleaner`|Disable the Image Cleaner feature for an AKS cluster|Yes, unless enable is specified|
4242
|`--image-cleaner-interval-hours`|This parameter determines the interval time (in hours) Image Cleaner uses to run. The default value for Azure CLI is one week, the minimum value is 24 hours and the maximum is three months.|Not required for Azure CLI, required for ARM template or other clients|
4343

44+
### Automatic mode
45+
Once `eraser-controller-manager` is deployed,
46+
47+
- it will start first time's clean up immediately and create worker pods per node named like `eraser-aks-xxxxx`
48+
- inside each worker pod, there are 3 containers:
49+
- collector: collect unused images
50+
- trivy-scanner: leverage [trivy](https://github.com/aquasecurity/trivy) to scan image vulnerabilities
51+
- remover: remove used images with vulnerabilities
52+
- after clean up, worker pod will be deleted and its next schedule up is after the `--image-cleaner-interval-hours` you have set
53+
54+
### Manual mode
55+
56+
You can also manually trigger the clean up by defining a CRD object `ImageList`. Then `eraser-contoller-manager` will create worker pod per node as well to finish manual removal.
57+
58+
:::image type="content" source="./media/image-cleaner/Image-cleaner-1015.png" alt-text="Screenshot of a diagram showing ImageCleaner's workflow. The ImageCleaner pods running on the cluster can generate an ImageList, or manual input can be provided.":::
59+
60+
61+
4462
> [!NOTE]
4563
> After disabling Image Cleaner, the old configuration still exists. This means if you enable the feature again without explicitly passing configuration, the existing value is used instead of the default.
4664
@@ -51,7 +69,9 @@ With Image Cleaner, you can choose between manual and automatic mode and the fol
5169
* Enable Image Cleaner on a new AKS cluster using the [`az aks create`][az-aks-create] command with the `--enable-image-cleaner` parameter.
5270

5371
```azurecli-interactive
54-
az aks create -g myResourceGroup -n myManagedCluster \
72+
az aks create \
73+
--resource-group myResourceGroup \
74+
--name myManagedCluster \
5575
--enable-image-cleaner
5676
```
5777
@@ -60,7 +80,9 @@ With Image Cleaner, you can choose between manual and automatic mode and the fol
6080
* Enable Image Cleaner on an existing AKS cluster using the [`az aks update`][az-aks-update] command.
6181
6282
```azurecli-interactive
63-
az aks update -g myResourceGroup -n myManagedCluster \
83+
az aks update \
84+
--resource-group myResourceGroup \
85+
--name myManagedCluster \
6486
--enable-image-cleaner
6587
```
6688
@@ -69,46 +91,37 @@ With Image Cleaner, you can choose between manual and automatic mode and the fol
6991
* Update the Image Cleaner interval on a new or existing AKS cluster using the `--image-cleaner-interval-hours` parameter.
7092
7193
```azurecli-interactive
72-
# Update the interval on a new cluster
73-
az aks create -g myResourceGroup -n myManagedCluster \
94+
# Create a new cluster with specifying the interval
95+
az aks create \
96+
--resource-group myResourceGroup \
97+
--name myManagedCluster \
7498
--enable-image-cleaner \
7599
--image-cleaner-interval-hours 48
100+
76101
# Update the interval on an existing cluster
77-
az aks update -g myResourceGroup -n myManagedCluster \
102+
az aks update \
103+
--resource-group myResourceGroup \
104+
--name myManagedCluster \
105+
--enable-image-cleaner \
78106
--image-cleaner-interval-hours 48
79107
```
80108
81-
After you enable the feature, the `eraser-controller-manager-xxx` pod and `collector-aks-xxx` pod are deployed. The `eraser-aks-xxx` pod contains *three* containers:
82-
83-
- **Scanner container**: Performs vulnerability image scans
84-
- **Collector container**: Collects nonrunning and unused images
85-
- **Remover container**: Removes these images from cluster nodes
86-
87-
Image Cleaner generates an `ImageList` containing nonrunning and vulnerable images at the desired interval based on your configuration. Image Cleaner automatically removes these images from cluster nodes.
88-
89109
## Manually remove images using Image Cleaner
90110
91-
1. Create an `ImageList` using the following example YAML named `image-list.yml`.
111+
* Example to manually remove image `docker.io/library/alpine:3.7.3` if it is unused.
92112
93-
```yml
94-
apiVersion: eraser.sh/v1alpha1
113+
```bash
114+
cat <<EOF | kubectl apply -f -
115+
apiVersion: eraser.sh/v1
95116
kind: ImageList
96117
metadata:
97118
name: imagelist
98119
spec:
99120
images:
100121
- docker.io/library/alpine:3.7.3
101-
// You can also use "*" to specify all non-running images
102-
```
103-
104-
2. Apply the `ImageList` to your cluster using the `kubectl apply` command.
105-
106-
```bash
107-
kubectl apply -f image-list.yml
122+
EOF
108123
```
109124
110-
Applying the `ImageList` triggers a job named `eraser-aks-xxx`, which causes Image Cleaner to remove the desired images from all nodes. Unlike the `eraser-aks-xxx` pod under autoclean with *three* containers, the eraser-pod here has only *one* container.
111-
112125
## Image exclusion list
113126
114127
Images specified in the exclusion list aren't removed from the cluster. Image Cleaner supports system and user-defined exclusion lists. It's not supported to edit the system exclusion list.
@@ -118,7 +131,7 @@ Images specified in the exclusion list aren't removed from the cluster. Image Cl
118131
* Check the system exclusion list using the following `kubectl get` command.
119132
120133
```bash
121-
kubectl get -n kube-system cm eraser-system-exclusion -o yaml
134+
kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
122135
```
123136
124137
### Create a user-defined exclusion list
@@ -138,76 +151,97 @@ Images specified in the exclusion list aren't removed from the cluster. Image Cl
138151
kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
139152
```
140153
141-
3. Verify the images are in the exclusion list using the following `kubectl logs` command.
142-
143-
```bash
144-
kubectl logs -n kube-system <eraser-pod-name>
145-
```
146-
147-
## Image Cleaner image logs
148-
149-
Deletion image logs are stored in `eraser-aks-nodepool-xxx` pods for manually deleted images and in `collector-aks-nodes-xxx` pods for automatically deleted images.
150-
151-
You can view these logs using the `kubectl logs <pod name> -n kubesystem` command. However, this command may return only the most recent logs, since older logs are routinely deleted. To view all logs, follow these steps to enable the [Azure Monitor add-on](./monitor-aks.md) and use the Container Insights pod log table.
152-
153-
1. Ensure Azure Monitoring is enabled on your cluster. For detailed steps, see [Enable Container Insights on AKS clusters](../azure-monitor/containers/container-insights-enable-aks.md#existing-aks-cluster).
154-
155-
2. Get the Log Analytics resource ID using the [`az aks show`][az-aks-show] command.
156-
157-
```azurecli
158-
az aks show -g myResourceGroup -n myManagedCluster
159-
```
160-
161-
After a few minutes, the command returns JSON-formatted information about the solution, including the workspace resource ID.
162-
163-
```json
164-
"addonProfiles": {
165-
"omsagent": {
166-
"config": {
167-
"logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>"
168-
},
169-
"enabled": true
170-
}
171-
}
172-
```
173-
174-
3. In the Azure portal, search for the workspace resource ID, then select **Logs**.
175-
176-
4. Copy this query into the table, replacing `name` with either `eraser-aks-nodepool-xxx` (for manual mode) or `collector-aks-nodes-xxx` (for automatic mode).
177-
178-
```kusto
179-
let startTimestamp = ago(1h);
180-
KubePodInventory
181-
| where TimeGenerated > startTimestamp
182-
| project ContainerID, PodName=Name, Namespace
183-
| where PodName contains "name" and Namespace startswith "kube-system"
184-
| distinct ContainerID, PodName
185-
| join
186-
(
187-
ContainerLog
188-
| where TimeGenerated > startTimestamp
189-
)
190-
on ContainerID
191-
// at this point before the next pipe, columns from both tables are available to be "projected". Due to both
192-
// tables having a "Name" column, we assign an alias as PodName to one column which we actually want
193-
| project TimeGenerated, PodName, LogEntry, LogEntrySource
194-
| summarize by TimeGenerated, LogEntry
195-
| order by TimeGenerated desc
196-
```
197-
198-
5. Select **Run**. Any deleted image logs appear in the **Results** area.
199-
200-
:::image type="content" source="media/image-cleaner/eraser-log-analytics.png" alt-text="Screenshot showing deleted image logs in the Azure portal." lightbox="media/image-cleaner/eraser-log-analytics.png":::
201-
202154
## Disable Image Cleaner
203155
204156
* Disable Image Cleaner on your cluster using the [`az aks update`][az-aks-update] command with the `--disable-image-cleaner` parameter.
205157
206158
```azurecli-interactive
207-
az aks update -g myResourceGroup -n myManagedCluster \
159+
az aks update \
160+
--resource-group myResourceGroup \
161+
--name myManagedCluster \
208162
--disable-image-cleaner
209163
```
210164
165+
## FAQ
166+
167+
### How to check eraser version is using?
168+
```
169+
kubectl get configmap -n kube-system eraser-manager-config | grep tag -C 3
170+
```
171+
172+
### Does Image Cleaner support other vulnerability scanners besides trivy-scanner?
173+
No.
174+
175+
### Can I specify vulnerability levels for images to clean?
176+
Currently no. The default settings for vulnerablity levels are:
177+
- `LOW`
178+
- `MEDIUM`
179+
- `HIGH`
180+
- `CRITICAL`
181+
182+
And they cannot be customized.
183+
184+
### How to review images were cleaned up by Image Cleaner?
185+
186+
Image logs are stored in worker pod - `eraser-aks-xxxxx` and
187+
188+
- when `eraser-aks-xxxxx` is alive, you can run below commands to view deletion logs.
189+
```bash
190+
kubectl logs -n kube-system <worker-pod-name> -c collector
191+
kubectl logs -n kube-system <worker-pod-name> -c trivy-scanner
192+
kubectl logs -n kube-system <worker-pod-name> -c remover
193+
```
194+
195+
- when `eraser-aks-xxxxx` was deleted, you can follow these steps to enable the [Azure Monitor add-on](./monitor-aks.md) and use the Container Insights pod log table to view historical pod logs.
196+
1. Ensure Azure Monitoring is enabled on your cluster. For detailed steps, see [Enable Container Insights on AKS clusters](../azure-monitor/containers/container-insights-enable-aks.md#existing-aks-cluster).
197+
198+
2. Get the Log Analytics resource ID using the [`az aks show`][az-aks-show] command.
199+
200+
```azurecli
201+
az aks show -g myResourceGroup -n myManagedCluster
202+
```
203+
204+
After a few minutes, the command returns JSON-formatted information about the solution, including the workspace resource ID.
205+
206+
```json
207+
"addonProfiles": {
208+
"omsagent": {
209+
"config": {
210+
"logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>"
211+
},
212+
"enabled": true
213+
}
214+
}
215+
```
216+
217+
3. In the Azure portal, search for the workspace resource ID, then select **Logs**.
218+
219+
4. Copy this query into the table, replacing `name` with `eraser-aks-xxxxx` (worker pod name).
220+
221+
```kusto
222+
let startTimestamp = ago(1h);
223+
KubePodInventory
224+
| where TimeGenerated > startTimestamp
225+
| project ContainerID, PodName=Name, Namespace
226+
| where PodName contains "name" and Namespace startswith "kube-system"
227+
| distinct ContainerID, PodName
228+
| join
229+
(
230+
ContainerLog
231+
| where TimeGenerated > startTimestamp
232+
)
233+
on ContainerID
234+
// at this point before the next pipe, columns from both tables are available to be "projected". Due to both
235+
// tables having a "Name" column, we assign an alias as PodName to one column which we actually want
236+
| project TimeGenerated, PodName, LogEntry, LogEntrySource
237+
| summarize by TimeGenerated, LogEntry
238+
| order by TimeGenerated desc
239+
```
240+
241+
5. Select **Run**. Any deleted image logs appear in the **Results** area.
242+
243+
:::image type="content" source="media/image-cleaner/eraser-log-analytics.png" alt-text="Screenshot showing deleted image logs in the Azure portal." lightbox="media/image-cleaner/eraser-log-analytics.png":::
244+
211245
<!-- LINKS -->
212246
213247
[azure-cli-install]: /cli/azure/install-azure-cli

articles/azure-arc/servers/api-extended-security-updates.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Programmatically deploy and manage Azure Arc Extended Security Updates licenses
33
description: Learn how to programmatically deploy and manage Azure Arc Extended Security Updates licenses for Windows Server 2012.
4-
ms.date: 10/02/2023
4+
ms.date: 10/23/2023
55
ms.topic: conceptual
66
---
77

@@ -64,7 +64,6 @@ https://management.azure.com/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOUR
6464
"location": "SAME_REGION_AS_MACHINE",
6565
"properties": {
6666
"esuProfile": {
67-
"assignedLicense": ""
6867
}
6968
}
7069
}

0 commit comments

Comments
 (0)