Skip to content

Commit fa9a327

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into afd-tls
2 parents c5db97e + 5e3cf1e commit fa9a327

File tree

6 files changed

+294
-5
lines changed

6 files changed

+294
-5
lines changed

articles/container-apps/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,8 @@
360360
href: waf-app-gateway.md
361361
- name: Enable User Defined Routes (UDR)
362362
href: user-defined-routes.md
363+
- name: Use rule-based routing
364+
href: rule-based-routing.md
363365
- name: Securing a custom VNET with an NSG
364366
href: firewall-integration.md
365367
- name: Use a private endpoint

articles/container-apps/networking.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,20 @@ You can enable mTLS in the ARM template for Container Apps environments using th
385385

386386
---
387387

388+
### Rule-based routing (preview)
389+
390+
With rule-based routing, you create a fully qualified domain name (FQDN) on your container apps environment. You then use rules to route requests to this FQDN to different container apps, depending on the path of each request. This offers the following benefits.
391+
392+
- Isolation: By routing different paths to different container apps, you can deploy and update individual components without affecting the entire application.
393+
394+
- Scalability: With rule-based routing, you can scale individual container apps independently based on the traffic each container app receives.
395+
396+
- Custom Routing Rules: You can, for example, redirect users to different versions of your application or implement A/B testing.
397+
398+
- Security: You can implement security measures tailored to each container app. This helps you to reduce the attack surface of your application.
399+
400+
To learn how to configure rule-based routing on your container apps environment, see [Use rule-based routing](rule-based-routing.md).
401+
388402
## DNS
389403

390404
- **Custom DNS**: If your VNet uses a custom DNS server instead of the default Azure-provided DNS server, configure your DNS server to forward unresolved DNS queries to `168.63.129.16`. [Azure recursive resolvers](../virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances.md#name-resolution-that-uses-your-own-dns-server) uses this IP address to resolve requests. When configuring your NSG or firewall, don't block the `168.63.129.16` address, otherwise, your Container Apps environment doesn't function correctly.
Lines changed: 273 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,273 @@
1+
---
2+
title: Use rule-based routing in Azure Container Apps (preview)
3+
description: Learn how to use rule-based routing in Azure Container Apps.
4+
services: container-apps
5+
author: craigshoemaker
6+
ms.service: azure-container-apps
7+
ms.custom: devx-track-azurecli, devx-track-bicep
8+
ms.topic: how-to
9+
ms.date: 03/26/2025
10+
ms.author: cshoe
11+
zone_pivot_groups: azure-cli-bicep
12+
---
13+
14+
# Use rule-based routing with Azure Container Apps (preview)
15+
16+
In this article, you learn how to use rule-based routing with Azure Container Apps. With rule-based routing, you create a fully qualified domain name (FQDN) on your container apps environment. You then use rules to route requests to this FQDN to different container apps, depending on the path of each request.
17+
18+
## Prerequisites
19+
20+
- Azure account with an active subscription.
21+
- If you don't have one, you [can create one for free](https://azure.microsoft.com/free/).
22+
23+
- Install the [Azure CLI](/cli/azure/install-azure-cli).
24+
25+
::: zone pivot="bicep"
26+
27+
- [Bicep](/azure/azure-resource-manager/bicep/install)
28+
29+
::: zone-end
30+
31+
## Setup
32+
33+
To sign in to Azure from the CLI, run the following command and follow the prompts to complete the authentication process.
34+
35+
```azurecli
36+
az login
37+
```
38+
39+
To ensure you're running the latest version of the CLI, run the upgrade command.
40+
41+
```azurecli
42+
az upgrade
43+
```
44+
45+
Ignore any warnings about modules currently in use.
46+
47+
Next, install or update the Azure Container Apps extension for the CLI.
48+
49+
If you receive errors about missing parameters when you run `az containerapp` commands in Azure CLI or cmdlets from the `Az.App` module in PowerShell, be sure you have the latest version of the Azure Container Apps extension installed.
50+
51+
```azurecli
52+
az extension add --name containerapp --upgrade
53+
```
54+
55+
> [!NOTE]
56+
> Starting in May 2024, Azure CLI extensions no longer enable preview features by default. To access Container Apps [preview features](whats-new.md), install the Container Apps extension with `--allow-preview true`.
57+
> ```azurecli
58+
> az extension add --name containerapp --upgrade --allow-preview true
59+
> ```
60+
61+
Now that the current extension or module is installed, register the `Microsoft.App` and `Microsoft.OperationalInsights` namespaces.
62+
63+
```azurecli
64+
az provider register --namespace Microsoft.App
65+
```
66+
67+
```azurecli
68+
az provider register --namespace Microsoft.OperationalInsights
69+
```
70+
71+
::: zone pivot="azure-cli"
72+
73+
## Create environment variables
74+
75+
Create the following environment variables.
76+
77+
```bash
78+
$CONTAINER_APP_1_NAME="my-container-app-1"
79+
$CONTAINER_APP_1_IMAGE="mcr.microsoft.com/k8se/quickstart:latest"
80+
$CONTAINER_APP_1_TARGET_PORT="80"
81+
$CONTAINER_APP_2_NAME="my-container-app-2"
82+
$CONTAINER_APP_2_IMAGE="mcr.microsoft.com/dotnet/samples:aspnetapp"
83+
$CONTAINER_APP_2_TARGET_PORT="8080"
84+
$LOCATION="eastus"
85+
$RESOURCE_GROUP="my-container-apps"
86+
$ENVIRONMENT_NAME="my-container-apps-env"
87+
$ROUTE_CONFIG_NAME="my-route-config"
88+
```
89+
90+
## Create container apps
91+
92+
1. Run the following command to create your first container app. This container app uses the Container Apps quickstart image.
93+
94+
```azurecli
95+
az containerapp up \
96+
--name $CONTAINER_APP_1_NAME \
97+
--resource-group $RESOURCE_GROUP \
98+
--location $LOCATION \
99+
--environment $ENVIRONMENT_NAME \
100+
--image $CONTAINER_APP_1_IMAGE \
101+
--target-port $CONTAINER_APP_1_TARGET_PORT \
102+
--ingress external \
103+
--query properties.configuration.ingress.fqdn
104+
```
105+
106+
1. Run the following command to create your second container app. This container app uses the ASP.NET quickstart image.
107+
108+
```azurecli
109+
az containerapp up \
110+
--name $CONTAINER_APP_2_NAME \
111+
--resource-group $RESOURCE_GROUP \
112+
--location $LOCATION \
113+
--environment $ENVIRONMENT_NAME \
114+
--image $CONTAINER_APP_2_IMAGE \
115+
--target-port $CONTAINER_APP_2_TARGET_PORT \
116+
--ingress external \
117+
--query properties.configuration.ingress.fqdn
118+
```
119+
120+
## Create HTTP route configuration
121+
122+
1. Create the following YAML file and save it as `routing.yml`.
123+
124+
```yaml
125+
rules:
126+
- description: App 1 rule
127+
routes:
128+
- match:
129+
prefix: /app1
130+
action:
131+
prefixRewrite: /
132+
targets:
133+
- containerApp: my-container-app-1
134+
- description: App 2 rule
135+
routes:
136+
- match:
137+
path: /app2
138+
action:
139+
prefixRewrite: /
140+
targets:
141+
- containerApp: my-container-app-2
142+
```
143+
144+
1. Run the following command to create the HTTP route configuration.
145+
146+
```azurecli
147+
az containerapp env http-route-config create \
148+
--http-route-config-name $ROUTE_CONFIG_NAME \
149+
--resource-group $RESOURCE_GROUP \
150+
--name $ENVIRONMENT_NAME \
151+
--yaml routing.yml \
152+
--query properties.fqdn
153+
```
154+
155+
Your HTTP route configuration's fully qualified domain name (FQDN) looks like this example: `my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io`
156+
157+
::: zone-end
158+
159+
::: zone pivot="bicep"
160+
161+
1. Create the following Bicep file and save it as `routing.bicep`.
162+
163+
```bicep
164+
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = {
165+
name: 'my-container-apps-env'
166+
location: 'eastus'
167+
tags: {}
168+
properties: {
169+
workloadProfiles: [
170+
{
171+
workloadProfileType: 'Consumption'
172+
name: 'Consumption'
173+
}
174+
]
175+
}
176+
}
177+
178+
resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@2024-10-02-preview' = {
179+
parent: containerAppsEnvironment
180+
name: 'my-route-config'
181+
location: 'eastus'
182+
properties: {
183+
rules: [
184+
{
185+
description: 'App 1 rule'
186+
routes: [
187+
{
188+
match: {
189+
prefix: '/app1'
190+
}
191+
action: {
192+
prefixRewrite: '/'
193+
}
194+
}
195+
]
196+
targets: [
197+
{
198+
containerApp: 'my-container-app-1'
199+
}
200+
]
201+
}
202+
{
203+
description: 'App 2 rule'
204+
routes: [
205+
{
206+
match: {
207+
path: '/app2'
208+
}
209+
action: {
210+
prefixRewrite: '/'
211+
}
212+
}
213+
]
214+
targets: [
215+
{
216+
containerApp: 'my-container-app-2'
217+
}
218+
]
219+
}
220+
]
221+
}
222+
}
223+
224+
output fqdn string = httpRouteConfig.properties.fqdn
225+
```
226+
227+
1. Deploy the Bicep file with the following command:
228+
229+
```azurecli
230+
az deployment group create `
231+
--name $ROUTE_CONFIG_NAME `
232+
--resource-group $RESOURCE_GROUP `
233+
--template-file routing.bicep
234+
```
235+
236+
1. In the output, find `outputs`, which contains your HTTP route configuration's fully qualified domain name (FQDN). For example:
237+
238+
```
239+
"outputs": {
240+
"fqdn": {
241+
"type": "String",
242+
"value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io"
243+
}
244+
},
245+
```
246+
247+
::: zone-end
248+
249+
## Test HTTP route configuration
250+
251+
1. Browse to your HTTP route configuration FQDN with the path `/app1`. For example: `my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1`. You see the Container Apps quickstart image.
252+
253+
1. Browse to your HTTP route configuration FQDN with the path `/app2`. For example: `my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2`. You see the ASP.NET quickstart image.
254+
255+
## Clean up resources
256+
257+
If you're not going to continue to use this application, run the following command to delete the resource group along with all the resources created in this quickstart.
258+
259+
> [!CAUTION]
260+
> The following command deletes the specified resource group and all resources contained within it. If resources outside the scope of this quickstart exist in the specified resource group, they will also be deleted.
261+
262+
```azurecli
263+
az group delete --name my-container-apps
264+
```
265+
266+
> [!TIP]
267+
> Having issues? Let us know on GitHub by opening an issue in the [Azure Container Apps repo](https://github.com/microsoft/azure-container-apps).
268+
269+
## Related content
270+
271+
- [Azure CLI reference](/cli/azure/containerapp/env/http-route-config)
272+
- [Bicep reference](/azure/templates/microsoft.app/2024-10-02-preview/managedenvironments/httprouteconfigs?pivots=deployment-language-bicep)
273+
- [ARM template reference](/azure/templates/microsoft.app/2024-10-02-preview/managedenvironments/httprouteconfigs?pivots=deployment-language-arm-template)

articles/cost-management-billing/reservations/calculate-ea-reservations-savings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ms.reviewer: primittal
77
ms.service: cost-management-billing
88
ms.subservice: reservations
99
ms.topic: how-to
10-
ms.date: 01/22/2025
10+
ms.date: 03/26/2025
1111
ms.author: primittal
1212
#customer intent: As an Enterprise Agreement user, I want to learn about manually calculating my reservations savings.
1313
---
@@ -89,4 +89,4 @@ Instead of downloading usage files, one per month, you can get all your usage da
8989

9090
- If you have any unused reservations, read [Optimize reservation use](manage-reserved-vm-instance.md#optimize-reservation-use).
9191
- Learn more about creating an export at [Create and manage exported data](../costs/tutorial-export-acm-data.md).
92-
- Read about the RI savings report in the [Cost Management Power BI App for Enterprise Agreements](../costs/analyze-cost-data-azure-cost-management-power-bi-template-app.md).
92+
- Read about the RI savings report in the [Cost Management Power BI App for Enterprise Agreements](../costs/analyze-cost-data-azure-cost-management-power-bi-template-app.md).

articles/cost-management-billing/reservations/save-compute-costs-reservations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ms.author: primittal
1414

1515
Azure Reservations help you save money by committing to one-year or three-year plans for multiple products. Committing allows you to get a discount on the resources you use. Reservations can significantly reduce your resource costs by up to 72% from pay-as-you-go prices. Reservations provide a billing discount and don't affect the runtime state of your resources. After you purchase a reservation, the discount automatically applies to matching resources.
1616

17-
You can pay for a reservation up front or monthly. The total cost of up-front and monthly reservations is the same and you don't pay any extra fees when you choose to pay monthly. Monthly payments are for complete month and not proparted based on calendar month. As an example if you purchased a reservation on January 15, the next charge will be around February 15. Monthly payment is available for Azure reservations, not third-party products.
17+
You can pay for a reservation up front or monthly. The total cost of up-front and monthly reservations is the same and you don't pay any extra fees when you choose to pay monthly. Monthly payments are for complete month and not prorated based on calendar month. As an example, if you purchased a reservation on January 15, the next charge will be around February 15.
1818

1919
You can buy a reservation in the [Azure portal](https://portal.azure.com/#blade/Microsoft_Azure_Reservations/ReservationsBrowseBlade).
2020

articles/sentinel/multiple-tenants-service-providers.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.author: yelevin
1313

1414
# Manage multiple tenants in Microsoft Sentinel as an MSSP
1515

16-
If you're a managed security service provider (MSSP) and you're using [Azure Lighthouse](/azure/lighthouse/overview) to offer security operations center (SOC) services to your customers, you can manage your customers' Microsoft Sentinel resources directly from your own Azure tenant, without having to connect to the customer's tenant.
16+
If you're a managed security service provider (MSSP) and you're using [Azure Lighthouse](/azure/lighthouse/overview) to offer security operations center (SOC) services to your customers, you can manage your customers' Microsoft Sentinel resources directly from your own Azure tenant, without having to connect to the customer's tenant. The Microsoft Sentinel technical playbook for MSSPs is a great source for best practices. For more information, download the technical playbook here at [https://aka.ms/mssentinelmssp](https://aka.ms/mssentinelmssp).
1717

1818
## Prerequisites
1919

@@ -44,7 +44,7 @@ If you have registered Microsoft Sentinel in your tenant, and your customers in
4444
1. Open Microsoft Sentinel, where you'll see all the workspaces in the selected subscriptions and can work with them seamlessly, just like any workspace in your own tenant.
4545

4646
> [!NOTE]
47-
> You will not be able to deploy connectors in Microsoft Sentinel from within a managed workspace. To deploy a connector, you must directly sign into the tenant on which you want to deploy a connector, and authenticate there with the required permissions.
47+
> You will not be able to deploy connectors in Microsoft Sentinel from within a managed workspace configured with Azure Lighthouse alone. To deploy a connector in this manner, you must also configure GDAP. For detailed information on this topic, see (The Microsoft Sentinel technical playbook for MSSPs)(https://aka.ms/mssentinelmssp).
4848
4949
## Related content
5050

0 commit comments

Comments
 (0)