Skip to content

Commit 1a3d262

Browse files
authored
Merge pull request #290441 from MicrosoftDocs/release-ignite-container-apps
[Ignite 2024 ship room] Container Apps - #320474
2 parents ce1c563 + 37afd8d commit 1a3d262

25 files changed

+1273
-75
lines changed

articles/container-apps/TOC.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@
6767
href: sessions-custom-container.md
6868
- name: Microservices
6969
href: microservices.md
70+
- name: Planned maintenance
71+
href: planned-maintenance.md
7072
- name: Build and deliver apps with Container Apps (video)
7173
href: https://www.youtube.com/watch?v=b3dopSTnSRg
7274
- name: Develop & deploy
@@ -247,6 +249,14 @@
247249
href: workload-profiles-manage-cli.md
248250
- name: Portal
249251
href: workload-profiles-manage-portal.md
252+
- name: GPUs
253+
items:
254+
- name: Serverless GPUs
255+
href: gpu-serverless-overview.md
256+
- name: Tutorials
257+
items:
258+
- name: Generate images with serverless GPUs
259+
href: gpu-image-generation.md
250260
- name: Microservices
251261
items:
252262
- name: Developing with Dapr
@@ -294,6 +304,8 @@
294304
href: vnet-custom.md
295305
- name: Deploy with an internal environment
296306
href: vnet-custom-internal.md
307+
- name: Integrate with Azure Front Door
308+
href: how-to-integrate-with-azure-front-door.md
297309
- name: Ingress
298310
items:
299311
- name: Overview
@@ -323,6 +335,8 @@
323335
href: user-defined-routes.md
324336
- name: Securing a custom VNET with an NSG
325337
href: firewall-integration.md
338+
- name: Use a private endpoint
339+
href: how-to-use-private-endpoint.md
326340
- name: Use a custom VNET
327341
href: vnet-custom.md
328342
- name: Languages and runtimes

articles/container-apps/billing.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ms.service: azure-container-apps
77
ms.custom:
88
- ignite-2023
99
ms.topic: conceptual
10-
ms.date: 10/02/2024
10+
ms.date: 11/05/2024
1111
ms.author: cshoe
1212
---
1313

@@ -43,6 +43,10 @@ Free usage doesn't appear on your bill. You're only charged as your resource usa
4343
> [!NOTE]
4444
> If you use Container Apps with [your own virtual network](networking.md#managed-resources) or your apps utilize other Azure resources, additional charges may apply.
4545
46+
### Serverless GPU
47+
48+
Serverless GPU compute is calculated on a per-second billing rate.
49+
4650
### Resource consumption charges
4751

4852
Azure Container Apps runs replicas of your application based on the [scaling rules and replica count limits](scale-app.md) you configure for each revision. [Azure Container Apps jobs](jobs.md) run replicas when job executions are triggered. You're charged for the amount of resources allocated to each replica while it's running.

articles/container-apps/custom-domains-certificates.md

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,21 +63,41 @@ Azure Container Apps allows you to bind one or more custom domains to a containe
6363
| Apex domain | A record | An apex domain is a domain at the root level of your domain. For example, if your DNS (Domain Name System) zone is `contoso.com`, then `contoso.com` is the apex domain. |
6464
| Subdomain | CNAME | A subdomain is a domain that is part of another domain. For example, if your DNS zone is `contoso.com`, then `www.contoso.com` is an example of a subdomain that can be configured in the zone. |
6565

66-
1. Using the DNS provider that is hosting your domain, create DNS records based on the *Hostname record type* you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you own it.
66+
1. Using the DNS provider that is hosting your domain, create DNS records based on the *Hostname record type* you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you own it. The setup depends on whether you are using custom domains with the private endpoint (preview) feature:
6767

68+
# [General](#tab/general)
69+
6870
- If you selected *A record*, create the following DNS records:
6971

7072
| Record type | Host | Value |
7173
|--|--|--|
72-
| A | `@` | The IP address of your Container Apps environment |
73-
| TXT | `asuid` | The domain verification code |
74+
| A | `@` | The IP address of your Container Apps environment. |
75+
| TXT | `asuid` | The domain verification code. |
7476

7577
- If you selected *CNAME*, create the following DNS records:
7678

7779
| Record type | Host | Value |
7880
|--|--|--|
79-
| CNAME | The subdomain (for example, `www`) | The automatically generated domain of your container app |
80-
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code |
81+
| CNAME | The subdomain (for example, `www`) | The generated domain of your container app. |
82+
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code. |
83+
84+
# [Private endpoint](#tab/private-endpoint)
85+
86+
- If you selected *A record*, you need to have a private DNS zone which has the same DNS zone name as your public DNS. Create the following DNS records on your private DNS zone:
87+
88+
| Record type | Host | Value |
89+
|--|--|--|
90+
| A | `@` | The Private IP of your private endpoint on your container apps environment. |
91+
| TXT | `asuid` | The domain verification code. |
92+
93+
- If you selected *CNAME*, create the following DNS records:
94+
95+
| Record type | Host | Value |
96+
|--|--|--|
97+
| CNAME | The subdomain (for example, `www`) | The generated domain of your container app. |
98+
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code. |
99+
100+
---
81101

82102
1. Select the **Validate** button.
83103

articles/container-apps/custom-domains-managed-certificates.md

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,41 @@ The requirements are:
6262
| Apex domain | A record | An apex domain is a domain at the root level of your domain. For example, if your DNS zone is `contoso.com`, then `contoso.com` is the apex domain. |
6363
| Subdomain | CNAME | A subdomain is a domain that is part of another domain. For example, if your DNS zone is `contoso.com`, then `www.contoso.com` is an example of a subdomain that can be configured in the zone. |
6464

65-
1. Using the DNS provider that is hosting your domain, create DNS records based on the *Hostname record type* you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you're the owner.
65+
1. Using the DNS provider that is hosting your domain, create DNS records based on the *Hostname record type* you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you're the owner. The setup depends on whether you are using custom domains with the private endpoint (preview) feature:
6666

67+
# [General](#tab/general)
68+
6769
- If you selected *A record*, create the following DNS records:
6870

6971
| Record type | Host | Value |
7072
|--|--|--|
71-
| A | `@` | The IP address of your Container Apps environment |
72-
| TXT | `asuid` | The domain verification code |
73+
| A | `@` | The IP address of your Container Apps environment. |
74+
| TXT | `asuid` | The domain verification code. |
7375

7476
- If you selected *CNAME*, create the following DNS records:
7577

7678
| Record type | Host | Value |
7779
|--|--|--|
78-
| CNAME | The subdomain (for example, `www`) | The automatically generated `<appname>.<region>.azurecontainerapps.io` domain of your container app |
79-
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code |
80+
| CNAME | The subdomain (for example, `www`) | The generated domain of your container app. |
81+
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code. |
82+
83+
# [Private endpoint](#tab/private-endpoint)
84+
85+
- If you selected *A record*, you need to have a private DNS zone which has the same DNS zone name as your public DNS. Create the following DNS records on your private DNS zone:
86+
87+
| Record type | Host | Value |
88+
|--|--|--|
89+
| A | `@` | The Private IP of your private endpoint on your container apps environment. |
90+
| TXT | `asuid` | The domain verification code. |
91+
92+
- If you selected *CNAME*, create the following DNS records:
93+
94+
| Record type | Host | Value |
95+
|--|--|--|
96+
| CNAME | The subdomain (for example, `www`) | The generated domain of your container app. |
97+
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code. |
98+
99+
---
80100

81101
1. Select **Validate**.
82102

@@ -149,21 +169,43 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
149169
150170
Replace `<CONTAINER_APP_NAME>` with the name of your container app, and `<RESOURCE_GROUP_NAME>` with the name of the resource group that contains your container app.
151171
152-
1. Using the DNS provider that is hosting your domain, create DNS records based on the record type you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you own it.
172+
1. Using the DNS provider that is hosting your domain, create DNS records based on the record type you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you own it. The setup depends on whether you are using custom domains with the private endpoint (preview) feature:
173+
174+
# [General](#tab/general)
175+
176+
- If you selected *A record*, create the following DNS records:
177+
178+
| Record type | Host | Value |
179+
|--|--|--|
180+
| A | `@` | The IP address of your Container Apps environment. |
181+
| TXT | `asuid` | The domain verification code. |
182+
183+
- If you selected *CNAME*, create the following DNS records:
184+
185+
| Record type | Host | Value |
186+
|--|--|--|
187+
| CNAME | The subdomain (for example, `www`) | The generated domain of your container app. |
188+
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code. |
189+
190+
# [Private endpoint](#tab/private-endpoint)
191+
192+
When using a private endpoint for your incoming traffic, you need to [create a private DNS zone](how-to-use-private-endpoint.md#configure-the-private-dns-zone).
153193
154-
- If you're configuring an apex domain, create the following DNS records:
194+
- If you selected *A record*, create the following DNS records:
155195
156196
| Record type | Host | Value |
157197
|--|--|--|
158-
| A | `@` | The IP address of your Container Apps environment |
159-
| TXT | `asuid` | The domain verification code |
198+
| A | `@` | The Private IP of your private endpoint on your container apps environment. |
199+
| TXT | `asuid` | The domain verification code. |
160200
161-
- If you're configuring a subdomain, create the following DNS records:
201+
- If you selected *CNAME*, create the following DNS records:
162202
163203
| Record type | Host | Value |
164204
|--|--|--|
165-
| CNAME | The subdomain (for example, `www`) | The automatically generated domain of your container app |
166-
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code |
205+
| CNAME | The subdomain (for example, `www`) | The generated domain of your container app. |
206+
| TXT | `asuid.` followed by the subdomain (for example, `asuid.www`) | The domain verification code. |
207+
208+
---
167209
168210
1. Add the domain to your container app.
169211
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
---
2+
title: "Tutorial: Generate images using serverless GPUs in Azure Container Apps (preview)"
3+
description: Learn to run to generate images powered by serverless GPUs in Azure Container Apps.
4+
services: container-apps
5+
author: craigshoemaker
6+
ms.service: azure-container-apps
7+
ms.topic: how-to
8+
ms.date: 11/06/2024
9+
ms.author: cshoe
10+
---
11+
12+
# Tutorial: Generate images using serverless GPUs in Azure Container Apps (preview)
13+
14+
In this article, you learn how to create a container app that uses [serverless GPUs](gpu-serverless-overview.md) to power an AI application.
15+
16+
With serverless GPUs, you have direct access to GPU compute resources without having to do manual infrastructure configuration such as installing drivers. All you have to do is deploy your AI model's image.
17+
18+
In this tutorial you:
19+
20+
> [!div class="checklist"]
21+
> * Create a new container app and environment
22+
> * Configure the environment to use serverless GPUs
23+
> * Deploy your app to Azure Container Apps
24+
> * Use the new serverless GPU enable application
25+
> * Enable artifact streaming to reduce GPU cold start
26+
27+
## Prerequisites
28+
29+
| Resource | Description |
30+
|---|---|
31+
| Azure account | You need an Azure account with an active subscription. If you don't have one, you [can create one for free](https://azure.microsoft.com/free/). |
32+
| Azure Container Registry instance | You need an existing Azure Container Registry instance or the permissions to create one. |
33+
| Access to serverless GPUs | Access to GPUs is only available after you request GPU quotas. You can submit your GPU quota request via a [customer support case](/azure/azure-portal/supportability/how-to-create-azure-support-request). |
34+
35+
## Create your container app
36+
37+
1. Go to the Azure portal and search for and select **Container Apps**.
38+
1. Select **Create** and then select **Container App**.
39+
1. In the *Basics* window, enter the following values into each section.
40+
41+
Under *Project details* enter the following values:
42+
43+
| Setting | Value |
44+
|---|---|
45+
| Subscription | Select your Azure subscription. |
46+
| Resource group | Select **Create new** and enter **my-gpu-demo-group**. |
47+
| Container app name | Enter **my-gpu-demo-app**. |
48+
| Deployment source | Select **Container image**. |
49+
50+
Under *Container Apps environment* enter the following values:
51+
52+
| Setting | Value |
53+
|---|---|
54+
| Region | Select **West US 3**. <br><br>For more supported regions, refer to [Using serverless GPUs in Azure](gpu-serverless-overview.md#supported-regions). |
55+
| Container Apps environment | Select **Create new**. |
56+
57+
In the *Create Container Apps environment* window, enter the following values:
58+
59+
| Setting | Value |
60+
|---|---|
61+
| Environment name | Enter **my-gpu-demo-env**. |
62+
63+
Select **Create**.
64+
65+
Select **Next: Container >**.
66+
67+
1. In the *Container* window, enter the following values:
68+
69+
| Setting | Value |
70+
|---|---|
71+
| Name | Enter **my-gpu-demo-container**. |
72+
| Image source | Select **Docker Hub or other registries**. |
73+
| Image type | Select **public**. |
74+
| Registry login server | Enter **mcr.microsoft.com**. |
75+
| Image and tag | Enter **k8se/gpu-quickstart:latest**. |
76+
| Workload profile | Select the option that begins with **Consumption - Up to 4**... |
77+
| GPU | Select the checkbox. |
78+
| GPU Type | Select the **T4** option and select the link to add the profile to your environment. |
79+
80+
Select **Next: Ingress >**.
81+
82+
1. In the *Ingress* window, enter the following values:
83+
84+
| Setting | Value |
85+
|---|---|
86+
| Ingress | Select the **Enabled** checkbox. |
87+
| Ingress traffic | Select the **Accepting traffic from anywhere** radio button. |
88+
| Target port | Enter **80**. |
89+
90+
1. Select **Review + create**.
91+
92+
1. Select **Create**.
93+
94+
1. Wait a few moments for the deployment to complete and then select **Go to resource**.
95+
96+
This process can take up to five minutes to complete.
97+
98+
## Use your GPU app
99+
100+
From the *Overview* window, select the **Application Url** link to open the web app front end in your browser and use the GPU application.
101+
102+
> [!NOTE]
103+
> To achieve the best performance of your GPU apps, follow the steps to [improve cold start for your serverless GPUs](gpu-serverless-overview.md#improve-gpu-cold-start).
104+
105+
## Monitor your GPU
106+
107+
Once you generate an image, use the following steps to view results of the GPU processing:
108+
109+
1. Open your container app in the Azure portal.
110+
111+
1. From the *Monitoring* section, select **Console**.
112+
113+
1. Select your replica.
114+
115+
1. Select your container.
116+
117+
1. Select **Reconnect*.
118+
119+
1. In the *Choose start up command* window, select **/bin/bash**, and select **Connect**.
120+
121+
1. Once the shell is set up, enter the command **nvidia-smi** to review the status and output of your GPU.
122+
123+
## Clean up resources
124+
125+
The resources created in this tutorial have an effect on your Azure bill.
126+
127+
If you aren't going to use these services long-term, use the steps to remove everything created in this tutorial.
128+
129+
1. In the Azure portal, search for and select **Resource Groups**.
130+
131+
1. Select **my-gpu-demo-group**.
132+
133+
1. Select **Delete resource group**.
134+
135+
1. In the confirmation box, enter **my-gpu-demo-group**.
136+
137+
1. Select **Delete**.
138+
139+
## Next steps
140+
141+
> [!div class="nextstepaction"]
142+
> [Improve cold start for your serverless GPUs](gpu-serverless-overview.md#improve-gpu-cold-start)

0 commit comments

Comments
 (0)