Skip to content

Conversation

@DrummyFloyd
Copy link

@DrummyFloyd DrummyFloyd commented Dec 1, 2025

What this PR does / why we need it

add template/manifest for kind: HTTPRoute sucessor of kind: Ingress , because is now in GA, for both n8n server & webhook, following quite the same logic as Ingress

Which issue this PR fixes

can create one if needed ..

Special notes for your reviewer

tested manually

Checklist

Please place an 'x' in all applicable fields and remove unrelated items.

Version and Documentation

  • Chart version updated in Chart.yaml following semantic versioning
    - [ ] App version updated in Chart.yaml if applicable
  • artifacthub.io/changes section updated in Chart.yaml (see ArtifactHub annotation reference)
  • Variables are documented in the README.md

Testing and Validation

  • Ran ah lint locally without errors
  • Ran Chart-Testing: ct lint --chart-dirs charts/n8n --charts charts/n8n --validate-maintainers=false
  • Tested chart installation locally
  • Tested with example configurations in /examples directory

Summary by CodeRabbit

  • New Features

    • Added HTTPRoute support to configure network routing for the server and webhook endpoints, including configurable hosts, rules, matches, filters and parent references.
  • Documentation

    • Expanded README with HTTPRoute configuration examples and reordered configuration overview to include the new route section.
  • Chores

    • Bumped chart version to 2.1.0 to release the new routing options.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 1, 2025

Walkthrough

Adds a new Helm template templates/route.yaml and an ingress.route configuration in values.yaml to render a Kubernetes HTTPRoute for n8n when enabled. Bumps chart version in charts/n8n/Chart.yaml from 2.0.1 to 2.1.0 and replaces artifacthub change entries with a single note about adding the HTTPRoute.

Changes

Cohort / File(s) Change Summary
Chart metadata
charts/n8n/Chart.yaml
version changed from 2.0.12.1.0; artifacthub.io/changes entries replaced by a single added entry describing: "Add HTTPRoute manifest for server and webhook".
Route template & configuration
charts/n8n/templates/route.yaml, charts/n8n/values.yaml
New Helm template templates/route.yaml to render a Kubernetes HTTPRoute when route.enabled is true (configurable apiVersion/kind, metadata, parentRefs, hostnames, rules with main backendRef and optional webhook backendRef, optional matches/filters). values.yaml adds an ingress.route block (route.enabled, apiVersion, kind, annotations, labels, hostnames, parentRefs, additionalRules) plus main and webhook subsections with matches and filters.
Documentation
README.md
Reorders configuration list and adds an HTTPRoute configuration example and guidance for the new ingress.route values.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Pay attention to Gateway API field correctness (apiVersion, kind, parentRefs, backendRefs, matches, filters).
  • Verify Helm templating usage (include, tpl, toYaml, conditionals) and alignment with values.yaml.
  • Confirm default ports and backendRef naming for main vs webhook.

Possibly related PRs

  • Next Gen Chart #132 — Modifies charts/n8n/Chart.yaml and values.yaml; overlaps with changes to values/chart structure and ingress-related configuration.

Suggested reviewers

  • Vad1mo
  • alexandre-k
  • fank

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(httproute): add ingress sucessor manifest' accurately describes the main change: introducing HTTPRoute as an ingress successor, with a template and configuration for n8n server and webhook routing.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
charts/n8n/values.yaml (1)

50-97: HTTPRoute configuration structure looks solid; verify webhook path consistency and additionalRules intent.

The new HTTPRoute section mirrors the Ingress structure well. However, a few items warrant attention:

  1. Inconsistent additionalRules: The main block (line 79) includes an additionalRules field, but the webhook block (lines 80–96) does not. Is this intentional, or should webhook also support additionalRules for consistency?

  2. Trailing slash inconsistency: All webhook paths have trailing slashes (/webhook/, /webhook-test/, /webhook-waiting/) except /form (line 94). Confirm this is intentional per n8n's routing.

  3. Empty parentRefs & hostnames: Users will need to configure parentRefs and hostnames for the HTTPRoute to function. This is standard Gateway API practice, but ensure the template or documentation flags this requirement clearly.

  4. Comment wording (lines 68, 78): Consider rewording "deny some path like ingresses" to be clearer, e.g., "deny some paths like ingresses do".

Please verify:

  • Are all n8n webhook paths included? Any other routes needed (e.g., /webhook-response/, /webhook-tunnel/)?
  • Is the /form path intentionally missing a trailing slash?
  • Does the template provide guidance when parentRefs is empty?

For consistency, consider adding an empty additionalRules: [] to the webhook block (line 96) to mirror the main block structure.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4774087 and 34bd11b.

📒 Files selected for processing (2)
  • charts/n8n/Chart.yaml (2 hunks)
  • charts/n8n/values.yaml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • charts/n8n/Chart.yaml

@Vad1mo
Copy link
Member

Vad1mo commented Dec 3, 2025

@DrummyFloyd thank you for the PR, plase update the README, to fit this alongside ingress. in the right section of the values file.

also the linter fails.

@DrummyFloyd
Copy link
Author

@DrummyFloyd thank you for the PR, plase update the README, to fit this alongside ingress. in the right section of the values file.

also the linter fails.

should be good now =)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
charts/n8n/values.yaml (1)

50-97: Values structure looks good; minor inconsistency in additionalRules field.

The route configuration block is well-structured and aligns with the template expectations. However, Line 79 shows route.main.additionalRules, but route.webhook (lines 80–96) doesn't include a corresponding additionalRules field. If this is intentional, document it; otherwise, add it for consistency with the main route.

Consider adding additionalRules: [] to route.webhook (after line 96) to match the structure of route.main:

  webhook:
    # -- Route matches
    matches:
      - path:
          type: PathPrefix
          value: /webhook/
      - path:
          type: PathPrefix
          value: /webhook-test/
      - path:
          type: PathPrefix
          value: /webhook-waiting/
      - path:
          type: PathPrefix
          value: /form
    # -- Route filters
    filters: []
+   # -- Additional rules  to deny some path like ingresses
+   additionalRules: []
README.md (1)

33-39: Fix hyphenation in overview section headings.

Lines 35–39 need hyphens to follow standard English grammar: "Kubernetes-specific settings" (not "Kubernetes specific settings").

Apply this diff to fix the grammar:

 1. Global and chart wide values, like the image repository, image tag, etc.
 2. HttpRoute
-3. Ingress, (default is nginx, but you can change it to your own ingress controller)
-4. Main n8n app configuration + Kubernetes specific settings
-5. Worker related settings + Kubernetes specific settings
-6. Webhook related settings + Kubernetes specific settings
-7. Raw Resources to pass through your own manifests like GatewayAPI, ServiceMonitor etc.
-8. Redis related settings + Kubernetes specific settings
+3. Ingress, (default is nginx, but you can change it to your own ingress controller)
+4. Main n8n app configuration + Kubernetes-specific settings
+5. Worker-related settings + Kubernetes-specific settings
+6. Webhook-related settings + Kubernetes-specific settings
+7. Raw Resources to pass through your own manifests like GatewayAPI, ServiceMonitor etc.
+8. Redis-related settings + Kubernetes-specific settings
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 34bd11b and 44d4b46.

📒 Files selected for processing (4)
  • README.md (2 hunks)
  • charts/n8n/Chart.yaml (2 hunks)
  • charts/n8n/templates/route.yaml (1 hunks)
  • charts/n8n/values.yaml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • charts/n8n/Chart.yaml
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: tsch157
Repo: 8gears/n8n-helm-chart PR: 239
File: charts/n8n/Chart.yaml:3-4
Timestamp: 2025-09-02T08:05:39.372Z
Learning: n8n 1.110.0 is a pre-release version and should not be used in production deployments. Always verify if a version is stable before recommending upgrades in the n8n Helm chart.
🪛 LanguageTool
README.md

[grammar] ~35-~35: Use a hyphen to join words.
Context: ... Main n8n app configuration + Kubernetes specific settings 5. Worker related sett...

(QB_NEW_EN_HYPHEN)


[grammar] ~36-~36: Use a hyphen to join words.
Context: ... 5. Worker related settings + Kubernetes specific settings 6. Webhook related set...

(QB_NEW_EN_HYPHEN)


[grammar] ~37-~37: Use a hyphen to join words.
Context: ...6. Webhook related settings + Kubernetes specific settings 7. Raw Resources to pa...

(QB_NEW_EN_HYPHEN)


[grammar] ~39-~39: Use a hyphen to join words.
Context: ...GatewayAPI, ServiceMonitor etc. 8. Redis related settings + Kubernetes specific s...

(QB_NEW_EN_HYPHEN)


[grammar] ~39-~39: Use a hyphen to join words.
Context: .... 8. Redis related settings + Kubernetes specific settings ## Configurating N8n ...

(QB_NEW_EN_HYPHEN)

🪛 YAMLlint (1.37.1)
charts/n8n/templates/route.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

🔇 Additional comments (2)
charts/n8n/templates/route.yaml (1)

1-53: Template structure is sound; YAML linter error is a false positive.

The YAMLlint error at line 1 is a false positive—{{- if .Values.route.enabled }} is valid Helm syntax. The template conditionally renders the entire HTTPRoute resource, which is appropriate when the feature is disabled.

The template logic correctly:

  • Gates webhook route rendering behind $.Values.webhook.enabled (line 40)
  • Defaults service ports to 80 if not specified (lines 31, 43)
  • Uses tpl for dynamic templating within hostnames and matches
README.md (1)

129-166: HTTPRoute documentation is comprehensive and well-positioned; reviewer feedback addressed.

The README now includes a full HTTPRoute example that mirrors the values.yaml structure and shows realistic configuration (traefik gateway). The placement at item 2 in the overview aligns with the values.yaml structure (route block appears before ingress in the file). The example demonstrates:

  • parentRefs with a traefik gateway reference (practical example)
  • hostnames configuration
  • main and webhook route matches

This addresses the reviewer's request to include HTTPRoute alongside Ingress in the correct section. The documentation is clear and actionable.

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