Skip to content

feat(ingress): expose helm_release_name_override on legacy nginx_gateway_fabric (#550)#552

Merged
sanmesh-kakade merged 2 commits into
masterfrom
sync-ingress-changes-master
Jun 16, 2026
Merged

feat(ingress): expose helm_release_name_override on legacy nginx_gateway_fabric (#550)#552
sanmesh-kakade merged 2 commits into
masterfrom
sync-ingress-changes-master

Conversation

@sanmesh-kakade

@sanmesh-kakade sanmesh-kakade commented Jun 16, 2026

Copy link
Copy Markdown
Contributor
  • feat(ingress): expose helm_release_name_override on legacy nginx_gateway_fabric

Add a helm_release_name_override advanced spec field to the legacy AWS,
Azure, and GCP nginx_gateway_fabric modules so users can pin a stable
Helm release name. The utility module reads this field directly from
var.instance.spec; no main.tf passthrough needed.

Empty/unset preserves the existing truncated-name behavior, so existing
deployments see no state diff.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

  • feat(ingress): validate helm_release_name_override input in form

Add JSON-schema pattern (DNS-1123 label) and maxLength: 34 on the
helm_release_name_override field across legacy AWS/Azure/GCP modules.
Includes x-ui-error-message and placeholder so the UI surfaces a clear
error before submit. Pairs with the TF-side validation in
facets-utility-modules#36.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

  • feat(ingress): expose proxy timeout overrides on legacy fabric flavors

Add proxy_{connect,read,send}timeout (default 60s) at the instance level and
per-rule nginx_timeouts overrides on all three nginx_gateway_fabric_legacy
*
flavors (aws, azure, gcp). Lower body_size default from 150m to 1m to match
the utility module change.

Required for workloads migrating off legacy nginx_ingress_controller, which
exposed these as per-ingress annotations.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

  • feat(ingress/tools_migration): add convert_nginx_ingress script + MIGRATION.md

Tooling for converting a legacy nginx_ingress_controller blueprint JSON into
the production nginx_gateway_fabric_legacy_{aws,gcp,azure}/1.0 shape. Built
around the saas-cp/tools rollout.

Key behaviors:

  • --cloud flag picks the wrapper flavor; output always emits version "1.0".
  • Drops the entire advanced block (old nginx-ingress Helm overrides don't
    port cleanly to NGF's chart) with a warning listing what was lost.
  • Always injects legacy-parity defaults the new module does not default to:
    body_size: 150m, proxy_{connect,read,send}_timeout: 300s.
  • Hardcodes helm_release_name_override: "tools-facets" for this rollout.
  • For rules whose service name contains "grafana", auto-emits
    request_header_modifier.remove.Authorization so Grafana's anonymous mode
    isn't shadowed by the basic-auth header from the gateway.
  • Drops nginx.ingress.kubernetes.io/backend-protocol: HTTPS annotations from
    any rule that carries them and prints a loud per-rule warning — Gateway API
    has no proxy_ssl_verify off equivalent, so the operator must either expose
    plain HTTP on the backend or set up a BackendTLSPolicy. MIGRATION.md walks
    through the three options.

Lives at modules/ingress/tools_migration/ rather than inside any flavor's
versioned directory so it's not packaged into the IaC modules.

  • docs(ingress/tools_migration): expand k8s-dashboard-new Kong-fix instructions

Calls out the specific helm-values change (kong.proxy.http.enabled: true)
that flips the bundled Kong proxy from TLS-only to TLS+HTTP, plus the
corresponding port flip in the converted blueprint. This is the concrete
fix the saas-cp/tools rollout actually used; the previous wording was
generic.

  • fix(ingress): align legacy nginx_gateway_fabric wrappers with utility module
  • Add helm_release_name_override to top-level x-ui-order (was defined but
    unordered, so hidden/misplaced in the form) — addresses review blocker.
  • Drop per-rule timeouts and nginx_timeouts schema fields: HTTPRoute
    timeouts are ignored by NGF (#2164) and nginx_timeouts had no render path.
    Gateway-wide proxy_*_timeout covers the supported case.
  • body_size default 1m -> 150m to match utility default, avoid silent 413.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

  • chore(ingress): remove tools_migration tooling from wrapper PR

Out of scope for the wrapper modules per review (sanmesh #4). convert_nginx_ingress.py

  • MIGRATION.md moved to a standalone location; will land separately if needed.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

  • feat(ingress): re-add per-rule nginx_timeouts to legacy wrappers

Per-rule proxy_{connect,read,send}_timeout, now backed by a real SnippetsFilter
rendering path in the utility module (capillary parity). Dead Gateway-API
rules[].timeouts stays removed.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

  • chore(ingress): remove dead disable_endpoint_validation field

Declared in the legacy wrapper schemas but consumed nowhere (0 refs in wrapper or
utility main.tf) — a no-op UI toggle. Removed from aws/azure/gcp.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

  • fix(ingress): accept unit-less seconds for proxy timeouts

Relax pattern ^\d+[smh]$ -> ^\d+[smh]?$ on instance + per-rule proxy timeout
fields. nginx treats a bare number as seconds (e.g. '120' = 120s), so the unit
requirement rejected valid input. Still blocks non-numeric garbage.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com


Co-authored-by: Claude Opus 4.7 (1M context) noreply@anthropic.com
Co-authored-by: Shashwat Pathak shashwat.pathak@facets.cloud
(cherry picked from commit 366c39b)

Description

Related issues

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist

  • I have created feat/bugfix branch out of develop branch
  • Code passes linting/formatting checks
  • Changes to resources have been tested in our dev environments
  • I have made corresponding changes to the documentation

Testing

Reviewer instructions

Summary by CodeRabbit

Release Notes

  • New Features

    • Added a gateway-level option to override the Helm release name for deployments.
    • Added gateway-wide proxy timeout controls (connect, read, and send).
    • Updated per-route timeout configuration to use NGINX proxy timeout overrides.
  • Removed

    • Removed the deprecated endpoint validation setting from gateway configuration.
  • Notes

    • Timeout fields and UI ordering/labels were updated to match the new NGINX-focused configuration.

…way_fabric (#550)

* feat(ingress): expose helm_release_name_override on legacy nginx_gateway_fabric

Add a `helm_release_name_override` advanced spec field to the legacy AWS,
Azure, and GCP nginx_gateway_fabric modules so users can pin a stable
Helm release name. The utility module reads this field directly from
var.instance.spec; no main.tf passthrough needed.

Empty/unset preserves the existing truncated-name behavior, so existing
deployments see no state diff.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(ingress): validate helm_release_name_override input in form

Add JSON-schema pattern (DNS-1123 label) and maxLength: 34 on the
helm_release_name_override field across legacy AWS/Azure/GCP modules.
Includes x-ui-error-message and placeholder so the UI surfaces a clear
error before submit. Pairs with the TF-side validation in
facets-utility-modules#36.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(ingress): expose proxy timeout overrides on legacy fabric flavors

Add proxy_{connect,read,send}_timeout (default 60s) at the instance level and
per-rule nginx_timeouts overrides on all three nginx_gateway_fabric_legacy_*
flavors (aws, azure, gcp). Lower body_size default from 150m to 1m to match
the utility module change.

Required for workloads migrating off legacy nginx_ingress_controller, which
exposed these as per-ingress annotations.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(ingress/tools_migration): add convert_nginx_ingress script + MIGRATION.md

Tooling for converting a legacy `nginx_ingress_controller` blueprint JSON into
the production `nginx_gateway_fabric_legacy_{aws,gcp,azure}/1.0` shape. Built
around the saas-cp/tools rollout.

Key behaviors:
- `--cloud` flag picks the wrapper flavor; output always emits version "1.0".
- Drops the entire `advanced` block (old nginx-ingress Helm overrides don't
  port cleanly to NGF's chart) with a warning listing what was lost.
- Always injects legacy-parity defaults the new module does not default to:
  `body_size: 150m`, `proxy_{connect,read,send}_timeout: 300s`.
- Hardcodes `helm_release_name_override: "tools-facets"` for this rollout.
- For rules whose service name contains "grafana", auto-emits
  `request_header_modifier.remove.Authorization` so Grafana's anonymous mode
  isn't shadowed by the basic-auth header from the gateway.
- Drops `nginx.ingress.kubernetes.io/backend-protocol: HTTPS` annotations from
  any rule that carries them and prints a loud per-rule warning — Gateway API
  has no `proxy_ssl_verify off` equivalent, so the operator must either expose
  plain HTTP on the backend or set up a BackendTLSPolicy. MIGRATION.md walks
  through the three options.

Lives at modules/ingress/tools_migration/ rather than inside any flavor's
versioned directory so it's not packaged into the IaC modules.

* docs(ingress/tools_migration): expand k8s-dashboard-new Kong-fix instructions

Calls out the specific helm-values change (`kong.proxy.http.enabled: true`)
that flips the bundled Kong proxy from TLS-only to TLS+HTTP, plus the
corresponding port flip in the converted blueprint. This is the concrete
fix the saas-cp/tools rollout actually used; the previous wording was
generic.

* fix(ingress): align legacy nginx_gateway_fabric wrappers with utility module

- Add helm_release_name_override to top-level x-ui-order (was defined but
  unordered, so hidden/misplaced in the form) — addresses review blocker.
- Drop per-rule timeouts and nginx_timeouts schema fields: HTTPRoute
  timeouts are ignored by NGF (#2164) and nginx_timeouts had no render path.
  Gateway-wide proxy_*_timeout covers the supported case.
- body_size default 1m -> 150m to match utility default, avoid silent 413.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(ingress): remove tools_migration tooling from wrapper PR

Out of scope for the wrapper modules per review (sanmesh #4). convert_nginx_ingress.py
+ MIGRATION.md moved to a standalone location; will land separately if needed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat(ingress): re-add per-rule nginx_timeouts to legacy wrappers

Per-rule proxy_{connect,read,send}_timeout, now backed by a real SnippetsFilter
rendering path in the utility module (capillary parity). Dead Gateway-API
rules[].timeouts stays removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(ingress): remove dead disable_endpoint_validation field

Declared in the legacy wrapper schemas but consumed nowhere (0 refs in wrapper or
utility main.tf) — a no-op UI toggle. Removed from aws/azure/gcp.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(ingress): accept unit-less seconds for proxy timeouts

Relax pattern ^\d+[smh]$ -> ^\d+[smh]?$ on instance + per-rule proxy timeout
fields. nginx treats a bare number as seconds (e.g. '120' = 120s), so the unit
requirement rejected valid input. Still blocks non-numeric garbage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Shashwat Pathak <shashwat.pathak@facets.cloud>
(cherry picked from commit 366c39b)
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 61d33ddf-4f60-4f8e-9e3b-7f59c47d1920

📥 Commits

Reviewing files that changed from the base of the PR and between ca1cd08 and 093c600.

📒 Files selected for processing (3)
  • modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml
  • modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml
  • modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml
  • modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml
  • modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml

Walkthrough

Three cloud-provider facet schemas (AWS, Azure, GCP) for the nginx_gateway_fabric_legacy ingress module are updated identically: a helm_release_name_override field is added, per-route timeouts is replaced by nginx_timeouts exposing NGINX proxy timeout knobs, gateway-wide proxy_connect_timeout/proxy_read_timeout/proxy_send_timeout fields are added, disable_endpoint_validation is removed, and x-ui-order metadata is updated throughout.

Changes

NGINX Gateway Fabric Legacy Ingress Schema Updates

Layer / File(s) Summary
Add helm_release_name_override field
modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml, modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml, modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml
A new spec.helm_release_name_override string field is added to all three provider schemas with DNS-1123 pattern validation, maxLength constraint, and UI toggle/placeholder/error-message metadata.
Replace per-route timeouts with nginx_timeouts
modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml, modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml, modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml
The per-route timeouts object (request/backend) is removed and replaced with nginx_timeouts defining proxy_connect_timeout, proxy_read_timeout, and proxy_send_timeout sub-fields with duration patterns, defaults, and UI metadata. Each schema's per-route x-ui-order is updated to reference nginx_timeouts.
Add gateway-wide proxy timeouts, remove disable_endpoint_validation, update x-ui-order
modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml, modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml, modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml
Spec-level proxy_connect_timeout, proxy_read_timeout, and proxy_send_timeout fields are added to all three schemas with regex validation, defaults, and UI toggle metadata. The disable_endpoint_validation field is removed from each schema. The spec-level x-ui-order lists are updated to include helm_release_name_override, domains, and the new proxy timeout fields while dropping the removed endpoint-validation entry.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: exposing helm_release_name_override on legacy nginx_gateway_fabric modules, with issue reference #550.
Description check ✅ Passed The description includes comprehensive commit messages detailing the changes, related functionality, motivation, and implementation details across all the added features and fixes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync-ingress-changes-master

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml`:
- Around line 906-913: Remove the `disable_endpoint_validation` field reference
from the README documentation files to align with the schema changes where this
field has been removed from all three provider implementations. In
modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/README.md at line 287,
remove the mention of `disable_endpoint_validation`. In
modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/README.md at line 152,
remove the mention of `disable_endpoint_validation`. In
modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/README.md at line 152,
remove the mention of `disable_endpoint_validation`. Ensure all three README
files are updated to eliminate the documentation/schema mismatch.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 799734db-c378-4d7d-8cd0-18b4bd9f72ed

📥 Commits

Reviewing files that changed from the base of the PR and between 2e45aff and ca1cd08.

📒 Files selected for processing (3)
  • modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml
  • modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml
  • modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml

Comment on lines +906 to +913
- helm_release_name_override
- domains
- force_ssl_redirection
- basic_auth
- body_size
- disable_endpoint_validation
- proxy_connect_timeout
- proxy_read_timeout
- proxy_send_timeout

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update README files to reflect removal of disable_endpoint_validation across all providers.

The disable_endpoint_validation field has been removed from all three provider schemas, but the corresponding README documentation still references it. This creates a documentation/schema mismatch that will confuse users.

  • modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml#L906-L913: Remove disable_endpoint_validation from modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/README.md (line 287).
  • modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml#L903-L910: Remove disable_endpoint_validation from modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/README.md (line 152).
  • modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml#L903-L910: Remove disable_endpoint_validation from modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/README.md (line 152).
📍 Affects 3 files
  • modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml#L906-L913 (this comment)
  • modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/facets.yaml#L903-L910
  • modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/facets.yaml#L903-L910
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/facets.yaml` around lines
906 - 913, Remove the `disable_endpoint_validation` field reference from the
README documentation files to align with the schema changes where this field has
been removed from all three provider implementations. In
modules/ingress/nginx_gateway_fabric_legacy_aws/1.0/README.md at line 287,
remove the mention of `disable_endpoint_validation`. In
modules/ingress/nginx_gateway_fabric_legacy_azure/1.0/README.md at line 152,
remove the mention of `disable_endpoint_validation`. In
modules/ingress/nginx_gateway_fabric_legacy_gcp/1.0/README.md at line 152,
remove the mention of `disable_endpoint_validation`. Ensure all three README
files are updated to eliminate the documentation/schema mismatch.

…_fabric wrappers

Form default + placeholder for instance-level proxy_{connect,read,send}_timeout 60s -> 300s across the AWS/Azure/GCP wrappers, matching the utility-module default (facets-utility-modules#36) and restoring parity with the legacy nginx_ingress_controller. The form default is what gets persisted into spec for new instances, so this is what makes 300s the effective default.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sanmesh-kakade
sanmesh-kakade merged commit 212dd21 into master Jun 16, 2026
2 checks passed
@sanmesh-kakade
sanmesh-kakade deleted the sync-ingress-changes-master branch June 16, 2026 05:56
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