ACI recipe pack and related refactors - #292
Conversation
Signed-off-by: Zach Casper <zachcasper@microsoft.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Pull request overview
This PR reorganizes the repository’s Recipe Packs (renaming the Azure AKS and Kubernetes pack files) and adds a new Azure ACI Recipe Pack, along with doc and workflow updates so the new pack and its recipes can be published and referenced consistently.
Changes:
- Renamed Azure AKS and Kubernetes recipe-pack paths/filenames and updated internal
Radius.Core/recipePacksresource naming. - Added a new
azure-acirecipe pack (plus README) and updated the publish workflow to push its recipes toghcr.io/radius-project/azure-aci-recipes. - Updated top-level docs and resource-type READMEs to reference the new pack paths and filenames; added a
recipe-packs/README.mdoverview.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| Storage/objectStorage/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| recipe-packs/README.md | Adds a new overview README for available recipe packs and contribution guidance. |
| recipe-packs/kubernetes/README.md | Updates docs to reference kubernetes-recipe-pack.bicep. |
| recipe-packs/kubernetes/kubernetes-recipe-pack.bicep | Updates header and renames the recipe pack resource symbol for clarity. |
| recipe-packs/azure-aks/README.md | Renames Azure pack docs to “Azure AKS” and updates paths/filenames. |
| recipe-packs/azure-aks/aks-recipe-pack.bicep | Renames the pack resource from azure-avm to azure-aks and updates references. |
| recipe-packs/azure-aci/README.md | Adds documentation for the new Azure ACI recipe pack. |
| recipe-packs/azure-aci/aci-recipe-pack.bicep | Adds the new ACI recipe pack wiring containers, persistent volumes, and secrets. |
| README.md | Updates repository structure diagram and default pack references. |
| Messaging/rabbitMQ/README.md | Updates recipe pack links to the renamed AKS and Kubernetes pack files. |
| Messaging/kafka/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| docs/using-resource-types.md | Updates recipe pack discovery docs and example deploy commands. |
| docs/contributing/contributing-resource-types-recipes.md | Updates repository structure diagrams and recipe-pack guidance/examples. |
| Data/sqlServerDatabases/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| Data/redisCaches/README.md | Updates Azure/Kubernetes recipe pack links to renamed pack files. |
| Data/postgreSqlDatabases/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| Data/mySqlDatabases/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| Data/mongoDatabases/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| AI/search/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| AI/models/README.md | Updates Azure recipe pack link to azure-aks/aks-recipe-pack.bicep. |
| .github/workflows/release-recipe-pack.yaml | Updates release workflow inputs to use azure-aks and add azure-aci. |
| .github/workflows/publish-bicep-recipes.yaml | Publishes ACI recipes to a dedicated GHCR namespace and updates summary wording. |
| .github/scripts/release/build-recipe-pack-bundle.sh | Updates bundling comment example to renamed Kubernetes pack filename. |
| .github/scripts/publish-bicep-recipe.sh | Generalizes script header comment from Kubernetes-only to any Bicep recipe. |
Suppressed comments (1)
docs/contributing/contributing-resource-types-recipes.md:240
- This table example references
recipe-packs/aws/eks-recipe-pack.bicep, but there is norecipe-packs/aws/directory in this repo. That makes the example look like there is an AWS pack when there isn’t one to reference.
| AWS | recipe-packs/aws/eks-recipe-pack.bicep | ... |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| - `<name>-recipe-pack.bicep`: declares one `Radius.Core/recipePacks` resource whose `recipes` map has an entry per Resource Type. | ||
| - `README.md`: documents the pack, its parameters, and the recipes it includes. |
| Recipe Packs live at the repository root under [`recipe-packs/`](../recipe-packs/). Each platform has its own folder containing a default Recipe Pack that can wire both Bicep and Terraform recipes: | ||
|
|
||
| - `azure/` — recipes for all types provisioned on Azure. | ||
| - `azure-aks/` — recipes for all types provisioned on Azure using AKS for compute. | ||
| - `azure-aci/` — recipes for all types provisioned on Azure using ACI for compute. | ||
| - `aws/` — recipes for all types provisioned on AWS. |
| - `kubernetes/` — recipes for all types provisioned in-cluster on Kubernetes. | ||
|
|
||
| Each Recipe Pack bundles the Recipes for every Resource Type on that platform together with an Environment definition, so a platform engineer configures an Environment by deploying a single Recipe Pack instead of registering Recipes one type at a time. Cloud packs (under `azure/` and `aws/`) accept parameters for the provider configuration, such as the subscription or account the Environment provisions into. | ||
| Each Recipe Pack bundles the Recipes for every Resource Type on that platform together with an Environment definition, so a platform engineer configures an Environment by deploying a single Recipe Pack instead of registering Recipes one type at a time. Cloud packs (under `azure-aks/`, `azure-aci/`, and `aws/`) accept parameters for the provider configuration, such as the subscription or account the Environment provisions into. |
| ├── aws/ # AWS recipe pack | ||
| │ ├── README.md | ||
| │ └── eks-recipepack.bicep | ||
| ├── kubernetes/ # Default recipe pack (zero-config, in-cluster) | ||
| │ └── eks-recipe-pack.bicep | ||
| ├── kubernetes/ # Kubernetes recipe pack (zero-config, in-cluster) | ||
| ├── README.md | ||
| └── default-recipepack.bicep | ||
| └── kubernetes-recipe-pack.bicep |
| ├── aws/ # AWS recipe pack | ||
| │ ├── README.md | ||
| │ └──eks-recipepack.bicep | ||
| └── kubernetes/ # Default recipe pack (zero-config, in-cluster) | ||
| │ └──eks-recipe-pack.bicep | ||
| └── kubernetes/ # Kubernetes recipe pack (zero-config, in-cluster) | ||
| ├── README.md |
| Recipes for a Resource Type are added to the platform Recipe Packs under `recipe-packs/` at the repository root. Each platform has its own folder (`azure-aks/`, `azure-aci/`, `aws/`, and `kubernetes/`) containing a single Recipe Pack Bicep file (for example `aks-recipe-pack.bicep`) that wires both Bicep and Terraform recipes. Each Recipe Pack declares a single `Radius.Core/recipePacks` resource whose `recipes` map contains an entry for every Resource Type, plus a `Radius.Core/environments` resource that references the pack. | ||
|
|
Signed-off-by: Zach Casper <zachcasper@microsoft.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 24 out of 24 changed files in this pull request and generated no new comments.
Suppressed comments (7)
recipe-packs/README.md:6
- The README claims each pack contains a
<name>-recipe-pack.bicepfile, but the packs in this repo use names likeazure-aks.bicep,azure-aci.bicep, andkubernetes/default.bicep. This makes the overview inaccurate/misleading for contributors.
- `<name>-recipe-pack.bicep`: declares one `Radius.Core/recipePacks` resource whose `recipes` map has an entry per Resource Type.
- `README.md`: documents the pack, its parameters, and the recipes it includes.
recipe-packs/README.md:22
- This step instructs contributors to name the pack file
<name>-recipe-pack.bicep/<short-name>-recipe-pack.bicep, but the existing packs in this repo don’t follow that convention (e.g.,azure-aks.bicep,azure-aci.bicep,default.bicep). Align the instructions with the actual naming used here (or rename the pack files).
1. **Create the folder and files.** Add `recipe-packs/<pack-name>/` with a `<name>-recipe-pack.bicep` and a `README.md`. Use a folder name that identifies the platform and, where a cloud offers more than one compute target, the compute runtime (for example `azure-aks`, `azure-aci`, `kubernetes`). Name the Bicep file `<short-name>-recipe-pack.bicep`.
docs/contributing/contributing-resource-types-recipes.md:58
- The repository layout diagram lists an
recipe-packs/aws/folder andeks-recipe-pack.bicep, but this repository does not containrecipe-packs/aws/. The contributing guide should reflect the actual pack directories present.
├── aws/ # AWS recipe pack
│ ├── README.md
│ └──eks-recipe-pack.bicep
└── kubernetes/ # Kubernetes recipe pack (zero-config, in-cluster)
docs/contributing/contributing-resource-types-recipes.md:241
- This example table references an AWS recipe pack path (
recipe-packs/aws/eks-recipe-pack.bicep) that does not exist in this repository. Either remove the AWS row or adjust it to avoid pointing contributors to a non-existent file.
| Azure | recipe-packs/azure-aks/azure-aks.bicep | mcr.microsoft.com/bicep/avm/res/cache/redis-enterprise |
| AWS | recipe-packs/aws/eks-recipe-pack.bicep | ... |
| Kubernetes | recipe-packs/kubernetes/default.bicep | ghcr.io/radius-project/kube-recipes/... |
docs/using-resource-types.md:44
- This paragraph says all packs bundle an Environment definition and that
azure-aci/accepts provider parameters, but the ACI pack intentionally does not define an Environment or parameters (it’s referenced from an existing Azure-configured Environment). The docs should reflect that distinction.
Each Recipe Pack bundles the Recipes for every Resource Type on that platform together with an Environment definition, so a platform engineer configures an Environment by deploying a single Recipe Pack instead of registering Recipes one type at a time. Cloud packs (under `azure-aks/`, `azure-aci/`, and `aws/`) accept parameters for the provider configuration, such as the subscription or account the Environment provisions into.
README.md:43
- The repository structure diagram lists an
recipe-packs/aws/directory andeks-recipe-pack.bicep, but there is norecipe-packs/aws/folder in this repo (onlyazure-aci/,azure-aks/, andkubernetes/). This makes the top-level README misleading.
├── aws/ # AWS recipe pack
│ ├── README.md
│ └── eks-recipe-pack.bicep
├── kubernetes/ # Kubernetes recipe pack (zero-config, in-cluster)
docs/contributing/contributing-resource-types-recipes.md:272
- This paragraph states every platform folder (including
azure-aci/) contains a single pack file that wires both Bicep and Terraform and that each pack declares an Environment resource. The ACI pack in this PR is intentionally pack-only (no Environment, no parameters), so the guidance is currently inaccurate.
Recipes for a Resource Type are added to the platform Recipe Packs under `recipe-packs/` at the repository root. Each platform has its own folder (`azure-aks/`, `azure-aci/`, `aws/`, and `kubernetes/`) containing a single Recipe Pack Bicep file (for example `azure-aks.bicep`) that wires both Bicep and Terraform recipes. Each Recipe Pack declares a single `Radius.Core/recipePacks` resource whose `recipes` map contains an entry for every Resource Type, plus a `Radius.Core/environments` resource that references the pack.
Signed-off-by: Zach Casper <zachcasper@microsoft.com>
|
This is waiting on the current release to finish. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 24 out of 24 changed files in this pull request and generated 1 comment.
Suppressed comments (3)
recipe-packs/azure-aks/azure-aks.bicep:30
- Renaming this symbolic resource leaves the Environment at line 377 referencing
recipes.id, which is now undefined, so this pack no longer compiles. Either update that reference too or retain the existing symbolic name; the latter is a local fix here.
recipe-packs/azure-aks/README.md:7 - The renamed template still declares and configures a
Radius.Core/environmentsresource at lines 364–380. Omitting that side effect from the file description can lead users to deploy it expecting only recipe registration, even though it also updates the selected Environment.
recipe-packs/kubernetes/README.md:7 - The template still declares the
envresource at lines 56–68, so deploying it also creates or updates the Environment and associates this pack. The new description incorrectly hides that operational side effect.
| `default.bicep` | Recipe Pack wiring the Bicep recipes for all Kubernetes-provisioned types. |
| recipes: { | ||
| 'Radius.Compute/containers': { | ||
| kind: 'bicep' | ||
| source: 'ghcr.io/radius-project/azure-aci-recipes/containers:latest' |
Summary
Reorganize the Recipe Packs and add an Azure Container Instances (ACI) Recipe Pack.
recipe-packs/azure/torecipe-packs/azure-aks/, and name each pack's Bicep file after the pack itself:azure-aks/azure-aks.bicep,kubernetes/default.bicep(wasdefault-recipepack.bicep). The kubernetes file isdefault.bicepbecause itsRadius.Core/recipePacksresource is nameddefault(the packrad initinstalls).recipe-packs/azure-aci/azure-aci.biceppack that provisionsRadius.Compute/containerson ACI,Radius.Compute/persistentVolumeson Azure Files, andRadius.Security/secretson Azure Key Vault. ACI-specific recipes only: no data/messaging/storage/AI recipes, and no Environment or parameters.ghcr.io/radius-project/azure-aci-recipesGHCR namespace, since they are Azure recipes rather thankube-recipes.recipe-packs/README.mdoverview. With the pack file now literally nameddefault.bicep, the "default pack" documentation is reduced to a single concise reference.recipe-packs/azure/bicep-recipepack.bicep, and update all other docs, diagrams, and the release workflow to the new names.Reason for change
Radius needs an Azure Container Instances option distinct from the AKS-based Azure pack. A single
azure/folder is ambiguous once there are two Azure compute targets, so it is renamedazure-aksand a parallelazure-acipack is added. Naming each pack Bicep file after the pack/resource (azure-aks.bicep,azure-aci.bicep,default.bicep) makes the file self-describing and lets the default pack drop most of its "this is the default" prose.Fixes #
Downstream dependency
Two other repos consume these pack paths and must be updated to the final filenames:
azure-aks/azure-acipins indeploy/manifest/defaults.yamland the Azure extension workflow's pack accessor). It was written against the interimaks-recipe-pack.bicepname, so it must be updated toazure-aks.bicep. It merges after this PR and re-pins to this PR's merge SHA. Radius CI (verify-contrib-consumers) rejects non-SHA refs and live-curls the pack file, so it cannot go green until this PR is onmainand re-pinned.main(packages/core/src/modeling/recipe-pack.ts, pinned toRECIPE_PACK_REF = "main"). Its provider-to-path map must move torecipe-packs/azure-aks/azure-aks.bicepandrecipe-packs/kubernetes/default.bicep(plus tests, testdata, and skill docs), and should merge when this PR lands to avoid 404s.How to test
Run the release-automation tests (the check CI runs in
validate-resource-types.yaml):In Actions → Release Recipe Pack → Run workflow, confirm the
recipe_packdropdown offersazure-aks,azure-aci, andkubernetes, and that adry_runforazure-aciresolves a version and builds a bundle without publishing.Post-merge only: once
publish-bicep-recipes.yamlpushes the ACI recipes toghcr.io/radius-project/azure-aci-recipesand a stable release populates the:latesttag, deploy the pack and reference it from an Environment configured with the Azure provider:Until then the pack's
:latestsource references do not resolve, so it cannot be deployed directly from this branch.File change summary
Code changes (need close review)
These change file paths that other repos consume (radius #12662, ai-extensions) or CI behavior.
recipe-packs/azure/aks-recipepack.bicep→recipe-packs/azure-aks/azure-aks.bicepRadius.Core/recipePacksresource renamed fromazure-avmtoazure-aks. Recipe wiring otherwise unchanged.recipe-packs/kubernetes/default-recipepack.bicep→recipe-packs/kubernetes/default.bicepdefault.bicep, matching itsdefaultrecipePacks resource name. Deployed resource name unchanged.recipe-packs/azure-aci/azure-aci.bicep(new)azure-aci) wiringcontainers/persistentVolumes/secretstoghcr.io/radius-project/azure-aci-recipes/*:latest. No Environment or parameters..github/workflows/publish-bicep-recipes.yamlghcr.io/radius-project/azure-aci-recipesGHCR namespace..github/workflows/release-recipe-pack.yamlrecipe_packinput list: replaceazurewithazure-aks, addazure-aci.Documentation changes (not impactful)
recipe-packs/README.md(new)rad initinstallskubernetes/default.bicepas the default.recipe-packs/azure-aci/README.md(new)recipe-packs/azure-aks/README.md,recipe-packs/kubernetes/README.md,recipe-packs/kubernetes/default.bicep(header comment)default.bicep.README.md,docs/using-resource-types.md,docs/contributing/contributing-resource-types-recipes.mdAI/*,Data/*,Messaging/*,Storage/*)recipe-packs/azure-aks/azure-aks.bicep(was a brokenbicep-recipepack.biceppath) and the Kubernetes link atrecipe-packs/kubernetes/default.bicep..github/scripts/publish-bicep-recipe.sh,.github/scripts/release/build-recipe-pack-bundle.sh