@swovohq/fuel 0.2.2-alpha.88 → 0.2.2-alpha.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -2
- package/dist/commands/create-app.d.ts.map +1 -1
- package/dist/commands/create-app.js +9 -3
- package/dist/commands/create-app.js.map +1 -1
- package/dist/commands/infra-deploy.d.ts.map +1 -1
- package/dist/commands/infra-deploy.js +3 -0
- package/dist/commands/infra-deploy.js.map +1 -1
- package/dist/commands/infra-init.d.ts.map +1 -1
- package/dist/commands/infra-init.js +63 -6
- package/dist/commands/infra-init.js.map +1 -1
- package/dist/infra/credentials.d.ts.map +1 -1
- package/dist/infra/credentials.js +5 -2
- package/dist/infra/credentials.js.map +1 -1
- package/dist/infra/github-client.d.ts +6 -0
- package/dist/infra/github-client.d.ts.map +1 -1
- package/dist/infra/github-client.js +30 -0
- package/dist/infra/github-client.js.map +1 -1
- package/dist/infra/github-token-link.d.ts +4 -0
- package/dist/infra/github-token-link.d.ts.map +1 -0
- package/dist/infra/github-token-link.js +28 -0
- package/dist/infra/github-token-link.js.map +1 -0
- package/dist/infra/orchestrator.d.ts +4 -1
- package/dist/infra/orchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator.js +16 -7
- package/dist/infra/orchestrator.js.map +1 -1
- package/dist/infra/preflight.d.ts.map +1 -1
- package/dist/infra/preflight.js +9 -1
- package/dist/infra/preflight.js.map +1 -1
- package/dist/infra/template-engine.d.ts +0 -4
- package/dist/infra/template-engine.d.ts.map +1 -1
- package/dist/infra/template-engine.js +36 -12
- package/dist/infra/template-engine.js.map +1 -1
- package/dist/infra/types.d.ts.map +1 -1
- package/dist/infra/types.js +58 -6
- package/dist/infra/types.js.map +1 -1
- package/dist/infra-templates/TODO-azure-prod.md +119 -0
- package/dist/infra-templates/modules/azure-container-app/main.tf +124 -0
- package/dist/infra-templates/modules/azure-container-app/outputs.tf +24 -0
- package/dist/infra-templates/modules/azure-container-app/variables.tf +80 -0
- package/dist/infra-templates/modules/azure-container-apps-environment/main.tf +18 -0
- package/dist/infra-templates/modules/azure-container-apps-environment/outputs.tf +14 -0
- package/dist/infra-templates/modules/azure-container-apps-environment/variables.tf +24 -0
- package/dist/infra-templates/modules/azure-container-registry/main.tf +10 -0
- package/dist/infra-templates/modules/azure-container-registry/outputs.tf +14 -0
- package/dist/infra-templates/modules/azure-container-registry/variables.tf +20 -0
- package/dist/infra-templates/modules/azure-front-door/main.tf +80 -0
- package/dist/infra-templates/modules/azure-front-door/outputs.tf +20 -0
- package/dist/infra-templates/modules/azure-front-door/variables.tf +26 -0
- package/dist/infra-templates/modules/azure-github-oidc/main.tf +48 -0
- package/dist/infra-templates/modules/azure-github-oidc/outputs.tf +9 -0
- package/dist/infra-templates/modules/azure-github-oidc/variables.tf +69 -0
- package/dist/infra-templates/modules/azure-key-vault/main.tf +21 -0
- package/dist/infra-templates/modules/azure-key-vault/outputs.tf +11 -0
- package/dist/infra-templates/modules/azure-key-vault/variables.tf +43 -0
- package/dist/infra-templates/modules/azure-monitor/main.tf +29 -0
- package/dist/infra-templates/modules/azure-monitor/outputs.tf +17 -0
- package/dist/infra-templates/modules/azure-monitor/variables.tf +32 -0
- package/dist/infra-templates/modules/azure-network/main.tf +134 -0
- package/dist/infra-templates/modules/azure-network/outputs.tf +44 -0
- package/dist/infra-templates/modules/azure-network/variables.tf +56 -0
- package/dist/infra-templates/modules/azure-postgresql-flexible/main.tf +34 -0
- package/dist/infra-templates/modules/azure-postgresql-flexible/outputs.tf +20 -0
- package/dist/infra-templates/modules/azure-postgresql-flexible/variables.tf +54 -0
- package/dist/infra-templates/modules/azure-redis-cache/main.tf +32 -0
- package/dist/infra-templates/modules/azure-redis-cache/outputs.tf +15 -0
- package/dist/infra-templates/modules/azure-redis-cache/variables.tf +30 -0
- package/dist/infra-templates/modules/azure-resource-group/main.tf +5 -0
- package/dist/infra-templates/modules/azure-resource-group/outputs.tf +11 -0
- package/dist/infra-templates/modules/azure-resource-group/variables.tf +16 -0
- package/dist/infra-templates/modules/azure-sql-database/main.tf +63 -0
- package/dist/infra-templates/modules/azure-sql-database/outputs.tf +20 -0
- package/dist/infra-templates/modules/azure-sql-database/variables.tf +78 -0
- package/dist/infra-templates/modules/azure-storage-account/main.tf +13 -0
- package/dist/infra-templates/modules/azure-storage-account/outputs.tf +16 -0
- package/dist/infra-templates/modules/azure-storage-account/variables.tf +38 -0
- package/dist/infra-templates/modules/cloud-watch/event-bridge.tf +15 -0
- package/dist/infra-templates/modules/cloud-watch/lambda.tf +84 -0
- package/dist/infra-templates/modules/cloud-watch/lambda_function.zip +0 -0
- package/dist/infra-templates/modules/cloud-watch/lambda_function_deploy.zip +0 -0
- package/dist/infra-templates/modules/cloud-watch/main.tf +156 -0
- package/dist/infra-templates/modules/cloud-watch/sns.tf +3 -0
- package/dist/infra-templates/modules/cloud-watch/variables.tf +38 -0
- package/dist/infra-templates/modules/ecs-core/alb.tf +126 -0
- package/dist/infra-templates/modules/ecs-core/cloudwatch.tf +48 -0
- package/dist/infra-templates/modules/ecs-core/iam.tf +95 -0
- package/dist/infra-templates/modules/ecs-core/main.tf +12 -0
- package/dist/infra-templates/modules/ecs-core/outputs.tf +44 -0
- package/dist/infra-templates/modules/ecs-core/secrets.tf +9 -0
- package/dist/infra-templates/modules/ecs-core/security_groups.tf +73 -0
- package/dist/infra-templates/modules/ecs-core/variables.tf +96 -0
- package/dist/infra-templates/modules/ecs-service/ecs_autoscaling.tf +51 -0
- package/dist/infra-templates/modules/ecs-service/ecs_service.tf +39 -0
- package/dist/infra-templates/modules/ecs-service/ecs_task_definition.tf +56 -0
- package/dist/infra-templates/modules/ecs-service/variables.tf +170 -0
- package/dist/infra-templates/modules/elastic-container-registry/main.tf +32 -0
- package/dist/infra-templates/modules/elastic-container-registry/outputs.tf +9 -0
- package/dist/infra-templates/modules/elastic-container-registry/variables.tf +25 -0
- package/dist/infra-templates/modules/github-oidc-role/main.tf +46 -0
- package/dist/infra-templates/modules/github-oidc-role/outputs.tf +4 -0
- package/dist/infra-templates/modules/github-oidc-role/variables.tf +11 -0
- package/dist/infra-templates/modules/guardduty/main.tf +8 -0
- package/dist/infra-templates/modules/iam/main.tf +205 -0
- package/dist/infra-templates/modules/iam/outputs.tf +3 -0
- package/dist/infra-templates/modules/iam/variables.tf +4 -0
- package/dist/infra-templates/modules/random-key/main.tf +11 -0
- package/dist/infra-templates/modules/random-key/outputs.tf +4 -0
- package/dist/infra-templates/modules/random-key/variables.tf +10 -0
- package/dist/infra-templates/modules/redis/main.tf +47 -0
- package/dist/infra-templates/modules/redis/outputs.tf +8 -0
- package/dist/infra-templates/modules/redis/variables.tf +20 -0
- package/dist/infra-templates/modules/relational-database-service/main.tf +44 -0
- package/dist/infra-templates/modules/relational-database-service/outputs.tf +13 -0
- package/dist/infra-templates/modules/relational-database-service/security-group.tf +15 -0
- package/dist/infra-templates/modules/relational-database-service/variables.tf +50 -0
- package/dist/infra-templates/modules/secret/main.tf +14 -0
- package/dist/infra-templates/modules/secret/outputs.tf +3 -0
- package/dist/infra-templates/modules/secret/variables.tf +8 -0
- package/dist/infra-templates/modules/simple-storage-service/main.tf +28 -0
- package/dist/infra-templates/modules/simple-storage-service/variables.tf +4 -0
- package/dist/infra-templates/modules/vpc/data.tf +2 -0
- package/dist/infra-templates/modules/vpc/main.tf +76 -0
- package/dist/infra-templates/modules/vpc/outputs.tf +23 -0
- package/dist/infra-templates/modules/vpc/variables.tf +5 -0
- package/dist/infra-templates/package.json +6 -0
- package/dist/infra-templates/templates/azure/MANUAL_DEPLOY.md +168 -0
- package/dist/infra-templates/templates/azure/backend.tf +8 -0
- package/dist/infra-templates/templates/azure/data.tf +21 -0
- package/dist/infra-templates/templates/azure/default.tfvars +0 -0
- package/dist/infra-templates/templates/azure/locals.tf +116 -0
- package/dist/infra-templates/templates/azure/main.tf +421 -0
- package/dist/infra-templates/templates/azure/outputs.tf +40 -0
- package/dist/infra-templates/templates/azure/providers.tf +65 -0
- package/dist/infra-templates/templates/azure/variables.tf +69 -0
- package/dist/infra-templates/templates/azure/workflows/build_and_deploy.yml +155 -0
- package/dist/infra-templates/templates/azure/workflows/tests.yml +63 -0
- package/dist/infra-templates/templates/ecs/README.md +225 -0
- package/dist/infra-templates/templates/ecs/backend.tf +7 -0
- package/dist/infra-templates/templates/ecs/data.tf +6 -0
- package/dist/infra-templates/templates/ecs/default.tfvars +1 -0
- package/dist/infra-templates/templates/ecs/locals.tf +97 -0
- package/dist/infra-templates/templates/ecs/main.tf +185 -0
- package/dist/infra-templates/templates/ecs/outputs.tf +42 -0
- package/dist/infra-templates/templates/ecs/providers.tf +21 -0
- package/dist/infra-templates/templates/ecs/variables.tf +105 -0
- package/dist/infra-templates/templates/ecs/workflows/build_and_deploy.yml +188 -0
- package/dist/infra-templates/templates/ecs/workflows/tests.yml +65 -0
- package/package.json +2 -2
- package/schema/fuel.schema.json +78 -44
package/dist/infra/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/infra/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/infra/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Azure prod isolation — pending points
|
|
2
|
+
|
|
3
|
+
Context: expanding to a fully isolated `infra-prod` (separate RG, separate
|
|
4
|
+
tfstate, separate Key Vault/OIDC identity from dev/stg) with heavier prod
|
|
5
|
+
specs (SQL 6 vCore GP zone-redundant, Front Door Premium+WAF, Container
|
|
6
|
+
Apps Dedicated D4x2, Defender for Cloud, etc).
|
|
7
|
+
|
|
8
|
+
## Done — Key Vault per-app secrets pre-populated (closed on feature/azure-provider-support)
|
|
9
|
+
Each app's vault now gets an `azurerm_key_vault_secret` named `app-variables`
|
|
10
|
+
holding `jsonencode(local.app_variables[app])` — one JSON blob per app,
|
|
11
|
+
mirroring ECS's `modules/secret` (which also stores all of an app's
|
|
12
|
+
`variables:` as one JSON blob, not one secret per key).
|
|
13
|
+
|
|
14
|
+
Two blockers closed:
|
|
15
|
+
- **RBAC** (data-plane `Key Vault Secrets Officer`, which `Contributor` doesn't
|
|
16
|
+
cover): resolved *without* the Graph-lookup problem the github_oidc
|
|
17
|
+
`existing_principal_id` escape hatch needed — `data.azurerm_client_config.current.object_id`
|
|
18
|
+
resolves the *running* SP's own object_id purely via ARM, no
|
|
19
|
+
`Application.Read.All` required.
|
|
20
|
+
- **Network** (found while implementing, wasn't in this doc before): the vault
|
|
21
|
+
defaults to `public_network_access_enabled = false`, so `network_acls` never
|
|
22
|
+
even applies — writing a secret from a local machine (not a VNet-joined
|
|
23
|
+
identity) 403s regardless of RBAC. Fixed via `modules/azure-key-vault`'s new
|
|
24
|
+
`ip_rules` var: `data.http.tofu_operator_ip` auto-detects the operator's
|
|
25
|
+
current public IP (`api.ipify.org`) each apply and allowlists just that /32,
|
|
26
|
+
flipping `public_network_access_enabled` on only when `ip_rules` is non-empty.
|
|
27
|
+
A `time_sleep` (30s) sits between the role assignment and the secret write —
|
|
28
|
+
Azure RBAC propagation isn't instant, so writing in the same apply that
|
|
29
|
+
grants the role can otherwise 403 intermittently.
|
|
30
|
+
|
|
31
|
+
Not addressed: this doesn't give the *app itself* read access over the network
|
|
32
|
+
at runtime (Container Apps egress via the NAT Gateway's public IP, which isn't
|
|
33
|
+
on the allowlist and isn't covered by `bypass = "AzureServices"`). Today no app
|
|
34
|
+
code actually reads from Key Vault via SDK — `KEY_VAULT_URI` is informational
|
|
35
|
+
and env vars are still delivered as plaintext Container App `env_vars`/`secrets`
|
|
36
|
+
(see "Decided, not implemented yet" below for that separate gap). If an app
|
|
37
|
+
ever needs to read its vault directly, this'll need a private endpoint or a
|
|
38
|
+
broader firewall rule for the Container Apps subnet's egress IP.
|
|
39
|
+
|
|
40
|
+
## Already fixed (committed on feature/azure-provider-support)
|
|
41
|
+
- `github_oidc.enabled` sensitivity leak (`for_each`/output error) — fixed via
|
|
42
|
+
`nonsensitive()` in `templates/azure/locals.tf` (`local.github_oidc_enabled`).
|
|
43
|
+
- Orphan private DNS zones in `modules/azure-network` (e.g. postgres zone
|
|
44
|
+
created even when only mssql is used) — gated behind `postgres_needed`/
|
|
45
|
+
`mssql_needed`/`redis_needed` flags computed from `local.app_list`.
|
|
46
|
+
- Container App `secret` block used the raw (unsanitized) secret key as the
|
|
47
|
+
Azure secret name — fixed to reuse `local.secret_names`.
|
|
48
|
+
- SQL LTR + auto-pause both enabled by default, which Azure rejects on a
|
|
49
|
+
serverless database — LTR now only applies when `auto_pause_delay_in_minutes
|
|
50
|
+
== -1` (i.e. provisioned/prod databases).
|
|
51
|
+
- `packages/infra` was left behind in every scaffolded project (only
|
|
52
|
+
`packages/cli` was cleaned up) — now removed the same way. `templates/azure`
|
|
53
|
+
had no `.gitignore` (unlike `templates/ecs`) — added one.
|
|
54
|
+
- `fuel infra:deploy --regenerate` never resolved a template source (no
|
|
55
|
+
`--source`, no GitHub-token download) — wired through `resolveSourceRoot()`.
|
|
56
|
+
- Subscription missing required resource provider registrations (`Microsoft.App`
|
|
57
|
+
409 mid-apply) — `providers.tf` now explicitly registers everything this
|
|
58
|
+
template set needs via `resource_providers_to_register` (azurerm >= 4.0).
|
|
59
|
+
- Container Apps referenced `${acr}/${app}:latest` from creation, but that tag
|
|
60
|
+
never exists yet (CI depends on this same apply having run first) — seeded
|
|
61
|
+
with a public placeholder image + `ignore_changes` so CI's first real push
|
|
62
|
+
takes over permanently.
|
|
63
|
+
- Container Apps subnet had no NAT Gateway/route table — Azure's "default
|
|
64
|
+
outbound access" retirement means no reliable egress for image pulls
|
|
65
|
+
without one. Added a Standard NAT Gateway to the subnet.
|
|
66
|
+
- `azurerm_container_app` always declared a `registry` block pointing at the
|
|
67
|
+
ACR, but the AcrPull role assignment for that identity is necessarily
|
|
68
|
+
created *after* the container app — Azure hung validating an unauthorized
|
|
69
|
+
credential on first create regardless of which image was pulled. Dropped
|
|
70
|
+
the `registry` block; CI now configures it via `az containerapp registry
|
|
71
|
+
set` once the role assignment already exists.
|
|
72
|
+
- Every Front Door route also set `link_to_default_domain = true`, so the
|
|
73
|
+
second app's route collided with the first on the shared `*.azurefd.net`
|
|
74
|
+
hostname/path. Now only links the default domain when an app has no custom
|
|
75
|
+
domain (which, since `domain` is required, is never in practice).
|
|
76
|
+
- `github_repo_name` as explicit field — done, see below.
|
|
77
|
+
|
|
78
|
+
## Decided, not implemented yet
|
|
79
|
+
1. **Multi-environment pipelines.** `templates/azure/workflows/build_and_deploy.yml`
|
|
80
|
+
uses repo-wide secrets (`AZURE_CLIENT_ID`/`TENANT_ID`/`SUBSCRIPTION_ID`/
|
|
81
|
+
`ACR_LOGIN_SERVER`, no `environment:` on the job) and bakes
|
|
82
|
+
`RESOURCE_GROUP`/`ACR_NAME`/`CONTAINER_APP_NAME` as literal strings at
|
|
83
|
+
generation time (`copyAzureWorkflows` in `template-engine.ts`). Need to
|
|
84
|
+
move to GitHub Environments (per-env secrets/vars + protection rules for
|
|
85
|
+
prod) before generating a prod workflow in the same repo as dev — same
|
|
86
|
+
app name today would silently overwrite the dev workflow file.
|
|
87
|
+
2. **Front Door Premium + WAF** (OWASP 3.2 + bot protection). Schema
|
|
88
|
+
(`fuel.schema.json` → `azureConfig.front_door.sku_name`) hardcodes
|
|
89
|
+
`Standard_AzureFrontDoor` as a `const`. Module
|
|
90
|
+
`modules/azure-front-door` has no `azurerm_cdn_frontdoor_security_policy`/
|
|
91
|
+
WAF policy resource at all. Since prod gets its own Terraform state this
|
|
92
|
+
no longer conflicts with dev/stg — just needs the schema const relaxed
|
|
93
|
+
and the WAF resource added.
|
|
94
|
+
3. **Container Apps Dedicated plan** (D4 x2). `modules/azure-container-apps-environment`
|
|
95
|
+
is Consumption-only *by design* (explicit comment in `main.tf`). Needs a
|
|
96
|
+
`workload_profile` block + a way to select Dedicated per-app/per-env.
|
|
97
|
+
|
|
98
|
+
## No Terraform module exists (infra gap, not config gap)
|
|
99
|
+
- Microsoft Defender for Cloud (Containers/SQL/Storage/Key Vault plans)
|
|
100
|
+
- Static Web Apps
|
|
101
|
+
- Azure DevOps pipelines (stack uses GitHub Actions instead — confirm this
|
|
102
|
+
is acceptable for prod or if Azure DevOps is a hard requirement)
|
|
103
|
+
- Support plan (subscription-level purchase, not a Terraform resource —
|
|
104
|
+
won't ever be a fuel.yml field)
|
|
105
|
+
|
|
106
|
+
## Still need to verify
|
|
107
|
+
- Count actual `azurerm_private_endpoint`-equivalent resources created
|
|
108
|
+
today (SQL, Redis) vs. the prod spec line "5 private endpoints x 730h,
|
|
109
|
+
100GB in/out" — only confirmed the network *structure* (subnets/DNS
|
|
110
|
+
zones) exists, not an exact endpoint count against spec.
|
|
111
|
+
|
|
112
|
+
## Action not yet taken
|
|
113
|
+
- No one has actually scaffolded `infra-prod` yet (new `fuel.yml` + running
|
|
114
|
+
the CLI generation into a separate target dir). Isolation is designed but
|
|
115
|
+
not yet real until that runs.
|
|
116
|
+
|
|
117
|
+
## Suggested next pick (unresolved — pick one to start)
|
|
118
|
+
- GitHub Environments wiring (workflow template + docs)
|
|
119
|
+
- Front Door WAF (schema + module)
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# NOTE on `registry` + identity auth: a resource cannot reference its own
|
|
2
|
+
# computed attributes (e.g. azurerm_container_app.this.identity[0].principal_id)
|
|
3
|
+
# from within its own configuration - that's a circular reference and won't
|
|
4
|
+
# plan. `registry.identity = "System"` is the documented way to tell the
|
|
5
|
+
# platform "use this container app's own system-assigned identity" (same
|
|
6
|
+
# convention as `secret.identity`). The ACR pull role assignment (created by
|
|
7
|
+
# the parent template, against this module's `principal_id` output) necessarily
|
|
8
|
+
# happens AFTER this resource exists (it needs the identity's principal ID).
|
|
9
|
+
# Configuring `registry` here anyway made Container Apps try to validate that
|
|
10
|
+
# credential during the very first create, before the role assignment exists —
|
|
11
|
+
# the provisioning call hangs and times out ("Operation expired") regardless of
|
|
12
|
+
# which image is actually being pulled. So: no `registry` block here at all: CI
|
|
13
|
+
# wires it up with `az containerapp registry set` once the role assignment is
|
|
14
|
+
# already in place (see build_and_deploy.yml), and ignore_changes below stops
|
|
15
|
+
# `tofu apply` from ever trying to remove what CI configured.
|
|
16
|
+
locals {
|
|
17
|
+
# Container App secret names must be lowercase alphanumeric + '-'; env var names keep
|
|
18
|
+
# the caller's original casing (e.g. STRIPE_SECRET_KEY) via secret_name lookup below.
|
|
19
|
+
secret_names = { for k, v in var.secrets : k => lower(replace(k, "_", "-")) }
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
resource "azurerm_container_app" "this" {
|
|
23
|
+
name = var.name
|
|
24
|
+
resource_group_name = var.resource_group_name
|
|
25
|
+
container_app_environment_id = var.container_app_environment_id
|
|
26
|
+
revision_mode = "Single"
|
|
27
|
+
# Matches the "Consumption" profile module.azure-container-apps-environment always declares —
|
|
28
|
+
# explicit so `plan` doesn't perpetually diff against what Azure reports back.
|
|
29
|
+
workload_profile_name = "Consumption"
|
|
30
|
+
|
|
31
|
+
identity {
|
|
32
|
+
type = "SystemAssigned"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
template {
|
|
36
|
+
min_replicas = var.min_replicas
|
|
37
|
+
max_replicas = var.max_replicas
|
|
38
|
+
|
|
39
|
+
container {
|
|
40
|
+
name = var.name
|
|
41
|
+
image = var.image
|
|
42
|
+
cpu = var.cpu
|
|
43
|
+
memory = var.memory
|
|
44
|
+
|
|
45
|
+
dynamic "env" {
|
|
46
|
+
for_each = var.env_vars
|
|
47
|
+
content {
|
|
48
|
+
name = env.key
|
|
49
|
+
value = env.value
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
dynamic "env" {
|
|
54
|
+
for_each = var.secrets
|
|
55
|
+
content {
|
|
56
|
+
name = env.key
|
|
57
|
+
secret_name = local.secret_names[env.key]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
# HTTP concurrency-based autoscaling only makes sense for apps that
|
|
63
|
+
# actually receive ingress traffic; workers have no ingress to scale on.
|
|
64
|
+
dynamic "http_scale_rule" {
|
|
65
|
+
for_each = var.external_ingress ? [1] : []
|
|
66
|
+
content {
|
|
67
|
+
name = "${var.name}-http-scale"
|
|
68
|
+
concurrent_requests = var.concurrent_requests
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
dynamic "secret" {
|
|
74
|
+
for_each = var.secrets
|
|
75
|
+
content {
|
|
76
|
+
name = local.secret_names[secret.key]
|
|
77
|
+
value = secret.value
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
# Workers (external_ingress = false) get no ingress block at all.
|
|
82
|
+
dynamic "ingress" {
|
|
83
|
+
for_each = var.external_ingress ? [1] : []
|
|
84
|
+
content {
|
|
85
|
+
external_enabled = true
|
|
86
|
+
target_port = var.target_port
|
|
87
|
+
|
|
88
|
+
traffic_weight {
|
|
89
|
+
latest_revision = true
|
|
90
|
+
percentage = 100
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
# Every public app is fronted by Front Door (custom domain + eventually WAF) — direct
|
|
94
|
+
# hits to the *.azurecontainerapps.io hostname would bypass it entirely. Restrict inbound
|
|
95
|
+
# to Front Door's published backend range (Microsoft's documented pattern for this;
|
|
96
|
+
# resolved to real CIDRs by the caller since this field validates as strict CIDR, not a
|
|
97
|
+
# service tag name). Doesn't stop another tenant's Front Door from proxying through (same
|
|
98
|
+
# shared IP range) — the app itself should also check the X-Azure-FDID header against
|
|
99
|
+
# this project's Front Door ID for that.
|
|
100
|
+
dynamic "ip_security_restriction" {
|
|
101
|
+
for_each = var.front_door_backend_cidrs
|
|
102
|
+
content {
|
|
103
|
+
name = "allow-front-door-${replace(ip_security_restriction.value, "/", "-")}"
|
|
104
|
+
action = "Allow"
|
|
105
|
+
ip_address_range = ip_security_restriction.value
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# var.image is only ever meaningful on the very first create — the ACR tag it
|
|
112
|
+
# points at doesn't exist yet (the CI pipeline that pushes it depends on this same
|
|
113
|
+
# apply having already created the GitHub OIDC identity/repo secrets). Ignore drift
|
|
114
|
+
# on it so a later `az containerapp update` (done by CI once it has a real image)
|
|
115
|
+
# never gets clobbered back by a subsequent `tofu apply`/`--regenerate`.
|
|
116
|
+
lifecycle {
|
|
117
|
+
ignore_changes = [template[0].container[0].image, registry]
|
|
118
|
+
|
|
119
|
+
precondition {
|
|
120
|
+
condition = !var.external_ingress || length(var.front_door_backend_cidrs) > 0
|
|
121
|
+
error_message = "front_door_backend_cidrs must not be empty when external_ingress is true — an empty list removes every ip_security_restriction rule, exposing this Container App directly to the internet instead of only through Front Door."
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
output "id" {
|
|
2
|
+
value = azurerm_container_app.this.id
|
|
3
|
+
description = "The ID of the Container App"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
output "name" {
|
|
7
|
+
value = azurerm_container_app.this.name
|
|
8
|
+
description = "The name of the Container App"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
output "fqdn" {
|
|
12
|
+
value = try(azurerm_container_app.this.ingress[0].fqdn, "")
|
|
13
|
+
description = "The FQDN of the Container App ingress, or an empty string when external_ingress is false"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
output "principal_id" {
|
|
17
|
+
value = azurerm_container_app.this.identity[0].principal_id
|
|
18
|
+
description = "Principal ID of the system-assigned managed identity, used by the parent template to grant AcrPull"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
output "latest_revision_name" {
|
|
22
|
+
value = azurerm_container_app.this.latest_revision_name
|
|
23
|
+
description = "The name of the latest Container App revision"
|
|
24
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
variable "name" {
|
|
2
|
+
type = string
|
|
3
|
+
description = "Name of the Container App"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
variable "resource_group_name" {
|
|
7
|
+
type = string
|
|
8
|
+
description = "Name of the resource group in which to create the Container App"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
variable "container_app_environment_id" {
|
|
12
|
+
type = string
|
|
13
|
+
description = "ID of the (Consumption) Container App Environment this app belongs to"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
variable "image" {
|
|
17
|
+
type = string
|
|
18
|
+
description = "Full image reference to run, e.g. \"myacr.azurecr.io/app:latest\""
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
variable "target_port" {
|
|
22
|
+
type = number
|
|
23
|
+
description = "Port the container listens on"
|
|
24
|
+
default = 8080
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
variable "external_ingress" {
|
|
28
|
+
type = bool
|
|
29
|
+
description = "Whether to expose external ingress. Set to false for workers (no ingress block is created)"
|
|
30
|
+
default = true
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
variable "cpu" {
|
|
34
|
+
type = number
|
|
35
|
+
description = "vCPU allocated to the container"
|
|
36
|
+
default = 1
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
variable "memory" {
|
|
40
|
+
type = string
|
|
41
|
+
description = "Memory allocated to the container, e.g. \"2Gi\""
|
|
42
|
+
default = "2Gi"
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
variable "min_replicas" {
|
|
46
|
+
type = number
|
|
47
|
+
description = "Minimum number of replicas"
|
|
48
|
+
default = 0
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
variable "max_replicas" {
|
|
52
|
+
type = number
|
|
53
|
+
description = "Maximum number of replicas"
|
|
54
|
+
default = 3
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
variable "concurrent_requests" {
|
|
58
|
+
type = number
|
|
59
|
+
description = "Number of concurrent HTTP requests that triggers scaling. Only relevant when external_ingress is true"
|
|
60
|
+
default = 20
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
variable "env_vars" {
|
|
64
|
+
type = map(string)
|
|
65
|
+
description = "Plain (non-secret) environment variables for the container"
|
|
66
|
+
default = {}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
variable "secrets" {
|
|
70
|
+
type = map(string)
|
|
71
|
+
description = "Name/value pairs exposed as Container App secrets, referenceable via secretRef in env vars"
|
|
72
|
+
default = {}
|
|
73
|
+
sensitive = true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
variable "front_door_backend_cidrs" {
|
|
77
|
+
type = list(string)
|
|
78
|
+
description = "CIDR ranges to allow through ingress (Front Door's backend range) when external_ingress is true. Empty list means no restriction is applied."
|
|
79
|
+
default = []
|
|
80
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
resource "azurerm_container_app_environment" "this" {
|
|
2
|
+
name = var.name
|
|
3
|
+
resource_group_name = var.resource_group_name
|
|
4
|
+
location = var.location
|
|
5
|
+
log_analytics_workspace_id = var.log_analytics_workspace_id
|
|
6
|
+
infrastructure_subnet_id = var.infrastructure_subnet_id
|
|
7
|
+
|
|
8
|
+
# Azure implicitly attaches this default profile to every environment regardless of what's
|
|
9
|
+
# declared here (there's no more "Consumption-only, no workload profile at all" environment
|
|
10
|
+
# type) — leaving it undeclared just meant every plan showed a perpetual diff against the
|
|
11
|
+
# real state. Declare it explicitly so plan reflects reality. Adding a Dedicated/GP profile
|
|
12
|
+
# here later doesn't change this app's plan — that's controlled per-app via
|
|
13
|
+
# azurerm_container_app.workload_profile_name.
|
|
14
|
+
workload_profile {
|
|
15
|
+
name = "Consumption"
|
|
16
|
+
workload_profile_type = "Consumption"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
output "id" {
|
|
2
|
+
value = azurerm_container_app_environment.this.id
|
|
3
|
+
description = "ID of the Container Apps Environment"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
output "name" {
|
|
7
|
+
value = azurerm_container_app_environment.this.name
|
|
8
|
+
description = "Name of the Container Apps Environment"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
output "default_domain" {
|
|
12
|
+
value = azurerm_container_app_environment.this.default_domain
|
|
13
|
+
description = "Default domain of the Container Apps Environment"
|
|
14
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
variable "name" {
|
|
2
|
+
description = "Name of the Container Apps Environment"
|
|
3
|
+
type = string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
variable "resource_group_name" {
|
|
7
|
+
description = "Name of the resource group where the environment will be created"
|
|
8
|
+
type = string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
variable "location" {
|
|
12
|
+
description = "Azure region where the environment will be created"
|
|
13
|
+
type = string
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
variable "log_analytics_workspace_id" {
|
|
17
|
+
description = "ID of the Log Analytics workspace used for Container Apps diagnostics"
|
|
18
|
+
type = string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
variable "infrastructure_subnet_id" {
|
|
22
|
+
description = "Delegated subnet for VNet integration. Egress-only: ingress stays public so Front Door can still reach apps directly."
|
|
23
|
+
type = string
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
resource "azurerm_container_registry" "this" {
|
|
2
|
+
name = var.name
|
|
3
|
+
resource_group_name = var.resource_group_name
|
|
4
|
+
location = var.location
|
|
5
|
+
sku = var.sku
|
|
6
|
+
|
|
7
|
+
# Admin credentials are disabled on purpose: pulls are done via managed
|
|
8
|
+
# identity + role assignment (AcrPull), configured by the parent template.
|
|
9
|
+
admin_enabled = false
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
output "id" {
|
|
2
|
+
value = azurerm_container_registry.this.id
|
|
3
|
+
description = "The ID of the Container Registry"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
output "login_server" {
|
|
7
|
+
value = azurerm_container_registry.this.login_server
|
|
8
|
+
description = "The URL used to log into the Container Registry"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
output "name" {
|
|
12
|
+
value = azurerm_container_registry.this.name
|
|
13
|
+
description = "The name of the Container Registry"
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
variable "name" {
|
|
2
|
+
type = string
|
|
3
|
+
description = "Globally unique name for the Container Registry (5-50 alphanumeric characters). Uniqueness is the caller's responsibility."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
variable "resource_group_name" {
|
|
7
|
+
type = string
|
|
8
|
+
description = "Name of the resource group in which to create the Container Registry"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
variable "location" {
|
|
12
|
+
type = string
|
|
13
|
+
description = "Azure region in which to create the Container Registry"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
variable "sku" {
|
|
17
|
+
type = string
|
|
18
|
+
description = "SKU for the Container Registry"
|
|
19
|
+
default = "Basic"
|
|
20
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
resource "azurerm_cdn_frontdoor_profile" "this" {
|
|
2
|
+
name = var.name
|
|
3
|
+
resource_group_name = var.resource_group_name
|
|
4
|
+
sku_name = var.sku_name
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
resource "azurerm_cdn_frontdoor_endpoint" "this" {
|
|
8
|
+
name = "${var.name}-endpoint"
|
|
9
|
+
cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.this.id
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
resource "azurerm_cdn_frontdoor_origin_group" "this" {
|
|
13
|
+
for_each = var.origins
|
|
14
|
+
|
|
15
|
+
name = "${each.key}-og"
|
|
16
|
+
cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.this.id
|
|
17
|
+
|
|
18
|
+
load_balancing {
|
|
19
|
+
sample_size = 4
|
|
20
|
+
successful_samples_required = 3
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
health_probe {
|
|
24
|
+
protocol = "Https"
|
|
25
|
+
request_type = "HEAD"
|
|
26
|
+
path = "/"
|
|
27
|
+
interval_in_seconds = 100
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
resource "azurerm_cdn_frontdoor_origin" "this" {
|
|
32
|
+
for_each = var.origins
|
|
33
|
+
|
|
34
|
+
name = "${each.key}-origin"
|
|
35
|
+
cdn_frontdoor_origin_group_id = azurerm_cdn_frontdoor_origin_group.this[each.key].id
|
|
36
|
+
|
|
37
|
+
host_name = each.value.host_name
|
|
38
|
+
# Without this, Front Door forwards the client's original Host header (the custom domain)
|
|
39
|
+
# straight through to the origin. Container Apps routes ingress by Host header and has no
|
|
40
|
+
# idea about the custom domain (only Front Door's custom domain resource knows it) — it
|
|
41
|
+
# responds "This Container App is stopped or does not exist" for an unrecognized host.
|
|
42
|
+
# Rewrite to the origin's own *.azurecontainerapps.io hostname so it always matches.
|
|
43
|
+
origin_host_header = each.value.host_name
|
|
44
|
+
certificate_name_check_enabled = true
|
|
45
|
+
http_port = each.value.http_port
|
|
46
|
+
https_port = each.value.https_port
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
resource "azurerm_cdn_frontdoor_custom_domain" "this" {
|
|
50
|
+
for_each = { for k, v in var.origins : k => v if v.custom_domain != null }
|
|
51
|
+
|
|
52
|
+
name = "${each.key}-domain"
|
|
53
|
+
cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.this.id
|
|
54
|
+
host_name = each.value.custom_domain
|
|
55
|
+
|
|
56
|
+
tls {
|
|
57
|
+
certificate_type = "ManagedCertificate"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
resource "azurerm_cdn_frontdoor_route" "this" {
|
|
62
|
+
for_each = var.origins
|
|
63
|
+
|
|
64
|
+
name = "${each.key}-route"
|
|
65
|
+
cdn_frontdoor_endpoint_id = azurerm_cdn_frontdoor_endpoint.this.id
|
|
66
|
+
cdn_frontdoor_origin_group_id = azurerm_cdn_frontdoor_origin_group.this[each.key].id
|
|
67
|
+
cdn_frontdoor_origin_ids = [azurerm_cdn_frontdoor_origin.this[each.key].id]
|
|
68
|
+
cdn_frontdoor_custom_domain_ids = each.value.custom_domain != null ? [azurerm_cdn_frontdoor_custom_domain.this[each.key].id] : []
|
|
69
|
+
|
|
70
|
+
supported_protocols = ["Http", "Https"]
|
|
71
|
+
patterns_to_match = ["/*"]
|
|
72
|
+
forwarding_protocol = "HttpsOnly"
|
|
73
|
+
https_redirect_enabled = true
|
|
74
|
+
|
|
75
|
+
# All routes share one Front Door endpoint/profile — every route linking to the shared
|
|
76
|
+
# default *.azurefd.net domain with the same "/*" pattern collides the moment a second
|
|
77
|
+
# app is added ("this combination already exists in Route <other-app>-route"). Only fall
|
|
78
|
+
# back to the default domain when an app has no custom domain of its own to route on.
|
|
79
|
+
link_to_default_domain = each.value.custom_domain == null
|
|
80
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
output "endpoint_hostname" {
|
|
2
|
+
value = azurerm_cdn_frontdoor_endpoint.this.host_name
|
|
3
|
+
description = "Hostname of the Front Door endpoint shared by all apps/origins"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
output "profile_id" {
|
|
7
|
+
value = azurerm_cdn_frontdoor_profile.this.id
|
|
8
|
+
description = "ID of the Front Door profile"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
output "custom_domain_validation" {
|
|
12
|
+
description = "Per-domain DNS records the domain owner must create: a TXT record at _dnsauth.<host_name> with value validation_token (proves ownership so Azure can issue the managed certificate), and a CNAME from host_name to the shared endpoint_hostname above."
|
|
13
|
+
value = {
|
|
14
|
+
for k, d in azurerm_cdn_frontdoor_custom_domain.this : d.host_name => {
|
|
15
|
+
txt_record_name = "_dnsauth.${d.host_name}"
|
|
16
|
+
txt_record_value = d.validation_token
|
|
17
|
+
cname_target = azurerm_cdn_frontdoor_endpoint.this.host_name
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
variable "name" {
|
|
2
|
+
description = "Name of the Front Door profile"
|
|
3
|
+
type = string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
variable "resource_group_name" {
|
|
7
|
+
description = "Name of the resource group where the Front Door profile will be created"
|
|
8
|
+
type = string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
variable "sku_name" {
|
|
12
|
+
description = "SKU for the Front Door profile"
|
|
13
|
+
type = string
|
|
14
|
+
default = "Standard_AzureFrontDoor"
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
variable "origins" {
|
|
18
|
+
description = "Map of apps/origins to expose behind the shared Front Door profile/endpoint. The map key is used as the app name and as a suffix for the origin group/origin/route resources of that app."
|
|
19
|
+
type = map(object({
|
|
20
|
+
host_name = string
|
|
21
|
+
http_port = optional(number, 80)
|
|
22
|
+
https_port = optional(number, 443)
|
|
23
|
+
custom_domain = optional(string)
|
|
24
|
+
}))
|
|
25
|
+
default = {}
|
|
26
|
+
}
|