Gateway API features required by CloudBees CI

4 minute read
CloudBees Beta

This feature is available as a beta release and is subject to change without notice. CloudBees recommends stringent testing in a development environment and a complete review of the documentation and architecture before using it in production.

Modern Cloud Platforms

This content applies only to CloudBees CI on modern cloud platforms.

CloudBees CI on modern cloud platforms uses specific features from the Kubernetes Gateway API specification. Verify that your chosen implementation supports the features below for CloudBees CI on modern cloud platforms to function correctly. If a Gateway API feature is not listed here, it is not required for CloudBees CI on modern cloud platforms. For the full list of tested and conformant implementations, refer to Kubernetes Gateway API supported implementations.

This list reflects CloudBees CI on modern cloud platforms requirements as of the current release. Future versions may require additional Gateway API features. Check these requirements when upgrading CloudBees CI on modern cloud platforms or changing your Gateway API implementation.

CloudBees CI on modern cloud platforms requires a Gateway API implementation that achieves GATEWAY-HTTP conformance. All Core features (such as HTTPRoute and cross-namespace routing) are guaranteed by this conformance profile and do not need per-feature verification. Refer to Core features for details on how CloudBees CI on modern cloud platforms uses Core features.

The following table lists the Extended features CloudBees CI on modern cloud platforms requires beyond the Core conformance baseline. Extended features are portable but not universally supported; implementations that do not support an Extended feature may silently ignore it. Verify that your implementation supports these features before deploying CloudBees CI on modern cloud platforms.

Table 1. Gateway API feature requirements
Feature Required Purpose

Conditional

Redirects the root path to the operations center context path (for example, / to /cjoc/). Only needed for path-based routing, not subdomain-based routing.

Conditional

Provides cookie-based sticky sessions for High Availability (HA) and Horizontal Scalability (HS) controllers. Not needed if you do not use HA/HS controllers.

Recommended

Redirects HTTP to HTTPS. Customer-managed; not created by CloudBees CI on modern cloud platforms.

Conditional

Required for external WebSocket-based agents connecting through the Gateway.

Use the Gateway API implementation wizard or the implementations page to check which features your implementation supports. Focus on the GATEWAY-HTTP conformance profile. CloudBees CI on modern cloud platforms does not require the GATEWAY-TLS, GATEWAY-GRPC, MESH-HTTP, or MESH-GRPC profiles.

Core features

All Core features are guaranteed by GATEWAY-HTTP conformance; you do not need to verify them individually. This section describes how CloudBees CI on modern cloud platforms uses Core features.

HTTPRoute

CloudBees CI on modern cloud platforms creates HTTPRoute resources to route traffic to the operations center, managed controllers, and infrastructure services (for example, CasC retriever, CasC bundle service, hibernation monitor, and SSO relay). The following HTTPRoute capabilities are used:

  • parentRefs: Each HTTPRoute references the customer’s Gateway resource by name and namespace. The optional sectionName field targets a specific Gateway listener.

  • Hostname matching: HTTPRoute resources specify hostnames to match incoming requests to the correct service.

  • Path matching: HTTPRoute resources use PathPrefix and Exact path types to route requests.

  • Backend references: HTTPRoute resources reference Kubernetes Service resources as backends.

Gateway with cross-namespace routing

Cross-namespace routing is a Core feature, but it requires explicit configuration on your Gateway resource:

  • Cross-namespace routing: allowedRoutes.namespaces.from must be set to Selector (or All for development environments). CloudBees CI on modern cloud platforms deploys HTTPRoute resources in application namespaces that must attach to a Gateway in an infrastructure namespace. Without cross-namespace routing, HTTPRoute resources created by CloudBees CI on modern cloud platforms fail to attach to the Gateway.

  • Namespace label selector: When using Selector, namespaces containing operations center or managed controller services must have the matching label (for example, cloudbees.com/gateway-routes: enabled).

For detailed Gateway verification steps, refer to Verify Gateway resource.

Extended features

Extended features are portable across implementations that support them but are not universally available. Verify that your Gateway API implementation supports these features before deploying CloudBees CI on modern cloud platforms.

HTTPRoute Path Redirect (path-based routing only)

The HTTPRoute Path Redirect (HTTPRoutePathRedirect) enables the RequestRedirect filter with path replacement. When using path-based routing, CloudBees CI on modern cloud platforms creates an HTTPRoute rule that redirects the root path (/) to the operations center context path (for example, /cjoc/) with an HTTP 301 status code. This redirect is not needed for subdomain-based routing, where each service has its own hostname.

Most implementations that achieve GATEWAY-HTTP conformance support this feature.

Session persistence (HA/HS controllers only)

CloudBees CI on modern cloud platforms uses the sessionPersistence field on HTTPRoute rules (GEP-1619) to provide cookie-based sticky sessions for HA and HS controllers. When a controller is configured for replication, CloudBees CI on modern cloud platforms automatically adds session persistence to its HTTPRoute.

This feature requires:

  • Experimental channel CustomResourceDefinitions (CRDs): The sessionPersistence field is only available when Gateway API experimental channel CRDs are installed. Refer to Verify experimental channel CRDs.

  • Implementation support: Not all Gateway API implementations support sessionPersistence. Implementations that do not support it silently ignore the field, which means sticky sessions are not enforced and HA controllers may not function correctly.

For the current status of sessionPersistence support across implementations tested by CloudBees, refer to session persistence implementation support.

HTTPRoute Scheme Redirect

The HTTPRoute Scheme Redirect (HTTPRouteSchemeRedirect) enables the RequestRedirect filter with scheme replacement. CloudBees CI on modern cloud platforms does not manage HTTP-to-HTTPS redirects. CloudBees recommends configuring an HTTPRoute with a RequestRedirect filter that changes the scheme from http to https to prevent users from accessing CloudBees CI on modern cloud platforms over unencrypted HTTP.

For an example configuration, refer to Recommended Gateway-level routing configuration.

HTTPRoute Backend Protocol WebSocket (external agents only)

The HTTPRoute Backend Protocol WebSocket (HTTPRouteBackendProtocolWebSocket) enables WebSocket protocol support for backend connections. CloudBees CI on modern cloud platforms requires this feature when external WebSocket-based agents connect through the Gateway.

Provider-specific considerations

Some Gateway API implementations require additional configuration beyond the standard Gateway API specification. Provider-specific requirements identified by CloudBees are listed below.

Table 2. Provider-specific Gateway API considerations
Implementation Considerations

Istio

Does not support sessionPersistence (GEP-1619). Requires an Istio DestinationRule with consistentHash for HA/HS controllers. Refer to Configure sticky sessions with Istio.

Google Kubernetes Engine (GKE) Gateway Controller

Does not support sessionPersistence (GEP-1619). Requires vendor-specific configuration for sticky sessions. May require additional health check configuration for backend services.

Azure Kubernetes Service (AKS) Application Gateway for Containers

Does not support sessionPersistence (GEP-1619). Requires vendor-specific configuration for sticky sessions.

Traefik

Does not support sessionPersistence (GEP-1619). No vendor-specific workaround is currently available. Refer to BEE-71301 for tracking.

This table is not exhaustive. If your Gateway API implementation requires additional configuration, refer to your implementation’s documentation or contact CloudBees Support.