Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
7712d4a
fix: update deployment scripts and templates for WAF support and priv…
Akhileswara-Microsoft Jul 7, 2026
64a6ad0
fix: update deployment guide to include script for building and pushi…
Akhileswara-Microsoft Jul 8, 2026
949c253
fix: address Copilot review comments on WAF ACR toggle (PR #318)
Akhileswara-Microsoft Jul 8, 2026
7d5223f
fix: update default image tag and placeholder container image for con…
Akhileswara-Microsoft Jul 8, 2026
448e1f1
fix: ensure default image tag is applied after environment variable f…
Akhileswara-Microsoft Jul 8, 2026
174e71a
fix: include subscription ID in environment variable checks for conta…
Akhileswara-Microsoft Jul 13, 2026
3c96cb6
Update Owners ID for Vinay and Prajwal
NirajC3-Microsoft Jul 16, 2026
8f48782
Merge pull request #321 from chaudhariniraj/main
Roopan-Microsoft Jul 16, 2026
03aa515
fix: update placeholder image script references and add new build/pus…
Akhileswara-Microsoft Jul 17, 2026
168813d
fix: remove deprecated deploy_container_images scripts for cleaner de…
Akhileswara-Microsoft Jul 17, 2026
c32d226
fix: update deployment scripts to use new acr_build_push scripts for …
Akhileswara-Microsoft Jul 17, 2026
ff1cd6f
Potential fix for pull request finding
Akhileswara-Microsoft Jul 17, 2026
196fc3e
Potential fix for pull request finding
Akhileswara-Microsoft Jul 17, 2026
0dc96ec
Potential fix for pull request finding
Akhileswara-Microsoft Jul 17, 2026
5f0dd5e
fix: update resource ID references for private networking in containe…
Akhileswara-Microsoft Jul 17, 2026
a64dcff
remove local deployment changes
Priyanka2-Microsoft Jul 17, 2026
7ffec45
fix: update deployment scripts and templates for WAF support
Avijit-Microsoft Jul 17, 2026
8a591b4
fix: update container registry module to reference VNet and DNS zone …
Akhileswara-Microsoft Jul 17, 2026
466bee7
fix: update container registry module to reference VNet and DNS zone …
Avijit-Microsoft Jul 17, 2026
c6b6251
Merge pull request #323 from Priyanka2-Microsoft/remove-local-deploym…
Roopan-Microsoft Jul 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in the repo.
* @Avijit-Microsoft @Roopan-Microsoft @Prajwal1-Microsoft @VinaySh-Microsoft @aniaroramsft @Dongbumlee @sethsteenken @toherman-msft @nchandhi @dgp10801
* @Avijit-Microsoft @Roopan-Microsoft @Prajwal-Microsoft @Vinay-Microsoft @aniaroramsft @Dongbumlee @sethsteenken @toherman-msft @nchandhi @dgp10801
8 changes: 4 additions & 4 deletions azure.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ hooks:
posix:
shell: sh
run: |
echo "==> Building and pushing container images to the dedicated ACR (remote build)"
bash ./scripts/deploy_container_images.sh
echo "ℹ️ Container images are NOT built automatically. Run the build manually when ready:"
echo " bash ./scripts/acr_build_push.sh"
echo "-----"
echo "🧭 Web App Details:"
echo "✅ Name: $CONTAINER_WEB_APP_NAME"
Expand All @@ -29,8 +29,8 @@ hooks:
windows:
shell: pwsh
run: |
Write-Host "==> Building and pushing container images to the dedicated ACR (remote build)"
./scripts/deploy_container_images.ps1
Write-Host "ℹ️ Container images are NOT built automatically. Run the build manually when ready:"
Write-Host " ./scripts/acr_build_push.ps1"
Write-Host "-----"
Write-Host "🧭 Web App Details:"
Write-Host "✅ Name: $env:CONTAINER_WEB_APP_NAME"
Expand Down
18 changes: 16 additions & 2 deletions docs/DeploymentGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,21 @@ azd up

**⚠️ Deployment Issues:** If you encounter errors or timeouts, try a different region as there may be capacity constraints. For detailed error solutions, see our [Troubleshooting Guide](./TroubleShootingSteps.md).

### 4.3 Get Application URL
### 4.3 Run the script to build and push the application images

Build and push the frontend, backend, and processor images to the dedicated ACR, then update the Container Apps to use them. This step is **not run automatically** by `azd up` — run it from the repository root after deployment:

```powershell
# PowerShell
./scripts/acr_build_push.ps1
```

```bash
# Bash
bash ./scripts/acr_build_push.sh
```

### 4.4 Get Application URL

After successful deployment:
1. Open [Azure Portal](https://portal.azure.com/)
Expand All @@ -315,7 +329,7 @@ After successful deployment:

### 5.2 Verify Deployment

1. Access your application using the URL from Step 4.3
1. Access your application using the URL from Step 4.4
2. Confirm the application loads successfully
3. Verify you can sign in with your authenticated account

Expand Down
26 changes: 17 additions & 9 deletions infra/main.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ param azureAiServiceLocation string
#disable-next-line no-unused-params
param containerRegistryEndpoint string = ''

@description('Optional. The image tag to use for container images. Defaults to "latest_v2".')
param imageTag string = 'latest_v2'
@description('Optional. The image tag to use for container images. Defaults to "latest".')
param imageTag string = 'latest'
Comment thread
Akhileswara-Microsoft marked this conversation as resolved.

@description('''Optional. Placeholder container image used to initially provision the container apps.
The dedicated Azure Container Registry is empty right after infrastructure provisioning, so a public image is used as the default allowed image until the post-deployment script (scripts/deploy_container_images.*) builds and pushes the deployment-specific images and updates the apps. Defaults to the Azure Container Apps quickstart image.''')
param placeholderContainerImage string = 'mcr.microsoft.com/k8se/quickstart:latest'
The dedicated Azure Container Registry is empty right after infrastructure provisioning, so a public image is used as the default allowed image until the post-deployment script (scripts/acr_build_push.*) builds and pushes the deployment-specific images and updates the apps. Defaults to the Azure Container Apps hello-world image.''')
param placeholderContainerImage string = 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest'

@minLength(1)
@allowed(['Standard', 'GlobalStandard'])
Expand Down Expand Up @@ -236,13 +236,19 @@ module containerRegistry './modules/containerRegistry.bicep' = {
name: containerRegistryName
location: solutionLocation
tags: allTags
// Premium SKU in WAF/private-networking mode (supports higher throughput and
// future private endpoints). Public network access is kept Enabled in both
// modes so remote `az acr build` (ACR Tasks) and managed-identity pulls work;
// AzureServices bypass lets trusted ACR Tasks reach the registry.
// Premium SKU in WAF/private-networking mode (required for private endpoints
// and network rule sets). In WAF mode public network access is Disabled at
// rest; runtime pulls flow over a private endpoint and the post-deploy build
// script temporarily re-enables public access for the remote `az acr build`.
sku: enablePrivateNetworking ? 'Premium' : 'Standard'
publicNetworkAccess: 'Enabled'
publicNetworkAccess: enablePrivateNetworking ? 'Disabled' : 'Enabled'
networkRuleBypassOptions: 'AzureServices'
// WAF: host the registry private endpoint in the backend subnet and link it
// to the privatelink.azurecr.io DNS zone so image pulls resolve privately.
// Reference the VNet and DNS zone outputs directly to avoid case-sensitivity
// issues with manually constructed resource IDs.
privateEndpointSubnetResourceId: enablePrivateNetworking ? virtualNetwork!.outputs.backendSubnetResourceId : ''
privateDnsZoneResourceId: enablePrivateNetworking ? avmPrivateDnsZones[dnsZoneIndex.containerRegistry]!.outputs.resourceId : ''
// Application managed identity gets AcrPull for identity-based image pulls.
acrPullPrincipalIds: [
appIdentity.outputs.principalId
Expand Down Expand Up @@ -605,6 +611,7 @@ var privateDnsZones = [
'privatelink.blob.${environment().suffixes.storage}'
'privatelink.queue.${environment().suffixes.storage}'
'privatelink.azconfig.io'
'privatelink.azurecr.io'
]

// DNS Zone Index Constants
Expand All @@ -616,6 +623,7 @@ var dnsZoneIndex = {
storageBlob: 4
storageQueue: 5
appConfig: 6
containerRegistry: 7
}

// List of DNS zone indices that correspond to AI-related services.
Expand Down
Loading
Loading