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

667 lines
30 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: backends.gateway.kgateway.dev
spec:
group: gateway.kgateway.dev
names:
categories:
- kgateway
kind: Backend
listKind: BackendList
plural: backends
singular: backend
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.type
name: Type
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
ai:
maxProperties: 1
minProperties: 1
properties:
llm:
properties:
authHeaderOverride:
properties:
headerName:
type: string
prefix:
type: string
type: object
hostOverride:
properties:
host:
minLength: 1
type: string
insecureSkipVerify:
type: boolean
port:
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- host
- port
type: object
pathOverride:
minProperties: 1
properties:
fullPath:
type: string
required:
- fullPath
type: object
provider:
maxProperties: 1
minProperties: 1
properties:
anthropic:
properties:
apiVersion:
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
model:
type: string
required:
- authToken
type: object
azureopenai:
properties:
apiVersion:
minLength: 1
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
deploymentName:
minLength: 1
type: string
endpoint:
minLength: 1
type: string
required:
- apiVersion
- authToken
- deploymentName
- endpoint
type: object
gemini:
properties:
apiVersion:
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
model:
type: string
required:
- apiVersion
- authToken
- model
type: object
openai:
properties:
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
model:
type: string
required:
- authToken
type: object
vertexai:
properties:
apiVersion:
minLength: 1
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
location:
minLength: 1
type: string
model:
minLength: 1
type: string
modelPath:
type: string
projectId:
minLength: 1
type: string
publisher:
enum:
- GOOGLE
type: string
required:
- apiVersion
- authToken
- location
- model
- projectId
- publisher
type: object
type: object
required:
- provider
type: object
multipool:
properties:
priorities:
items:
properties:
pool:
items:
properties:
authHeaderOverride:
properties:
headerName:
type: string
prefix:
type: string
type: object
hostOverride:
properties:
host:
minLength: 1
type: string
insecureSkipVerify:
type: boolean
port:
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- host
- port
type: object
pathOverride:
minProperties: 1
properties:
fullPath:
type: string
required:
- fullPath
type: object
provider:
maxProperties: 1
minProperties: 1
properties:
anthropic:
properties:
apiVersion:
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
model:
type: string
required:
- authToken
type: object
azureopenai:
properties:
apiVersion:
minLength: 1
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
deploymentName:
minLength: 1
type: string
endpoint:
minLength: 1
type: string
required:
- apiVersion
- authToken
- deploymentName
- endpoint
type: object
gemini:
properties:
apiVersion:
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
model:
type: string
required:
- apiVersion
- authToken
- model
type: object
openai:
properties:
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
model:
type: string
required:
- authToken
type: object
vertexai:
properties:
apiVersion:
minLength: 1
type: string
authToken:
properties:
inline:
type: string
kind:
enum:
- Inline
- SecretRef
- Passthrough
type: string
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
required:
- kind
type: object
location:
minLength: 1
type: string
model:
minLength: 1
type: string
modelPath:
type: string
projectId:
minLength: 1
type: string
publisher:
enum:
- GOOGLE
type: string
required:
- apiVersion
- authToken
- location
- model
- projectId
- publisher
type: object
type: object
required:
- provider
type: object
maxItems: 20
minItems: 1
type: array
type: object
maxItems: 20
minItems: 1
type: array
required:
- priorities
type: object
type: object
x-kubernetes-validations:
- message: There must one and only one LLM or MultiPool can be set
rule: (has(self.llm) && !has(self.multipool)) || (!has(self.llm) && has(self.multipool))
aws:
properties:
accountId:
maxLength: 12
minLength: 1
pattern: ^[0-9]{12}$
type: string
auth:
properties:
secretRef:
properties:
name:
default: ""
type: string
type: object
x-kubernetes-map-type: atomic
type:
enum:
- Secret
type: string
required:
- type
type: object
x-kubernetes-validations:
- message: secretRef must be nil if the type is not 'Secret'
rule: '!(has(self.secretRef) && self.type != ''Secret'')'
- message: secretRef must be specified when type is 'Secret'
rule: '!(!has(self.secretRef) && self.type == ''Secret'')'
lambda:
properties:
endpointURL:
maxLength: 2048
pattern: ^https?://[-a-zA-Z0-9@:%.+~#?&/=]+$
type: string
functionName:
pattern: ^[A-Za-z0-9-_]{1,140}$
type: string
invocationMode:
default: Sync
enum:
- Sync
- Async
type: string
payloadTransformMode:
default: Envoy
enum:
- None
- Envoy
type: string
qualifier:
pattern: ^(\$LATEST|[0-9]+|[A-Za-z0-9-_]{1,128})$
type: string
required:
- functionName
type: object
region:
default: us-east-1
maxLength: 63
minLength: 1
pattern: ^[a-z0-9-]+$
type: string
required:
- accountId
type: object
dynamicForwardProxy:
properties:
enableTls:
type: boolean
type: object
static:
properties:
appProtocol:
enum:
- http2
- grpc
- grpc-web
- kubernetes.io/h2c
- kubernetes.io/ws
type: string
hosts:
items:
properties:
host:
minLength: 1
type: string
insecureSkipVerify:
type: boolean
port:
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- host
- port
type: object
minItems: 1
type: array
required:
- hosts
type: object
type:
enum:
- AI
- AWS
- Static
- DynamicForwardProxy
type: string
required:
- type
type: object
x-kubernetes-validations:
- message: ai backend must be nil if the type is not 'ai'
rule: '!(has(self.ai) && self.type != ''AI'')'
- message: ai backend must be specified when type is 'ai'
rule: '!(!has(self.ai) && self.type == ''AI'')'
- message: aws backend must be nil if the type is not 'aws'
rule: '!(has(self.aws) && self.type != ''AWS'')'
- message: aws backend must be specified when type is 'aws'
rule: '!(!has(self.aws) && self.type == ''AWS'')'
- message: static backend must be nil if the type is not 'static'
rule: '!(has(self.static) && self.type != ''Static'')'
- message: static backend must be specified when type is 'static'
rule: '!(!has(self.static) && self.type == ''Static'')'
- message: dynamic forward proxy backend must be nil if the type is not 'dynamicForwardProxy'
rule: '!(has(self.dynamicForwardProxy) && self.type != ''DynamicForwardProxy'')'
- message: dynamic forward proxy backend must be specified when type is 'dynamicForwardProxy'
rule: '!(!has(self.dynamicForwardProxy) && self.type == ''DynamicForwardProxy'')'
status:
properties:
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
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
type: object
type: object
served: true
storage: true
subresources:
status: {}