# Copyright (C) 2015 The Gravitee team (http://gravitee.io) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.18.0 gravitee.io/extends: gateway.networking.k8s.io gravitee.io/operator.version: 4.12.0-rc name: kafkaroutes.gravitee.io spec: group: gravitee.io names: kind: KafkaRoute listKind: KafkaRouteList plural: kafkaroutes singular: kafkaroute scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: properties: apiVersion: description: APIVersion defines the versioned schema of this representation of an object. type: string kind: description: Kind is a string value representing the REST resource this object represents. type: string metadata: type: object spec: properties: backendRefs: description: BackendRefs defines the backend(s) where matching requests should be sent. items: description: >- This currently wraps the code gateway API BackendObjectReference type, leaving room for e.g. properties: group: default: "" description: Group is the group of the referent. For example, "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: Service description: >- Kind is the Kubernetes resource kind of the referent. For example "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: description: >- Namespace is the namespace of the backend. When unspecified, the local namespace is inferred. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: description: Port specifies the destination port number to use for this resource. format: int32 maximum: 65535 minimum: 1 type: integer required: - name type: object x-kubernetes-validations: - message: Must have port for Service reference rule: "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" maxItems: 16 minItems: 1 type: array filters: description: Filters define the filters that are applied to Kafka trafic matching this route. items: properties: acl: description: ACL defines a schema for a filter that enforce access controls on Kafka trafic. properties: rules: description: >- Rules define a set of rules that can be use to group a set of resources together with access... items: properties: options: additionalProperties: description: AnnotationValue is the value of an annotation in Gateway API. maxLength: 4096 minLength: 0 type: string description: >- Options allow to specify implementation specific behaviours for a set of rules. maxProperties: 16 type: object resources: description: >- A resource group together a type of matched resource and a set of operations to be granted by the... items: properties: match: description: Match describes how to select the resource that will be subject to the access control. properties: type: description: >- Valid PathMatchType values, along with their support levels, are: * "Exact" Resources whose name... enum: - Exact - Prefix - RegularExpression type: string value: description: Value of the resource to match against. type: string required: - type - value type: object operations: description: >- Operations specifies the set of operations / verbs to allow for the resource under access control. items: enum: - Create - Read - Write - Delete - Alter - AlterConfigs - Describe - DescribeConfigs - ClusterAction type: string type: array type: enum: - Topic - Cluster - Group - TransactionalIdentifier type: string required: - operations - type type: object minItems: 1 type: array required: - resources type: object maxItems: 16 minItems: 1 type: array required: - rules type: object extensionRef: description: >- LocalObjectReference identifies an API object within the namespace of the referrer. properties: group: description: Group is the group of the referent. For example, "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: description: Kind is kind of the referent. For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string required: - group - kind - name type: object type: description: Type identifies the type of filter to apply. enum: - ACL - ExtensionRef type: string required: - type type: object maxItems: 16 type: array hostname: description: Hostname is used to uniquely route clients to this API. 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 options: additionalProperties: description: AnnotationValue is the value of an annotation in Gateway API. maxLength: 4096 minLength: 0 type: string description: >- Options are a list of key/value pairs to enable extended configuration specific to an maxProperties: 16 type: object parentRefs: description: >- ParentRefs references the resources (usually Gateways) that a Route wants to be attached to. items: description: >- ParentReference identifies an API object (usually a Gateway) that can be considered a parent of... properties: group: default: gateway.networking.k8s.io description: >- Group is the group of the referent. When unspecified, "gateway.networking.k8s.io" is inferred. 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 description: Kind is kind of the referent. maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: description: |- Name is the name of the referent. Support: Core maxLength: 253 minLength: 1 type: string namespace: description: Namespace is the namespace of the referent. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: description: Port is the network port this Route targets. format: int32 maximum: 65535 minimum: 1 type: integer sectionName: description: SectionName is the name of a section within the target resource. 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 maxItems: 32 type: array x-kubernetes-list-type: atomic useDefaultGateways: description: >- UseDefaultGateways indicates the default Gateway scope to use for this Route. enum: - All - None type: string type: object status: properties: parents: description: >- Parents is a list of parent resources (usually Gateways) that are associated with the route, and... items: description: >- RouteParentStatus describes the status of a route with respect to an associated Parent. properties: conditions: description: Conditions describes the status of the route with respect to the Gateway. items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. format: date-time type: string message: description: message is a human readable message indicating details about the transition. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. 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: description: >- ControllerName is a domain/path string that indicates the name of the controller that wrote this... 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 parentRef: description: >- ParentRef corresponds with a ParentRef in the spec that this RouteParentStatus struct describes the... properties: group: default: gateway.networking.k8s.io description: >- Group is the group of the referent. When unspecified, "gateway.networking.k8s.io" is inferred. 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 description: Kind is kind of the referent. maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: description: |- Name is the name of the referent. Support: Core maxLength: 253 minLength: 1 type: string namespace: description: Namespace is the namespace of the referent. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: description: Port is the network port this Route targets. format: int32 maximum: 65535 minimum: 1 type: integer sectionName: description: SectionName is the name of a section within the target resource. 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 required: - conditions - controllerName - parentRef type: object maxItems: 32 type: array x-kubernetes-list-type: atomic required: - parents type: object type: object served: true storage: true subresources: status: {}