apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: servicegroups.tkc.a10networks.com spec: group: tkc.a10networks.com scope: Namespaced names: plural: servicegroups singular: servicegroup kind: ServiceGroup shortNames: - a10sg versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: metadata: type: object properties: name: type: string spec: type: object properties: name: type: string minLength: 1 maxLength: 127 description: "Specify the service-group name" service: type: string description: "Specify k8s service that bind to the service-group" protocol: type: string enum: - tcp - udp default: "tcp" description: "Specify the service-group protocol" healthCheck: type: string minLength: 1 maxLength: 63 description: "Specify the health monitor for the service-group" healthCheckDisable: type: integer minimum: 0 maximum: 1 default: 0 description: "Disable health monitor for the service-group" healthCheckSrvPortDisable: type: integer minimum: 0 maximum: 1 default: 0 description: Enable/Disable Health Check for SLB Server port loadBalanceMethod: type: string enum: - dst-ip-hash - dst-ip-only-hash - fastest-response - least-request - src-ip-hash - src-ip-only-hash - weighted-rr - service-weighted-rr - round-robin - round-robin-strict - odd-even-hash - service-least-connection - least-connection - weighted-least-connection - service-weighted-least-connection default: "round-robin" description: "Specify the loadbalance method for the service-group" serverHealthCheck: type: string minLength: 1 maxLength: 63 description: "Specify the health monitor for the servers in this service-group" templateServer: type: string minLength: 1 maxLength: 127 description: "Specify Template SLB Server" status: type: string default: "NoController" pseudoRoundRobin: type: integer minimum: 0 maximum: 1 default: 0 description: "Select the oldest node for sub-select" resetOnServerSelectionFail: type: integer minimum: 0 maximum: 1 default: 0 description: "Send reset to client if server selection fails" healthCheckFollowPort: type: integer minimum: 1 maximum: 65534 description: "Specify which port to follow for health status (Port Number)" portHealthCheck: type: string minLength: 1 maxLength: 63 description: "Specify the health monitor for the server port" templatePort: type: string minLength: 1 maxLength: 127 description: "Specify TemplatePort" priorityAffinity: description: "Priority affinity. Persist to the same priority if possible." type: boolean priorities: type: array items: type: object properties: priority: description: "Priority option. Define different action for each priority node. (Priority in the Group)" type: integer minLength: 1 maxLength: 16 priorityAction: description: "‘drop’: Drop request when all priority nodes fail; ‘drop-if-exceed-limit’: Drop request when connection over limit; ‘proceed’: Proceed to next priority when all priority nodes fail(default); ‘reset’: Send client reset when all priority nodes fail; ‘reset-if-exceed-limit’: Send client reset when connection over limit;" type: string enum: - drop - drop-if-exceed-limit - proceed - reset - reset-if-exceed-limit required: - name - service additionalPrinterColumns: - name: name type: string description: The service-group Name jsonPath: .spec.name - name: status type: string jsonPath: .spec.status - name: service type: string jsonPath: .spec.service - name: protocol type: string jsonPath: .spec.protocol - name: method type: string jsonPath: .spec.loadBalanceMethod