clusterforge/kgateway-crds/CustomResourceDefinition_backendconfigpolicies.gateway.kgateway.dev.yaml
2025-10-06 09:34:03 +00:00

387 lines
16 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
labels:
app: kgateway
app.kubernetes.io/name: kgateway
name: backendconfigpolicies.gateway.kgateway.dev
spec:
group: gateway.kgateway.dev
names:
categories:
- kgateway
kind: BackendConfigPolicy
listKind: BackendConfigPolicyList
plural: backendconfigpolicies
singular: backendconfigpolicy
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
commonHttpProtocolOptions:
properties:
idleTimeout:
type: string
x-kubernetes-validations:
- message: idleTimeout must be a valid duration string
rule: duration(self) >= duration('0s')
maxHeadersCount:
type: integer
maxRequestsPerConnection:
type: integer
maxStreamDuration:
type: string
x-kubernetes-validations:
- message: maxStreamDuration must be a valid duration string
rule: duration(self) >= duration('0s')
type: object
x-kubernetes-validations:
- message: idleTimeout must be a valid duration string (e.g. "1s", "500ms")
rule: (!has(self.idleTimeout) || (has(self.idleTimeout) && self.idleTimeout.matches('^([0-9]{1,5}(h|m|s|ms)){1,4}$')))
- message: maxStreamDuration must be a valid duration string (e.g. "1s", "500ms")
rule: (!has(self.maxStreamDuration) || (has(self.maxStreamDuration) && self.maxStreamDuration.matches('^([0-9]{1,5}(h|m|s|ms)){1,4}$')))
connectTimeout:
type: string
x-kubernetes-validations:
- message: connectTimeout must be a valid duration string
rule: duration(self) >= duration('0s')
http1ProtocolOptions:
properties:
enableTrailers:
type: boolean
headerFormat:
enum:
- ProperCaseHeaderKeyFormat
- PreserveCaseHeaderKeyFormat
type: string
overrideStreamErrorOnInvalidHttpMessage:
type: boolean
type: object
loadBalancer:
properties:
closeConnectionsOnHostSetChange:
type: boolean
healthyPanicThreshold:
format: int32
maximum: 100
minimum: 0
type: integer
leastRequest:
properties:
choiceCount:
default: 2
format: int32
type: integer
slowStart:
properties:
aggression:
type: string
x-kubernetes-validations:
- message: Aggression, if specified, must be a string representing a number greater than 0.0
rule: self == "" || (self.matches('^-?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)$') && double(self) > 0.0)
minWeightPercent:
format: int32
type: integer
window:
type: string
x-kubernetes-validations:
- message: window must be a valid duration string
rule: duration(self) >= duration('0s')
type: object
type: object
localityType:
enum:
- WeightedLb
type: string
maglev:
type: object
random:
type: object
ringHash:
properties:
maximumRingSize:
format: int64
type: integer
minimumRingSize:
format: int64
type: integer
type: object
roundRobin:
properties:
slowStart:
properties:
aggression:
type: string
x-kubernetes-validations:
- message: Aggression, if specified, must be a string representing a number greater than 0.0
rule: self == "" || (self.matches('^-?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)$') && double(self) > 0.0)
minWeightPercent:
format: int32
type: integer
window:
type: string
x-kubernetes-validations:
- message: window must be a valid duration string
rule: duration(self) >= duration('0s')
type: object
type: object
updateMergeWindow:
type: string
x-kubernetes-validations:
- message: updateMergeWindow must be a valid duration string
rule: duration(self) >= duration('0s')
useHostnameForHashing:
default: false
type: boolean
type: object
x-kubernetes-validations:
- message: only one of leastRequest, roundRobin, ringHash, maglev, or random can be set
rule: '[has(self.leastRequest), has(self.roundRobin), has(self.ringHash), has(self.maglev), has(self.random)].filter(x, x).size() <= 1'
perConnectionBufferLimitBytes:
type: integer
targetRefs:
items:
properties:
group:
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
maxLength: 253
minLength: 1
type: string
required:
- group
- kind
- name
type: object
maxItems: 16
minItems: 1
type: array
targetSelectors:
items:
properties:
group:
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
matchLabels:
additionalProperties:
type: string
type: object
required:
- group
- kind
- matchLabels
type: object
type: array
tcpKeepalive:
properties:
keepAliveInterval:
type: string
x-kubernetes-validations:
- message: keepAliveInterval must be a valid duration string
rule: duration(self) >= duration('0s')
- message: keepAliveInterval must be at least 1 second
rule: duration(self) >= duration('1s')
keepAliveProbes:
type: integer
keepAliveTime:
type: string
x-kubernetes-validations:
- message: keepAliveTime must be a valid duration string
rule: duration(self) >= duration('0s')
- message: keepAliveTime must be at least 1 second
rule: duration(self) >= duration('1s')
type: object
tls:
properties:
allowRenegotiation:
type: boolean
alpnProtocols:
items:
type: string
type: array
oneWayTLS:
type: boolean
parameters:
properties:
cipherSuites:
items:
type: string
type: array
ecdhCurves:
items:
type: string
type: array
tlsMaxVersion:
enum:
- AUTO
- "1.0"
- "1.1"
- "1.2"
- "1.3"
type: string
tlsMinVersion:
enum:
- AUTO
- "1.0"
- "1.1"
- "1.2"
- "1.3"
type: string
type: object
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
sni:
type: string
tlsFiles:
properties:
rootCA:
type: string
tlsCertificate:
type: string
tlsKey:
type: string
type: object
x-kubernetes-validations:
- message: At least one of tlsCertificate, tlsKey, or rootCA must be set in TLSFiles
rule: has(self.tlsCertificate) || has(self.tlsKey) || has(self.rootCA)
verifySubjectAltName:
items:
type: string
type: array
type: object
x-kubernetes-validations:
- message: Exactly one of secretRef or tlsFiles must be set in TLS
rule: has(self.secretRef) != has(self.tlsFiles)
type: object
status:
properties:
ancestors:
items:
properties:
ancestorRef:
properties:
group:
default: gateway.networking.k8s.io
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
default: Gateway
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
maxLength: 253
minLength: 1
type: string
namespace:
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
port:
format: int32
maximum: 65535
minimum: 1
type: integer
sectionName:
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
required:
- name
type: object
conditions:
items:
properties:
lastTransitionTime:
format: date-time
type: string
message:
maxLength: 32768
type: string
observedGeneration:
format: int64
minimum: 0
type: integer
reason:
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
enum:
- "True"
- "False"
- Unknown
type: string
type:
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
maxItems: 8
minItems: 1
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
controllerName:
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
type: string
required:
- ancestorRef
- controllerName
type: object
maxItems: 16
type: array
required:
- ancestors
type: object
type: object
served: true
storage: true
subresources:
status: {}