feat: Implement Azure Container Apps construct with environment support#96
Merged
lukeorellana merged 7 commits intoAzure:mainfrom Apr 3, 2026
Merged
feat: Implement Azure Container Apps construct with environment support#96lukeorellana merged 7 commits intoAzure:mainfrom
lukeorellana merged 7 commits intoAzure:mainfrom
Conversation
…ources Implements ContainerAppEnvironment (Microsoft.App/managedEnvironments) and ContainerApp (Microsoft.App/containerApps) using AZAPI provider with API versions 2024-03-01 and 2025-07-01 (latest). Agent-Logs-Url: https://github.com/lukeorellana/terraform-cdk-constructs/sessions/b4797eae-c4c5-47e8-bfac-b0fda6cbb5a0 Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com>
Agent-Logs-Url: https://github.com/lukeorellana/terraform-cdk-constructs/sessions/b4797eae-c4c5-47e8-bfac-b0fda6cbb5a0 Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com>
…hema - Restructure README to match other construct READMEs (Features before Supported API Versions, inline resource descriptions in intro) - Add identity property to ContainerApp API schemas to fix validation warning - All 80 spec tests pass with zero warnings Agent-Logs-Url: https://github.com/lukeorellana/terraform-cdk-constructs/sessions/62cf1be9-e106-4928-888f-265f307e3ebd Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com>
…m plan drift
- Add 2025-02-02-preview API version support for both ContainerAppEnvironment
and ContainerApp (azapi ~2.7.0 does not support 2025-07-01)
- Update defaultVersion() to 2025-02-02-preview for both constructs
- Add customizeResourceConfig() override to both constructs:
- Strip location from body and promote to top-level attribute to prevent
Azure location normalization drift ("East US" vs "eastus")
- Enable ignoreCasing to prevent enum value casing drift ("Auto" vs "auto")
- Remove explicit apiVersion from integration tests (defaults now correct)
…struct feat: add Azure Container Apps construct (Microsoft.App)
* Initial plan
* Fix JSII build errors: extract inline types to named interfaces and replace Record<string, never>
- Extract inline object types in ContainerAppEnvironmentPeerAuthentication.mtls
and ContainerAppEnvironmentPeerTrafficConfig.encryption to named interfaces
(ContainerAppEnvironmentMtlsConfig, ContainerAppEnvironmentEncryptionConfig)
- Extract inline object types in ContainerAppScaleRule (azureQueue, custom, http, tcp)
to named interfaces (ContainerAppAzureQueueScaleRule, ContainerAppCustomScaleRule,
ContainerAppHttpScaleRule, ContainerAppTcpScaleRule)
- Extract inline object type in ContainerAppDapr.appHealth to ContainerAppDaprHealthConfig
- Extract inline object type in ContainerAppRuntime.java to ContainerAppJavaRuntimeConfig
- Replace Record<string, never> in ContainerAppIdentity.userAssignedIdentities
with { [key: string]: any } matching repo conventions
Agent-Logs-Url: https://github.com/lukeorellana/terraform-cdk-constructs/sessions/75965f9a-7520-4875-a1bf-75846c798a49
Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com>
* Initial plan * chore: regenerate yarn.lock to fix CI self-mutation check Agent-Logs-Url: https://github.com/lukeorellana/terraform-cdk-constructs/sessions/18ead311-9872-4092-96a2-7f65422bb292 Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lukeorellana <36606066+lukeorellana@users.noreply.github.com>
archit017
approved these changes
Apr 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new Azure Container Apps module to the codebase, providing constructs for both Container App Environments and Container Apps with extensive documentation, schema exports, and integration tests. The changes make the module available for import, document its features and usage, and add end-to-end integration tests to ensure reliability.
Azure Container Apps Module Introduction and Integration:
Module Implementation and Exports
ContainerAppEnvironmentandContainerApp, including schema exports for both environments and apps. The module is now exported in the mainsrc/index.tsand its ownindex.tsfiles for easy consumption. [1] [2] [3] [4] [5] [6]Documentation
README.mddetailing features (such as version management, ingress, Dapr integration, scaling, secrets, managed identity, VNet, zone redundancy, mTLS, and peer encryption), supported API versions, usage examples, property tables, outputs, and available methods.Testing and Validation:
ContainerAppEnvironmentandContainerAppconstructs. These tests validate deployment, idempotency, and cleanup using real Azure resources, ensuring the constructs work as intended and are production-ready. [1] [2]