Add full Gateway API support for exposing Gitea via HTTPRoute, TCPRoute, BackendTLSPolicy, and ClientSettingsPolicy resources. New templates: - `httpRoute.yaml` — renders an HTTPRoute with configurable parentRefs, hostnames, and rules (defaults to PathPrefix `/`) - `tcpRoute.yaml` — renders a TCPRoute for SSH traffic - `backendTLSPolicy.yaml` — renders a BackendTLSPolicy for encrypted backend connections with required validation config - `clientSettingsPolicy.yaml` — renders an NGINX Gateway Fabric ClientSettingsPolicy to raise the request body size limit Infrastructure: - `gatewayAPI.enabled` global toggle gates all resources - Resources grouped under `gatewayAPI.core.*` and `gatewayAPI.nginx.*` - Helper templates extracted into dedicated `_*.tpl` files - Service name helpers (`gitea.service.http.name`, `gitea.service.ssh.name`) extracted into `_services.tpl`; service templates renamed to camelCase - `ROOT_URL`, `DOMAIN`, and `SSH_DOMAIN` auto-resolve from `httpRoute.hostnames[0]`; `httpRoute.tls` switches to `https` Documentation: - New `docs/gateway-api.md` with topology examples, BackendTLSPolicy setup, sectionName guidance, SSH considerations, and NGINX body size limit configuration - `.github/copilot-instructions.md` with project conventions - README parameter table auto-generated via `make readme` Tests: - Helm unit tests for all four new resource templates - Config tests for hostname/TLS resolution from Gateway API values Co-authored-by: Todd Marimon <toddmarimon@gmail.com>
119 lines
3.1 KiB
YAML
119 lines
3.1 KiB
YAML
suite: sshService / httpService template (Services configuration)
|
|
release:
|
|
name: gitea-unittests
|
|
namespace: testing
|
|
templates:
|
|
- templates/gitea/sshService.yaml
|
|
- templates/gitea/httpService.yaml
|
|
tests:
|
|
- it: supports adding custom labels to sshService
|
|
template: templates/gitea/sshService.yaml
|
|
set:
|
|
service:
|
|
ssh:
|
|
labels:
|
|
gitea/testkey: testvalue
|
|
asserts:
|
|
- equal:
|
|
path: metadata.labels["gitea/testkey"]
|
|
value: "testvalue"
|
|
|
|
- it: keeps existing labels (ssh)
|
|
template: templates/gitea/sshService.yaml
|
|
set:
|
|
service:
|
|
ssh:
|
|
labels: {}
|
|
asserts:
|
|
- exists:
|
|
path: metadata.labels["app"]
|
|
|
|
- it: supports adding custom labels to httpService
|
|
template: templates/gitea/httpService.yaml
|
|
set:
|
|
service:
|
|
http:
|
|
labels:
|
|
gitea/testkey: testvalue
|
|
asserts:
|
|
- equal:
|
|
path: metadata.labels["gitea/testkey"]
|
|
value: "testvalue"
|
|
|
|
- it: keeps existing labels (http)
|
|
template: templates/gitea/httpService.yaml
|
|
set:
|
|
service:
|
|
http:
|
|
labels: {}
|
|
asserts:
|
|
- exists:
|
|
path: metadata.labels["app"]
|
|
|
|
- it: render service.ssh.loadBalancerClass if set and type is LoadBalancer
|
|
template: templates/gitea/sshService.yaml
|
|
set:
|
|
service:
|
|
ssh:
|
|
loadBalancerClass: "example.com/class"
|
|
type: LoadBalancer
|
|
loadBalancerIP: "1.2.3.4"
|
|
loadBalancerSourceRanges:
|
|
- "1.2.3.4/32"
|
|
- "5.6.7.8/32"
|
|
asserts:
|
|
- equal:
|
|
path: spec.loadBalancerClass
|
|
value: "example.com/class"
|
|
- equal:
|
|
path: spec.loadBalancerIP
|
|
value: "1.2.3.4"
|
|
- equal:
|
|
path: spec.loadBalancerSourceRanges
|
|
value: ["1.2.3.4/32", "5.6.7.8/32"]
|
|
|
|
- it: does not render when loadbalancer properties are set but type is not loadBalancerClass
|
|
template: templates/gitea/httpService.yaml
|
|
set:
|
|
service:
|
|
http:
|
|
type: ClusterIP
|
|
loadBalancerClass: "example.com/class"
|
|
loadBalancerIP: "1.2.3.4"
|
|
loadBalancerSourceRanges:
|
|
- "1.2.3.4/32"
|
|
- "5.6.7.8/32"
|
|
asserts:
|
|
- notExists:
|
|
path: spec.loadBalancerClass
|
|
- notExists:
|
|
path: spec.loadBalancerIP
|
|
- notExists:
|
|
path: spec.loadBalancerSourceRanges
|
|
|
|
- it: does not render loadBalancerClass by default even when type is LoadBalancer
|
|
template: templates/gitea/httpService.yaml
|
|
set:
|
|
service:
|
|
http:
|
|
type: LoadBalancer
|
|
loadBalancerIP: "1.2.3.4"
|
|
asserts:
|
|
- notExists:
|
|
path: spec.loadBalancerClass
|
|
- equal:
|
|
path: spec.loadBalancerIP
|
|
value: "1.2.3.4"
|
|
|
|
- it: both ssh and http services exist
|
|
templates:
|
|
- templates/gitea/sshService.yaml
|
|
- templates/gitea/httpService.yaml
|
|
asserts:
|
|
- matchRegex:
|
|
path: metadata.name
|
|
pattern: "^gitea-unittests-(?:ssh|http)$"
|
|
- matchRegex:
|
|
path: spec.ports[0].name
|
|
pattern: "^(?:ssh|http)$"
|