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>
63 lines
1.8 KiB
YAML
63 lines
1.8 KiB
YAML
{{- if .Values.ingress.enabled -}}
|
|
{{- $fullName := include "gitea.fullname" . -}}
|
|
{{- $httpPort := .Values.service.http.port -}}
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: {{ $fullName }}
|
|
namespace: {{ .Values.namespace | default .Release.Namespace }}
|
|
labels:
|
|
{{- include "gitea.labels" . | nindent 4 }}
|
|
annotations:
|
|
{{- range $key, $value := .Values.ingress.annotations }}
|
|
{{ $key }}: {{ $value | quote }}
|
|
{{- end }}
|
|
spec:
|
|
ingressClassName: {{ tpl .Values.ingress.className . }}
|
|
{{- if .Values.ingress.tls }}
|
|
tls:
|
|
{{- range .Values.ingress.tls }}
|
|
- hosts:
|
|
{{- range .hosts }}
|
|
- {{ tpl . $ | quote }}
|
|
{{- end }}
|
|
secretName: {{ .secretName }}
|
|
{{- end }}
|
|
{{- end }}
|
|
rules:
|
|
{{- range .Values.ingress.hosts }}
|
|
- host: {{ tpl .host $ | quote }}
|
|
http:
|
|
paths:
|
|
{{- if .paths }}
|
|
{{- range .paths }}
|
|
{{- if kindIs "string" . }}
|
|
- path: {{ . }}
|
|
pathType: {{ default "Prefix" $.Values.ingress.pathType }}
|
|
backend:
|
|
service:
|
|
name: {{ include "gitea.service.http.name" $ }}
|
|
port:
|
|
number: {{ $httpPort }}
|
|
{{- else }}
|
|
- path: {{ .path | default "/" }}
|
|
pathType: {{ .pathType | default "Prefix" }}
|
|
backend:
|
|
service:
|
|
name: {{ include "gitea.service.http.name" $ }}
|
|
port:
|
|
number: {{ $httpPort }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- else }}
|
|
- path: "/"
|
|
pathType: "Prefix"
|
|
backend:
|
|
service:
|
|
name: {{ include "gitea.service.http.name" $ }}
|
|
port:
|
|
number: {{ $httpPort }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|