Files
the-order/docs/deployment/AZURE_CDN_SETUP_COMPLETE.md
T
defiQUG 92cc41d26d Add Legal Office seal and complete Azure CDN deployment
- Add Legal Office of the Master seal (SVG design with Maltese Cross, scales of justice, legal scroll)
- Create legal-office-manifest-template.json for Legal Office credentials
- Update SEAL_MAPPING.md and DESIGN_GUIDE.md with Legal Office seal documentation
- Complete Azure CDN infrastructure deployment:
  - Resource group, storage account, and container created
  - 17 PNG seal files uploaded to Azure Blob Storage
  - All manifest templates updated with Azure URLs
  - Configuration files generated (azure-cdn-config.env)
- Add comprehensive Azure CDN setup scripts and documentation
- Fix manifest URL generation to prevent double slashes
- Verify all seals accessible via HTTPS
2025-11-12 22:03:42 -08:00

5.1 KiB

Azure CDN Setup - Complete Status

✅ All Azure Components Prepared

Infrastructure Scripts Created

  1. Quota Checker: infra/scripts/azure-check-cdn-quotas.sh

    • Checks storage account quota
    • Checks CDN profile quota
    • Checks resource group quota
    • Generates quota report
  2. Infrastructure Setup: infra/scripts/azure-cdn-setup.sh

    • Creates resource group
    • Creates storage account
    • Creates container with public access
    • Creates CDN profile
    • Creates CDN endpoint
    • Configures CORS
    • Generates configuration file
  3. File Upload: scripts/deploy/upload-seals-to-azure.sh

    • Uploads all PNG files to Azure Blob Storage
    • Sets correct content types
    • Verifies uploads
  4. Complete Automation: scripts/deploy/setup-azure-cdn-complete.sh

    • Orchestrates all steps
    • Handles errors gracefully
    • Generates final configuration

Terraform Infrastructure

File: infra/terraform/cdn.tf

Creates:

  • Storage account for CDN images
  • Storage container with public blob access
  • CDN profile (Standard_Microsoft)
  • CDN endpoint with compression
  • CORS configuration

Quota Status

Verified Quotas:

  • ✅ Storage Accounts: 4/250 (246 available)
  • ✅ CDN Profiles: 0/25 (25 available)
  • ✅ Resource Groups: 7/980 (973 available)
  • ✅ CDN Endpoints: 0 (25 per profile available)
  • ✅ Storage Capacity: Sufficient

Status: All quotas are sufficient ✅

Components to be Created

Resource Group

  • Name: the-order-cdn-rg
  • Location: westeurope
  • Purpose: CDN infrastructure

Storage Account

  • Name: theordercdn<timestamp> (globally unique)
  • SKU: Standard_LRS
  • Public Access: Enabled (blob level)
  • CORS: Configured

Storage Container

  • Name: images
  • Access Type: Blob (public read)
  • Purpose: Store credential seal PNG files

CDN Profile

  • Name: theorder-cdn-profile
  • SKU: Standard_Microsoft
  • Purpose: CDN profile for image delivery

CDN Endpoint

  • Name: theorder-cdn-endpoint
  • Origin: Storage account blob host
  • Compression: Enabled (gzip, deflate)
  • Cache: 1 day default

Configuration File

After setup, azure-cdn-config.env will contain:

# Storage Account
AZURE_STORAGE_ACCOUNT=<account-name>
AZURE_STORAGE_KEY=<key>
AZURE_STORAGE_CONTAINER=images
AZURE_RESOURCE_GROUP=the-order-cdn-rg
AZURE_LOCATION=westeurope

# CDN
AZURE_CDN_PROFILE=theorder-cdn-profile
AZURE_CDN_ENDPOINT=theorder-cdn-endpoint
AZURE_CDN_ENDPOINT_URL=<endpoint-url>

# URLs
CDN_BASE_URL_BLOB=https://<account>.blob.core.windows.net/images/
CDN_BASE_URL_CDN=https://<endpoint>.azureedge.net/images/
CDN_BASE_URL=${CDN_BASE_URL_CDN:-${CDN_BASE_URL_BLOB}}

Running Setup

./scripts/deploy/setup-azure-cdn-complete.sh

Option 2: Step-by-Step

# 1. Check quotas
./infra/scripts/azure-check-cdn-quotas.sh

# 2. Create infrastructure
./infra/scripts/azure-cdn-setup.sh

# 3. Upload files
./scripts/deploy/upload-seals-to-azure.sh

# 4. Update manifest URLs
source azure-cdn-config.env
CDN_BASE_URL="${CDN_BASE_URL_CDN}" ./scripts/deploy/update-manifest-seal-urls.sh

Expected Output

After successful setup:

  1. ✅ Resource group created
  2. ✅ Storage account created
  3. ✅ Container created with public access
  4. ✅ CDN profile created
  5. ✅ CDN endpoint created (may take 10-15 min)
  6. ✅ PNG files uploaded (17 files)
  7. ✅ Manifest templates updated
  8. ✅ Configuration file generated

URLs Generated

Blob Storage URL (Immediate)

https://<storage-account>.blob.core.windows.net/images/

CDN URL (After Propagation)

https://<cdn-endpoint>.azureedge.net/images/

Note: CDN endpoint takes 10-15 minutes to fully propagate globally.

Verification Commands

# Check resource group
az group show --name the-order-cdn-rg

# Check storage account
az storage account show --name <storage-account> --resource-group the-order-cdn-rg

# Check container
az storage container show \
  --name images \
  --account-name <storage-account> \
  --account-key <key>

# Check CDN endpoint
az cdn endpoint show \
  --name theorder-cdn-endpoint \
  --profile-name theorder-cdn-profile \
  --resource-group the-order-cdn-rg

# Test file access
curl -I https://<storage-account>.blob.core.windows.net/images/digital-bank-seal.png

Cost Estimate

Monthly Costs (West Europe):

  • Storage: ~$0.0001/month (3.4MB total)
  • CDN: First 5GB free, then ~$0.04/GB
  • Total: ~$0-5/month depending on traffic

Security

  • ✅ HTTPS enforced (TLS 1.2+)
  • ✅ Public blob read access only (no write)
  • ✅ CORS configured for cross-origin requests
  • ✅ Storage keys stored securely (use Key Vault in production)

Next Steps After Setup

  1. ✅ Verify files are accessible
  2. ✅ Test credential issuance with new URLs
  3. ✅ Monitor CDN usage in Azure Portal
  4. ✅ Set up custom domain (optional)
  5. ✅ Configure alerts for quota limits

Status: ✅ All components prepared, quotas verified
Ready to Run: ./scripts/deploy/setup-azure-cdn-complete.sh
Last Updated: [Current Date]