Repository navigation
Restore k3d setup guidance for Radius’s Contour ingress - #2072
Merged
Merged
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Signed-off-by: lakshmimsft <ljavadekar@microsoft.com>
lakshmimsft
force-pushed
the
docs/k3d-installation-guidance
branch
from
October 29, 2026 19:31
21a3907 to
ea819f8
Compare
DariuszPorowski
approved these changes
Oct 29, 2026
This branch was successfully deployed
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.
Summary
Restore k3d cluster preparation guidance on
/installation/, with links from the control-plane installation page and getting-started guide. Document disabling Traefik, retainingservicelb, mapping a localhost HTTP port, and using the route's hostname when accessing an application.Reason for change
The installation-docs restructure removed the old k3d setup instructions. A default k3d cluster includes Traefik, which can conflict with Radius's default Contour installation through ingress ports and Gateway API CRD ownership.
The old command also disabled
servicelb. Restoring it verbatim would be incorrect: the previous Bitnami Contour chart exposed Envoy through host ports, while the current Contour chart defaults to a KubernetesLoadBalancerService. The documented setup leavesservicelbenabled so traffic forwarded by k3d can reach Envoy.Related: radius-project/radius#13547. The Contour chart migration is documented in radius-project/radius#10573.
How to test
Follow
docs/README.mdto install the Node.js dependencies. Fromdocs/, run:npm run build -- --cacheDir "$PWD/node_modules/.cache/hugo"Expected: the site builds successfully. Open
/installation/in a local preview and check the new Prepare a k3d cluster section. Follow the links to it from/installation/control-plane/and/getting-started/install-radius/, and check both links to the Routes integration guide.With a recent k3d release, a supported Kubernetes image, a compatible
kubectl, the Radius CLI, and Docker with at least 8 GB allocated, create a new cluster using the documented options. Use an unused cluster name and local port. Runrad install kubernetesin that cluster's context. Expected: Radius installs Contour and creates theradiusgateway, without Traefik CRD ownership errors.In the test cluster, create a backend and an HTTP route. These commands assume the documented localhost port,
18081:Expected: the matching hostname returns HTTP 200 and the nginx welcome page; the unmatched hostname returns HTTP 404. The
svclb-contour-envoy-*pod inkube-systemis running and thecontour-envoyService inradius-systemhas an external address. This tests the ingress network path with a Kubernetes HTTPRoute, not a Radius application deployment.Validation performed:
npm run build -- --cacheDir "$PWD/node_modules/.cache/hugo"(fromdocs/): passed, with an existing Docsy deprecation warning. The unqualified build initially failed because of local Go/Hugo tooling and then a PostCSS permission error with the external Hugo cache; installing the pinned dependencies and using a project-local cache resolved those failures without repository configuration changes.npx --no-install cspell --config .github/linters/.cspell.yml --no-progress docs/content/installation/_index.md docs/content/installation/control-plane/_index.md docs/content/getting-started/install-radius/_index.md(repository root): passed, zero spelling issues.git diff --check: passed.servicelbenabled. Initial API timeouts required freeing local resources, completing CRD establishment, and retrying the installation; this was not a clean first-attempt installation test. The final Radius control plane, Contour, and Envoy pods were ready.curl --noproxy '*' -fSs --max-time 10 -o /dev/null -w 'Matching hostname: HTTP %{http_code}\n' -H 'Host: docs-port-test.localhost' http://127.0.0.1:18081/: passed, HTTP 200 through Radius-installed Contour to the test backend.curl --noproxy '*' -sS --max-time 10 -o /dev/null -w 'Unmatched hostname: HTTP %{http_code}\n' -H 'Host: unmatched.localhost' http://127.0.0.1:18081/: passed, HTTP 404.The runtime check validates HTTP port mapping, not TLS, Radius application deployment, or the supported Kubernetes version matrix. The docs therefore refer to the current system requirements rather than pinning the test's Kubernetes version.
File change summary
docs/content/installation/_index.mdservicelbguidance, existing-cluster precautions, and hostname-aware HTTP access.docs/content/installation/control-plane/_index.mddocs/content/getting-started/install-radius/_index.md