Skip to content

Commit 8dab022

Browse files
authored
Merge pull request #264948 from MicrosoftDocs/main
2/1/2024 AM Publish
2 parents 76ea8d4 + 65ecc39 commit 8dab022

File tree

32 files changed

+439
-329
lines changed

32 files changed

+439
-329
lines changed
-5 Bytes
Loading

articles/aks/operator-best-practices-network.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ spec:
129129
paths:
130130
- path: /blog
131131
backend:
132-
service
132+
service:
133133
name: blogservice
134134
port: 80
135135
- path: /store
136136
backend:
137-
service
137+
service:
138138
name: storeservice
139139
port: 80
140140
```

articles/api-management/api-management-howto-ip-addresses.md

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

77
ms.service: api-management
88
ms.topic: article
9-
ms.date: 12/21/2021
9+
ms.date: 01/29/2024
1010
ms.author: apimpm
1111
ms.custom: fasttrack-edit
1212
---
@@ -93,11 +93,11 @@ API Management uses a public IP address for a connection outside the VNet or a p
9393

9494
* When a request is sent from API Management to a public (internet-facing) backend, a public IP address will always be visible as the origin of the request.
9595

96-
## IP addresses of Consumption tier API Management service
96+
## IP addresses of Consumption, Basic v2, and Standard v2 tier API Management service
9797

98-
If your API Management service is a Consumption tier service, it doesn't have a dedicated IP address. Consumption tier service runs on a shared infrastructure and without a deterministic IP address.
98+
If your API Management instance is created in a service tier that runs on a shared infrastructure, it doesn't have a dedicated IP address. Currently, instances in the following service tiers run on a shared infrastructure and without a deterministic IP address: Consumption, Basic v2 (preview), Standard v2 (preview).
9999

100-
If you need to add the outbound IP addresses used by your Consumption tier instance to an allowlist, you can add the instance's data center (Azure region) to an allowlist. You can [download a JSON file that lists IP addresses for all Azure data centers](https://www.microsoft.com/download/details.aspx?id=56519). Then find the JSON fragment that applies to the region that your instance runs in.
100+
If you need to add the outbound IP addresses used by your Consumption, Basic v2, or Standard v2 tier instance to an allowlist, you can add the instance's data center (Azure region) to an allowlist. You can [download a JSON file that lists IP addresses for all Azure data centers](https://www.microsoft.com/download/details.aspx?id=56519). Then find the JSON fragment that applies to the region that your instance runs in.
101101

102102
For example, the following JSON fragment is what the allowlist for Western Europe might look like:
103103

articles/api-management/howto-protect-backend-frontend-azure-ad-b2c.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ services: api-management, azure-ad-b2c, app-service
66
author: WillEastbury
77
manager: alberts
88
ms.service: api-management
9-
ms.workload: mobile
10-
ms.topic: article
9+
ms.topic: how-to
1110
ms.date: 02/18/2021
1211
ms.author: wieastbu
1312
ms.custom: fasttrack-new, fasttrack-update, devx-track-js
@@ -23,7 +22,7 @@ For a conceptual overview of API authorization, see [Authentication and authoriz
2322

2423
## Aims
2524

26-
We're going to see how API Management can be used in a simplified scenario with Azure Functions and Azure AD B2C. You'll create a JavaScript (JS) app calling an API, that signs in users with Azure AD B2C. Then you'll use API Management's validate-jwt, CORS, and Rate Limit By Key policy features to protect the Backend API.
25+
We're going to see how API Management can be used in a simplified scenario with Azure Functions and Azure AD B2C. You'll create a JavaScript (JS) app calling an API that signs in users with Azure AD B2C. Then you'll use API Management's validate-jwt, CORS, and Rate Limit By Key policy features to protect the Backend API.
2726

2827
For defense in depth, we then use EasyAuth to validate the token again inside the back-end API and ensure that API management is the only service that can call the Azure Functions backend.
2928

@@ -59,13 +58,13 @@ Here's a quick overview of the steps:
5958
1. Create the sign-up and sign-in policies to allow users to sign in with Azure AD B2C
6059
1. Configure API Management with the new Azure AD B2C Client IDs and keys to Enable OAuth2 user authorization in the Developer Console
6160
1. Build the Function API
62-
1. Configure the Function API to enable EasyAuth with the new Azure AD B2C Client ID’s and Keys and lock down to APIM VIP
61+
1. Configure the Function API to enable EasyAuth with the new Azure AD B2C Client IDs and Keys and lock down to APIM VIP
6362
1. Build the API Definition in API Management
6463
1. Set up Oauth2 for the API Management API configuration
6564
1. Set up the **CORS** policy and add the **validate-jwt** policy to validate the OAuth token for every incoming request
6665
1. Build the calling application to consume the API
6766
1. Upload the JS SPA Sample
68-
1. Configure the Sample JS Client App with the new Azure AD B2C Client ID’s and keys
67+
1. Configure the Sample JS Client App with the new Azure AD B2C Client IDs and keys
6968
1. Test the Client Application
7069

7170
> [!TIP]
@@ -198,7 +197,7 @@ Open the Azure AD B2C blade in the portal and do the following steps.
198197
>
199198
> We still have no IP security applied, if you have a valid key and OAuth2 token, anyone can call this from anywhere - ideally we want to force all requests to come via API Management.
200199
>
201-
> If you're using APIM Consumption tier then [there isn't a dedicated Azure API Management Virtual IP](./api-management-howto-ip-addresses.md#ip-addresses-of-consumption-tier-api-management-service) to allow-list with the functions access-restrictions. In the Azure API Management Standard SKU and above [the VIP is single tenant and for the lifetime of the resource](./api-management-howto-ip-addresses.md#changes-to-the-ip-addresses). For the Azure API Management Consumption tier, you can lock down your API calls via the shared secret function key in the portion of the URI you copied above. Also, for the Consumption tier - steps 12-17 below do not apply.
200+
> If you're using the API Management Consumption, Basic v2, and Standard v2 tiers then [there isn't a dedicated Azure API Management Virtual IP](./api-management-howto-ip-addresses.md#ip-addresses-of-consumption-basic-v2-and-standard-v2-tier-api-management-service) to allow-list with the functions access-restrictions. In the Azure API Management dedicated tiers [the VIP is single tenant and for the lifetime of the resource](./api-management-howto-ip-addresses.md#changes-to-the-ip-addresses). For the tiers that run on shared infrastructure, you can lock down your API calls via the shared secret function key in the portion of the URI you copied above. Also, for these tiers - steps 12-17 below do not apply.
202201
203202
1. Close the 'Authentication' blade from the App Service / Functions portal.
204203
1. Open the *API Management blade of the portal*, then open *your instance*.

articles/azure-app-configuration/overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ The easiest way to add an App Configuration store to your application is through
5252
| ASP.NET Core | App Configuration [provider](/dotnet/api/Microsoft.Extensions.Configuration.AzureAppConfiguration) for .NET Core | ASP.NET Core [quickstart](./quickstart-aspnet-core-app.md) |
5353
| .NET Framework and ASP.NET | App Configuration [builder](https://go.microsoft.com/fwlink/?linkid=2074663) for .NET | .NET Framework [quickstart](./quickstart-dotnet-app.md) |
5454
| Java Spring | App Configuration [provider](https://go.microsoft.com/fwlink/?linkid=2180917) for Spring Cloud | Java Spring [quickstart](./quickstart-java-spring-app.md) |
55-
| JavaScript/Node.js | App Configuration [client](https://go.microsoft.com/fwlink/?linkid=2103664) for JavaScript | Javascript/Node.js [quickstart](./quickstart-javascript.md)|
56-
| Python | App Configuration [client](https://go.microsoft.com/fwlink/?linkid=2103727) for Python | Python [quickstart](./quickstart-python.md) |
55+
| JavaScript/Node.js | App Configuration [provider](https://github.com/Azure/AppConfiguration-JavaScriptProvider) for JavaScript | Javascript/Node.js [quickstart](./quickstart-javascript-provider.md)|
56+
| Python | App Configuration [provider](https://pypi.org/project/azure-appconfiguration-provider/) for Python | Python [quickstart](./quickstart-python-provider.md)) |
5757
| Other | App Configuration [REST API](/rest/api/appconfiguration/) | None |
5858

5959
## Next steps

articles/azure-arc/data/includes/azure-arc-data-preview-release.md

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ ms.topic: include
88
ms.date: 12/12/2023
99
---
1010

11-
At this time, a test or preview build is not available for the next release.
12-
1311
<!--
12+
At this time, a test or preview build is not available for the next release.
13+
-->
1414

15-
Dec 2023 preview release is now available.
15+
February, 2024 test release is now available.
1616

1717
|Component|Value|
1818
|-----------|-----------|
19-
|Container images registry/repository |`mcr.microsoft.com/arcdata/preview`|
20-
|Container images tag |`v1.26.0_2023-12-12`|
19+
|Container images registry/repository |`mcr.microsoft.com/arcdata/test`|
20+
|Container images tag |`v1.27.0_2023-02-13`|
2121
|**CRD names and version:**| |
2222
|`activedirectoryconnectors.arcdata.microsoft.com`| v1beta1, v1beta2, v1, v2|
2323
|`datacontrollers.arcdata.microsoft.com`| v1beta1, v1 through v5|
@@ -34,17 +34,25 @@ Dec 2023 preview release is now available.
3434
|`telemetrycollectors.arcdata.microsoft.com`| v1beta1 through v1beta5|
3535
|`telemetryrouters.arcdata.microsoft.com`| v1beta1 through v1beta5|
3636
|Azure Resource Manager (ARM) API version|2023-11-01-preview|
37-
|`arcdata` Azure CLI extension version|1.5.8 ([Download](https://aka.ms/az-cli-arcdata-ext))|
38-
|Arc-enabled Kubernetes helm chart extension version|1.26.0|
37+
|`arcdata` Azure CLI extension version|1.6.0 ([Download](https://aka.ms/az-cli-arcdata-ext))|
38+
|Arc-enabled Kubernetes helm chart extension version|1.27.0|
3939
|Azure Arc Extension for Azure Data Studio<br/>`arc`<br/>`azcli`|<br/>1.8.0 ([Download](https://aka.ms/ads-arcdata-ext))</br>1.8.0 ([Download](https://aka.ms/ads-azcli-ext))|
4040
|SQL Database version | 957 |
4141

4242
### Release notes
4343

4444
#### Arc-enabled SQL Server
4545

46-
Arc SQL Server | Show the Data Processing Service (DPS) connectivity status in the Azure portal | GA
46+
Arc SQL Server & Arc Data Services | Available in Sweden Central Region | GA
47+
48+
Arc SQL Server & Arc Data Services | Available in Norway East Region | GA
49+
50+
Arc SQL Server & Arc Data Services | Available in UK West Region | GA
51+
52+
Arc SQL Server | Support for TLS 1.3
53+
54+
Arc SQL Server | Improved prompt for feedback in Azure portal | GA
55+
56+
Arc SQL Server | Monitoring | Show monitoring upload status on Arc SQL Server Overview UX | GA
4757

48-
Arc SQL Server | Monitoring | Add IOPS, Queue Latency Storage IO charts in Performance Dashboard in Azure portal
4958

50-
-->

articles/azure-arc/servers/includes/network-requirements.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ The Azure Connected Machine agent for Linux and Windows communicates outbound se
1313
To further secure your network connectivity to Azure Arc, instead of using public networks and proxy servers, you can implement an [Azure Arc Private Link Scope](../private-link-security.md) .
1414

1515
> [!NOTE]
16-
> Azure Arc-enabled servers does not support using a [Log Analytics gateway](../../../azure-monitor/agents/gateway.md) as a proxy for the Connected Machine agent.
16+
> Azure Arc-enabled servers does not support using a [Log Analytics gateway](../../../azure-monitor/agents/gateway.md) as a proxy for the Connected Machine agent. At the same time, Azure Monitor Agent supports Log Analytics gateway.
1717
1818
If outbound connectivity is restricted by your firewall or proxy server, make sure the URLs and Service Tags listed below are not blocked.
1919

articles/azure-monitor/containers/prometheus-metrics-scrape-configuration.md

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ Four different configmaps can be configured to provide scrape configuration and
2929
2. [`ama-metrics-prometheus-config`](https://aka.ms/azureprometheus-addon-rs-configmap) (**Recommended**)
3030
This config map can be used to provide Prometheus scrape config for addon replica. Addon runs a singleton replica, and any cluster level services can be discovered and scraped by providing scrape jobs in this configmap. You can take the sample configmap from the above git hub repo, add scrape jobs that you would need and apply/deploy the config map to `kube-system` namespace for your cluster.
3131
3. [`ama-metrics-prometheus-config-node`](https://aka.ms/azureprometheus-addon-ds-configmap) (**Advanced**)
32-
This config map can be used to provide Prometheus scrape config for addon DaemonSet that runs on every **Linux** node in the cluster, and any node level targets on each node can be scraped by providing scrape jobs in this configmap. When you use this configmap, you can use `$NODE_IP` variable in your scrape config, which gets substituted by corresponding node's ip address in DaemonSet pod running on each node. This way you get access to scrape anything that runs on that node from the metrics addon DaemonSet. **Please be careful when you use discoveries in scrape config in this node level config map, as every node in the cluster will setup & discover the target(s) and will collect redundant metrics**.
32+
This config map can be used to provide Prometheus scrape config for addon DaemonSet that runs on every **Linux** node in the cluster, and any node level targets on each node can be scraped by providing scrape jobs in this configmap. When you use this configmap, you can use `$NODE_IP` variable in your scrape config, which gets substituted by corresponding node's ip address in DaemonSet pod running on each node. This way you get access to scrape anything that runs on that node from the metrics addon DaemonSet. **Please be careful when you use discoveries in scrape config in this node level config map, as every node in the cluster will setup & discover the target(s) and will collect redundant metrics**.
3333
You can take the sample configmap from the above git hub repo, add scrape jobs that you would need and apply/deploy the config map to `kube-system` namespace for your cluster
3434
4. [`ama-metrics-prometheus-config-node-windows`](https://aka.ms/azureprometheus-addon-ds-configmap-windows) (**Advanced**)
35-
This config map can be used to provide Prometheus scrape config for addon DaemonSet that runs on every **Windows** node in the cluster, and node level targets on each node can be scraped by providing scrape jobs in this configmap. When you use this configmap, you can use `$NODE_IP` variable in your scrape config, which will be substituted by corresponding node's ip address in DaemonSet pod running on each node. This way you get access to scrape anything that runs on that node from the metrics addon DaemonSet. **Please be careful when you use discoveries in scrape config in this node level config map, as every node in the cluster will setup & discover the target(s) and will collect redundant metrics**.
35+
This config map can be used to provide Prometheus scrape config for addon DaemonSet that runs on every **Windows** node in the cluster, and node level targets on each node can be scraped by providing scrape jobs in this configmap. When you use this configmap, you can use `$NODE_IP` variable in your scrape config, which will be substituted by corresponding node's ip address in DaemonSet pod running on each node. This way you get access to scrape anything that runs on that node from the metrics addon DaemonSet. **Please be careful when you use discoveries in scrape config in this node level config map, as every node in the cluster will setup & discover the target(s) and will collect redundant metrics**.
3636
You can take the sample configmap from the above git hub repo, add scrape jobs that you would need and apply/deploy the config map to `kube-system` namespace for your cluster
3737

3838
## Metrics add-on settings configmap
@@ -308,6 +308,54 @@ metric_relabel_configs:
308308
regex: '.+'
309309
```
310310
311+
### TLS based scraping
312+
313+
If you have a Prometheus instance served with TLS and you want to scrape metrics from it, you need to set scheme to `https` and set the TLS settings in your configmap or respective CRD. You can use the `tls_config` configuration property inside a custom scrape job to configure the TLS settings either using a CRD or a configmap. You need to provide a CA certificate to validate API server certificate with. The CA certificate is used to verify the authenticity of the server's certificate when Prometheus connects to the target over TLS. It helps ensure that the server's certificate is signed by a trusted authority.
314+
315+
The secret should be created in kube-system namespace and then the configmap/CRD should be created in kube-system namespace. The order of secret creation matters. When there's no secret but a valid CRD/config map, you will find errors in collector log -> `no file found for cert....`
316+
317+
Below are the details about how to provide the TLS config settings through a configmap or CRD.
318+
319+
- To provide the TLS config setting in a configmap, please create the self-signed certificate and key inside /etc/prometheus/certs directory inside your mtls enabled app.
320+
An example tlsConfig inside the config map should look like this:
321+
322+
```yaml
323+
tls_config:
324+
ca_file: /etc/prometheus/certs/client-cert.pem
325+
cert_file: /etc/prometheus/certs/client-cert.pem
326+
key_file: /etc/prometheus/certs/client-key.pem
327+
insecure_skip_verify: false
328+
```
329+
330+
- To provide the TLS config setting in a CRD, please create the self-signed certificate and key inside /etc/prometheus/certs directory inside your mtls enabled app.
331+
An example tlsConfig inside a Podmonitor should look like this:
332+
333+
```yaml
334+
tlsConfig:
335+
ca:
336+
secret:
337+
key: "client-cert.pem" # since it is self-signed
338+
name: "ama-metrics-mtls-secret"
339+
cert:
340+
secret:
341+
key: "client-cert.pem"
342+
name: "ama-metrics-mtls-secret"
343+
keySecret:
344+
key: "client-key.pem"
345+
name: "ama-metrics-mtls-secret"
346+
insecureSkipVerify: false
347+
```
348+
> [!NOTE]
349+
> Make sure that the certificate file name and key name inside the mtls app is in the following format in case of a CRD based scraping.
350+
For example: secret_kube-system_ama-metrics-mtls-secret_cert-name.pem and secret_kube-system_ama-metrics-mtls-secret_key-name.pem.
351+
> The CRD needs to be created in kube-system namespace.
352+
> The secret name should exactly be ama-metrics-mtls-secret in kube-system namespace. An example command for creating secret: kubectl create secret generic ama-metrics-mtls-secret --from-file=secret_kube-system_ama-metrics-mtls-secret_client-cert.pem=secret_kube-system_ama-metrics-mtls-secret_client-cert.pem --from-file=secret_kube-system_ama-metrics-mtls-secret_client-key.pem=secret_kube-system_ama-metrics-mtls-secret_client-key.pem -n kube-system
353+
354+
To read more on TLS authentication, the following documents might be helpful.
355+
356+
- Generating TLS certificates -> https://o11y.eu/blog/prometheus-server-tls/
357+
- Configurations -> https://prometheus.io/docs/alerting/latest/configuration/#tls_config
358+
311359
## Next steps
312360

313361
[Setup Alerts on Prometheus metrics](./container-insights-metric-alerts.md)<br>

0 commit comments

Comments
 (0)