Skip to content

Move Contour routing to Gateway API recipes by default#11995

Open
willdavsmith wants to merge 7 commits into
mainfrom
replace-contour-with-nginx-demo
Open

Move Contour routing to Gateway API recipes by default#11995
willdavsmith wants to merge 7 commits into
mainfrom
replace-contour-with-nginx-demo

Conversation

@willdavsmith
Copy link
Copy Markdown
Contributor

@willdavsmith willdavsmith commented May 26, 2026

Summary

This PR updates the Contour recipe-pack design and implementation direction to use Gateway API as the default Contour-backed route path.

The default model is now:

  • rad install kubernetes continues installing Contour by default for now.
  • When Contour install is enabled, Radius creates the shared Gateway API infrastructure: GatewayClass/contour and Gateway/radius in radius-system.
  • The default Radius.Compute/routes recipe renders Gateway API route resources such as HTTPRoute and attaches them to radius-system/radius.
  • Applications do not define Radius.Compute/gateways in the default path.

The design still keeps removal of default Contour installation as a separate review decision.

Scope

  • Adds install/upgrade/uninstall handling for the managed default Contour Gateway API Gateway.
  • Grants the dynamic RP Gateway API permissions for Gateway and route resources.
  • Rewrites the design note to describe Contour Gateway API as the default recipe path.
  • Documents HTTPProxy as an alternate compatibility recipe-pack option, not the default.

Related work

Validation

Local:

  • GOCACHE=/private/tmp/radius-go-build-cache go test ./pkg/cli/helm ./cmd/rad/cmd

Demo e2e:

Notes for reviewers

The key design point is that Radius can keep the same application shape while moving provider-specific route rendering into recipes. Contour remains installed by default for now; the default application routing path moves to Gateway API so the same route recipe shape can work with Contour, NGINX Gateway Fabric, or another Gateway API controller.

Signed-off-by: willdavsmith <willdavsmith@gmail.com>
@github-actions
Copy link
Copy Markdown

This PR requires exactly 1 of the following labels: pr:standard, pr:important.
Currently applied labels: .

Label descriptions:

  • pr:important - Major features, breaking changes, deprecations, or other high-impact changes that need special attention during release.
  • pr:standard - Ongoing maintenance, minor improvements, documentation updates, and routine development work.

@willdavsmith, please add the appropriate label to this PR before merging.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2026

Unit Tests

    2 files  ± 0    435 suites  +4   7m 41s ⏱️ +22s
5 254 tests +35  5 252 ✅ +35  2 💤 ±0  0 ❌ ±0 
6 376 runs  +59  6 374 ✅ +59  2 💤 ±0  0 ❌ ±0 

Results for commit ad23277. ± Comparison against base commit 47a11af.

This pull request removes 3 and adds 38 tests. Note that renamed tests count towards both.
github.com/radius-project/radius/pkg/cli/cmd/app/graph ‑ Test_providerFromID
github.com/radius-project/radius/pkg/cli/cmd/app/graph ‑ Test_providerFromID/parse_invalid_resource_ID
github.com/radius-project/radius/pkg/cli/cmd/app/graph ‑ Test_providerFromID/parse_valid_resource_ID
github.com/radius-project/radius/cmd/rad/cmd ‑ Test_wirePreviewSubcommand
github.com/radius-project/radius/cmd/rad/cmd ‑ Test_wirePreviewSubcommand/routes_to_legacy_runner_when_--preview_is_not_set
github.com/radius-project/radius/cmd/rad/cmd ‑ Test_wirePreviewSubcommand/routes_to_preview_runner_when_--preview_is_set
github.com/radius-project/radius/pkg/cli/cmd/app/graph ‑ Test_ProviderFromID
github.com/radius-project/radius/pkg/cli/cmd/app/graph ‑ Test_ProviderFromID/parse_invalid_resource_ID
github.com/radius-project/radius/pkg/cli/cmd/app/graph ‑ Test_ProviderFromID/parse_valid_resource_ID
github.com/radius-project/radius/pkg/cli/cmd/app/graph/preview ‑ Test_CommandValidation
github.com/radius-project/radius/pkg/cli/cmd/app/graph/preview ‑ Test_Run
github.com/radius-project/radius/pkg/cli/cmd/app/graph/preview ‑ Test_Run/Error:_GetGraph_failure_is_propagated
github.com/radius-project/radius/pkg/cli/cmd/app/graph/preview ‑ Test_Run/Error:_application_not_found_(404)
…

♻️ This comment has been updated with latest results.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 26, 2026

Codecov Report

❌ Patch coverage is 62.90323% with 46 lines in your changes missing coverage. Please review.
✅ Project coverage is 51.98%. Comparing base (092d8c2) to head (ad23277).
⚠️ Report is 52 commits behind head on main.

Files with missing lines Patch % Lines
pkg/cli/helm/contour_gateway.go 64.91% 36 Missing and 4 partials ⚠️
pkg/cli/helm/cluster.go 40.00% 3 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #11995      +/-   ##
==========================================
+ Coverage   51.41%   51.98%   +0.57%     
==========================================
  Files         716      733      +17     
  Lines       45106    46429    +1323     
==========================================
+ Hits        23191    24137     +946     
- Misses      19719    19987     +268     
- Partials     2196     2305     +109     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This reverts commit 93bd23a.
@willdavsmith willdavsmith marked this pull request as ready for review May 26, 2026 21:22
@willdavsmith willdavsmith requested a review from a team as a code owner May 26, 2026 21:22
Copilot AI review requested due to automatic review settings May 26, 2026 21:22
@willdavsmith willdavsmith requested a review from a team as a code owner May 26, 2026 21:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new design note describing how Radius’ current built-in Contour (HTTPProxy) ingress rendering could be moved out of core RP and into contributed recipe packs while preserving the existing Radius.Compute/* application model and default behavior.

Changes:

  • Introduces a design proposal for a Contour HTTPProxy compatibility recipe pack (gateways root proxy + routes child proxies + existing containers recipes).
  • Documents current Contour installation defaults and how default recipe-pack behavior could incorporate HTTPProxy parity.
  • Outlines test, security (RBAC), and compatibility considerations, plus a Gateway API alternative path.

Comment on lines +55 to +66
```bash
rad deploy contour-httpproxy-recipe-pack.bicep --group default -e default
rad env update default --recipe-packs contour-httpproxy-pack --preview
rad deploy app.bicep --application contour-httpproxy-demo -e default
```

To use Gateway API instead, users attach a different recipe pack:

```bash
rad env update default --recipe-packs contour-gateway-api-pack --preview
rad deploy app.bicep --application contour-gateway-api-demo -e default -p gatewayClassName=contour
```
Comment on lines +149 to +150
The default recipes should be pinned to the Radius release or another explicit artifact version. The default experience should not depend on floating latest recipe artifacts.

@willdavsmith willdavsmith changed the title Replace built-in Contour behavior with recipe packs Replace built-in Contour behavior with recipe packs design May 29, 2026
@willdavsmith willdavsmith changed the title Replace built-in Contour behavior with recipe packs design Move Contour routing to Gateway API recipes by default May 29, 2026
@radius-functional-tests
Copy link
Copy Markdown

radius-functional-tests Bot commented May 29, 2026

Radius functional test overview

🔍 Go to test action run

Click here to see the test run details
Name Value
Repository radius-project/radius
Commit ref ad23277
Unique ID funccee30f123d
Image tag pr-funccee30f123d
  • gotestsum 1.13.0
  • KinD: v0.29.0
  • Dapr: 1.14.4
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-funccee30f123d
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-funccee30f123d
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-funccee30f123d
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-funccee30f123d
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-funccee30f123d
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting corerp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
❌ Failed to install Radius for ucp-cloud functional test. Please check the logs for more details
❌ Failed to install Radius for corerp-cloud functional test. Please check the logs for more details
❌ ucp-cloud functional test failed. Please check the logs for more details
❌ corerp-cloud functional test failed. Please check the logs for more details

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants