Skip to content

DEVPROD-3580: Add gateway api support#1084

Merged
pbhardwaj6 merged 23 commits intomainfrom
DEVPROD-3580-add-gateway-api-support
Apr 3, 2026
Merged

DEVPROD-3580: Add gateway api support#1084
pbhardwaj6 merged 23 commits intomainfrom
DEVPROD-3580-add-gateway-api-support

Conversation

@pbhardwaj6
Copy link
Copy Markdown
Contributor

@pbhardwaj6 pbhardwaj6 commented Feb 18, 2026

Pull request description

This change is because of nginx is going out of support in march. Ref: https://www.kubernetes.dev/blog/2025/11/12/ingress-nginx-retirement/

Summary

  • Adds Gateway API (HTTPRoute) support to Data Center product charts while preserving existing Ingress support.
  • Updates functional test harness (KinD + MicroShift/CRC GitHub Actions) to run Gateway API-only (removes ingress-nginx dependency) and verifies app readiness via Envoy Gateway + port-forward.

Key Changes

  • Helm charts (Bamboo/Bitbucket/Confluence/Crowd/Jira)

    • Adds new gateway: values block (disabled by default) and a new templates/httproute.yaml.
    • Enforces mutual exclusion: gateway.create cannot be enabled with ingress.create.
    • Updates proxy/base URL behavior to work for both Ingress and Gateway:
      • Uses gateway.hostnames[0] / gateway.https when Gateway is enabled.
      • Fixes Bitbucket SETUP_BASEURL generation to not accidentally use ingress.port in Gateway mode.
    • Updates NOTES.txt output to show the correct service URL for Gateway usage (including Crowd path handling and Bitbucket Mesh URL scheme).
  • Functional tests / CI

    • KinD: installs Gateway API CRDs + Envoy Gateway, creates a test Gateway (atlassian-gateway), and removes ingress-nginx install.
    • MicroShift/CRC workflow: now also installs Gateway API CRDs + Envoy Gateway + GatewayClass + Gateway so tests don’t rely on pre-existing cluster state.
    • Introduces verify_gateway_ingress() that:
      • Port-forwards the Envoy proxy service
      • Uses curl with Host: header from the HTTPRoute
    • Adds/extends Gateway-focused harness validation (verify_gateway) and a Java chart rendering test for Gateway resources (GatewayTest).
  • How It Works (Gateway Mode)

    • Gateway API controller is assumed/provisioned (tests install Envoy Gateway).
    • Charts create an HTTPRoute that attaches to an existing Gateway via:
      • gateway.gatewayName (required)
      • gateway.hostnames[] (required)
      • optional gateway.gatewayNamespace, gateway.path, gateway.pathType, etc.

Testing Notes

  • Local chart rendering/unit test coverage
  • KinD functional test (Gateway-only)

Checklist

  • I have added unit tests
  • I have applied the change to all applicable products
  • The E2E test has passed (use e2e label)

Rovo Dev couldn't review this pull request
Upgrade to Rovo Dev Standard to continue using code review.

…port' into DEVPROD-3580-add-gateway-api-support

# Conflicts:
#	.github/workflows/kind.yaml
#	.github/workflows/openshift.yaml
#	src/test/java/test/GatewayTest.java
@nanux
Copy link
Copy Markdown
Member

nanux commented Feb 18, 2026

@pbhardwaj6 this is fairly large PR (46 files), can you please supply PR description and testing notes?

@pbhardwaj6 pbhardwaj6 marked this pull request as draft February 18, 2026 05:52
@pbhardwaj6 pbhardwaj6 marked this pull request as ready for review February 18, 2026 10:42
pbhardwaj6 and others added 2 commits March 10, 2026 13:15
* DEVPROD-3580 Extracted and re-used common logic.

* DEVPROD-3580 Improved documentation.

// When Synchrony is enabled, Confluence creates an extra rule.
// We just validate it points at the synchrony Service.
assertThat(httpRoute.getNode("spec", "rules").required(0)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It probably would be wise to also check that product route is at the position 1 - just to eliminate case where we accidentally override product route instead of prepending it with synchrony route.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

ok, will do the update

Copy link
Copy Markdown
Collaborator

@amierzwicki amierzwicki left a comment

Choose a reason for hiding this comment

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

Nice work! I've left few suggestions. We need to get the tests passing on this one.

…way-api-support

# Conflicts:
#	src/main/charts/confluence/Chart.yaml
#	src/test/resources/expected_helm_output/confluence/output.yaml
#	src/test/scripts/kind/deploy_app.sh
@pbhardwaj6 pbhardwaj6 added e2e and removed e2e labels Mar 18, 2026
@pbhardwaj6 pbhardwaj6 merged commit 490cb58 into main Apr 3, 2026
11 of 13 checks passed
@pbhardwaj6 pbhardwaj6 deleted the DEVPROD-3580-add-gateway-api-support branch April 3, 2026 08:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants