# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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: labels: apisix.apache.org/app: ingress-apisix name: apisixclusterconfigs.apisix.apache.org spec: group: apisix.apache.org names: kind: ApisixClusterConfig plural: apisixclusterconfigs shortNames: - acc singular: apisixclusterconfig preserveUnknownFields: false scope: Cluster versions: - name: v2 served: true storage: true subresources: status: {} schema: openAPIV3Schema: type: object properties: spec: type: object properties: admin: type: object required: - baseURL properties: baseURL: type: string pattern: "https?://[^:]+:(\\d+)" adminKey: type: string monitoring: type: object properties: prometheus: type: object properties: enable: type: boolean skywalking: type: object properties: enable: type: boolean sampleRatio: type: number minimum: 0.00001 maximum: 1 - name: v2beta3 schema: openAPIV3Schema: properties: spec: properties: admin: properties: adminKey: type: string baseURL: pattern: https?://[^:]+:(\d+) type: string required: - baseURL type: object monitoring: properties: prometheus: properties: enable: type: boolean type: object skywalking: properties: enable: type: boolean sampleRatio: maximum: 1 minimum: 1e-05 type: number type: object type: object type: object type: object served: true storage: false deprecated: true subresources: status: {} - name: v2alpha1 schema: openAPIV3Schema: properties: spec: properties: admin: properties: adminKey: type: string baseURL: pattern: https?://[^:]+:(\d+) type: string required: - baseURL type: object monitoring: properties: prometheus: properties: enable: type: boolean type: object skywalking: properties: enable: type: boolean sampleRatio: maximum: 1 minimum: 1e-05 type: number type: object type: object type: object type: object served: false storage: false deprecated: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: apisix.apache.org/app: ingress-apisix name: apisixconsumers.apisix.apache.org spec: group: apisix.apache.org names: kind: ApisixConsumer plural: apisixconsumers shortNames: - ac singular: apisixconsumer preserveUnknownFields: false scope: Namespaced versions: - name: v2 served: true storage: true subresources: status: {} schema: openAPIV3Schema: type: object properties: spec: type: object required: - authParameter properties: authParameter: type: object oneOf: - required: ["basicAuth"] - required: ["keyAuth"] - required: ["wolfRBAC"] - required: ["jwtAuth"] - required: ["hmacAuth"] properties: basicAuth: type: object oneOf: - required: ["value"] - required: ["secretRef"] properties: value: type: object properties: username: type: string minLength: 1 password: type: string minLength: 1 required: - username - password secretRef: type: object properties: name: type: string minLength: 1 required: - name keyAuth: type: object oneOf: - required: ["value"] - required: ["secretRef"] properties: value: type: object properties: key: type: string minLength: 1 required: - key secretRef: type: object properties: name: type: string minLength: 1 required: - name jwtAuth: type: object oneOf: - required: ["value"] - required: ["secretRef"] properties: value: type: object properties: key: type: string minLength: 1 secret: type: string public_key: type: string private_key: type: string algorithm: type: string exp: type: integer base64_secret: type: boolean required: - key secretRef: type: object properties: name: type: string minLength: 1 required: - name wolfRBAC: type: object oneOf: - required: ["value"] - required: ["secretRef"] properties: value: type: object properties: server: type: string appid: type: string header_prefix: type: string secretRef: type: object properties: name: type: string minLength: 1 required: - name hmacAuth: type: object oneOf: - required: ["value"] - required: ["secretRef"] properties: value: type: object properties: access_key: type: string secret_key: type: string algorithm: type: string clock_skew: type: integer signed_headers: type: array items: type: string keep_headers: type: boolean encode_uri_params: type: boolean validate_request_body: type: boolean max_req_body: type: integer required: - access_key - secret_key secretRef: type: object properties: name: type: string minLength: 1 required: - name - name: v2beta3 schema: openAPIV3Schema: properties: spec: properties: authParameter: oneOf: - required: - basicAuth - required: - keyAuth properties: basicAuth: oneOf: - required: - value - required: - secretRef properties: secretRef: properties: name: minLength: 1 type: string required: - name type: object value: properties: password: minLength: 1 type: string username: minLength: 1 type: string required: - username - password type: object type: object keyAuth: oneOf: - required: - value - required: - secretRef properties: secretRef: properties: name: minLength: 1 type: string required: - name type: object value: properties: key: minLength: 1 type: string required: - key type: object type: object type: object required: - authParameter type: object type: object served: true storage: false deprecated: true subresources: status: {} - name: v2alpha1 schema: openAPIV3Schema: properties: spec: properties: authParameter: oneOf: - required: - basicAuth - required: - keyAuth properties: basicAuth: oneOf: - required: - value - required: - secretRef properties: secretRef: properties: name: minLength: 1 type: string required: - name type: object value: properties: password: minLength: 1 type: string username: minLength: 1 type: string required: - username - password type: object type: object keyAuth: oneOf: - required: - value - required: - secretRef properties: secretRef: properties: name: minLength: 1 type: string required: - name type: object value: properties: key: minLength: 1 type: string required: - key type: object type: object type: object required: - authParameter type: object type: object served: false storage: false deprecated: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: apisix.apache.org/app: ingress-apisix name: apisixpluginconfigs.apisix.apache.org spec: group: apisix.apache.org names: kind: ApisixPluginConfig plural: apisixpluginconfigs shortNames: - apc singular: apisixpluginconfig scope: Namespaced versions: - name: v2 served: true storage: true subresources: status: {} additionalPrinterColumns: - jsonPath: .metadata.creationTimestamp name: Age type: date priority: 0 schema: openAPIV3Schema: type: object properties: spec: type: object required: - plugins properties: plugins: type: array items: type: object properties: name: type: string minLength: 1 enable: type: boolean config: type: object x-kubernetes-preserve-unknown-fields: true # we have to enable it since plugin config required: - name - enable status: type: object properties: conditions: type: array items: type: object properties: "type": type: string reason: type: string status: type: string message: type: string observedGeneration: type: integer - name: v2beta3 additionalPrinterColumns: - jsonPath: .metadata.creationTimestamp name: Age priority: 0 type: date schema: openAPIV3Schema: properties: spec: properties: plugins: items: properties: config: type: object x-kubernetes-preserve-unknown-fields: true enable: type: boolean name: minLength: 1 type: string type: object required: - name - enable type: array required: - plugins type: object status: properties: conditions: items: properties: message: type: string observedGeneration: type: integer reason: type: string status: type: string type: type: string type: object type: array type: object type: object served: true storage: false deprecated: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: apisix.apache.org/app: ingress-apisix name: apisixroutes.apisix.apache.org spec: group: apisix.apache.org names: kind: ApisixRoute plural: apisixroutes shortNames: - ar singular: apisixroute scope: Namespaced versions: - name: v2beta1 additionalPrinterColumns: - jsonPath: .spec.http[].match.hosts name: Hosts priority: 0 type: string - jsonPath: .spec.http[].match.paths name: URIs priority: 0 type: string - jsonPath: .spec.http[].backend.serviceName name: Target Service(HTTP) priority: 1 type: string - jsonPath: .spec.tcp[].match.ingressPort name: Ingress Server Port(TCP) priority: 1 type: integer - jsonPath: .spec.tcp[].match.backend.serviceName name: Target Service(TCP) priority: 1 type: string - jsonPath: .metadata.creationTimestamp name: Age priority: 0 type: date schema: openAPIV3Schema: properties: spec: anyOf: - required: - http - required: - tcp - required: - stream properties: http: items: oneOf: - required: - name - match - backend - required: - name - match - backends properties: authentication: properties: enable: type: boolean keyAuth: properties: header: type: string type: object type: enum: - basicAuth - keyAuth type: string required: - enable type: object backend: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string weight: minimum: 0 type: integer required: - serviceName - servicePort type: object backends: items: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string weight: minimum: 0 type: integer type: object minItems: 1 required: - serviceName - servicePort type: array match: properties: exprs: items: oneOf: - required: - subject - op - value - required: - subject - op - set properties: op: enum: - Equal - NotEqual - GreaterThan - LessThan - In - NotIn - RegexMatch - RegexNotMatch - RegexMatchCaseInsensitive - RegexNotMatchCaseInsensitive type: string set: items: type: string type: array subject: properties: name: minLength: 1 type: string scope: enum: - Cookie - Header - Path - Query type: string required: - scope type: object value: type: string type: object minItems: 1 type: array hosts: items: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string minItems: 1 type: array methods: items: enum: - CONNECT - DELETE - GET - HEAD - OPTIONS - PATCH - POST - PUT - TRACE type: string minItems: 1 type: array paths: items: pattern: ^/[a-zA-Z0-9\-._~%!$&'()+,;=:@/]*\*?$ type: string minItems: 1 type: array remoteAddrs: items: type: string minItems: 1 type: array required: - paths type: object name: minLength: 1 type: string plugins: items: properties: config: type: object x-kubernetes-preserve-unknown-fields: true enable: type: boolean name: minLength: 1 type: string type: object required: - name - enable type: array priority: type: integer timeout: properties: connect: type: string read: type: string send: type: string type: object websocket: type: boolean type: object minItems: 1 type: array stream: items: properties: backend: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string required: - serviceName - servicePort type: object match: properties: ingressPort: maximum: 65535 minimum: 1 type: integer required: - ingressPort type: object name: minLength: 1 type: string protocol: enum: - TCP - UDP type: string required: - name - match - backend - protocol type: object minItems: 1 type: array tcp: items: properties: backend: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string required: - serviceName - servicePort type: object match: properties: ingressPort: maximum: 65535 minimum: 1 type: integer required: - ingressPort type: object name: minLength: 1 type: string required: - name - match - backend type: object minItems: 1 type: array type: object status: properties: conditions: items: properties: message: type: string observedGeneration: type: integer reason: type: string status: type: string type: type: string type: object type: array type: object type: object served: false storage: false deprecated: true subresources: status: {} - name: v2beta2 additionalPrinterColumns: - jsonPath: .spec.http[].match.hosts name: Hosts priority: 0 type: string - jsonPath: .spec.http[].match.paths name: URIs priority: 0 type: string - jsonPath: .spec.http[].backends[].serviceName name: Target Service(HTTP) priority: 1 type: string - jsonPath: .spec.tcp[].match.ingressPort name: Ingress Server Port(TCP) priority: 1 type: integer - jsonPath: .spec.tcp[].match.backend.serviceName name: Target Service(TCP) priority: 1 type: string - jsonPath: .metadata.creationTimestamp name: Age priority: 0 type: date schema: openAPIV3Schema: properties: spec: anyOf: - required: - http - required: - stream properties: http: items: properties: authentication: properties: enable: type: boolean keyAuth: properties: header: type: string type: object type: enum: - basicAuth - keyAuth type: string required: - enable type: object backends: items: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string weight: minimum: 0 type: integer type: object minItems: 1 required: - serviceName - servicePort type: array match: properties: exprs: items: oneOf: - required: - subject - op - value - required: - subject - op - set properties: op: enum: - Equal - NotEqual - GreaterThan - LessThan - In - NotIn - RegexMatch - RegexNotMatch - RegexMatchCaseInsensitive - RegexNotMatchCaseInsensitive type: string set: items: type: string type: array subject: properties: name: minLength: 1 type: string scope: enum: - Cookie - Header - Path - Query type: string required: - scope type: object value: type: string type: object minItems: 1 type: array hosts: items: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string minItems: 1 type: array methods: items: enum: - CONNECT - DELETE - GET - HEAD - OPTIONS - PATCH - POST - PUT - TRACE type: string minItems: 1 type: array paths: items: pattern: ^/[a-zA-Z0-9\-._~%!$&'()+,;=:@/]*\*?$ type: string minItems: 1 type: array remoteAddrs: items: type: string minItems: 1 type: array required: - paths type: object name: minLength: 1 type: string plugins: items: properties: config: type: object x-kubernetes-preserve-unknown-fields: true enable: type: boolean name: minLength: 1 type: string type: object required: - name - enable type: array priority: type: integer timeout: properties: connect: type: string read: type: string send: type: string type: object websocket: type: boolean required: - name - match - backends type: object minItems: 1 type: array stream: items: properties: backend: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string required: - serviceName - servicePort type: object match: properties: ingressPort: maximum: 65535 minimum: 1 type: integer required: - ingressPort type: object name: minLength: 1 type: string protocol: enum: - TCP - UDP type: string required: - name - match - backend - protocol type: object minItems: 1 type: array type: object status: properties: conditions: items: properties: message: type: string observedGeneration: type: integer reason: type: string status: type: string type: type: string type: object type: array type: object type: object served: true storage: false deprecated: true subresources: status: {} - name: v2beta3 additionalPrinterColumns: - jsonPath: .spec.http[].match.hosts name: Hosts priority: 0 type: string - jsonPath: .spec.http[].match.paths name: URIs priority: 0 type: string - jsonPath: .spec.http[].backends[].serviceName name: Target Service(HTTP) priority: 1 type: string - jsonPath: .spec.tcp[].match.ingressPort name: Ingress Server Port(TCP) priority: 1 type: integer - jsonPath: .spec.tcp[].match.backend.serviceName name: Target Service(TCP) priority: 1 type: string - jsonPath: .metadata.creationTimestamp name: Age priority: 0 type: date schema: openAPIV3Schema: properties: spec: anyOf: - required: - http - required: - stream properties: http: items: properties: authentication: properties: enable: type: boolean keyAuth: properties: header: type: string type: object type: enum: - basicAuth - keyAuth type: string required: - enable type: object backends: items: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string weight: minimum: 0 type: integer type: object minItems: 1 required: - serviceName - servicePort type: array match: properties: exprs: items: oneOf: - required: - subject - op - value - required: - subject - op - set properties: op: enum: - Equal - NotEqual - GreaterThan - LessThan - In - NotIn - RegexMatch - RegexNotMatch - RegexMatchCaseInsensitive - RegexNotMatchCaseInsensitive type: string set: items: type: string type: array subject: properties: name: minLength: 1 type: string scope: enum: - Cookie - Header - Path - Query type: string required: - scope type: object value: type: string type: object minItems: 1 type: array hosts: items: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string minItems: 1 type: array methods: items: enum: - CONNECT - DELETE - GET - HEAD - OPTIONS - PATCH - POST - PUT - TRACE type: string minItems: 1 type: array paths: items: pattern: ^/[a-zA-Z0-9\-._~%!$&'()+,;=:@/]*\*?$ type: string minItems: 1 type: array remoteAddrs: items: type: string minItems: 1 type: array required: - paths type: object name: minLength: 1 type: string plugin_config_name: minLength: 1 type: string plugins: items: properties: config: type: object x-kubernetes-preserve-unknown-fields: true enable: type: boolean name: minLength: 1 type: string type: object required: - name - enable type: array priority: type: integer timeout: properties: connect: type: string read: type: string send: type: string type: object websocket: type: boolean required: - name - match - backends type: object minItems: 1 type: array stream: items: properties: backend: properties: resolveGranularity: enum: - endpoint - service type: string serviceName: minLength: 1 type: string servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true subset: type: string required: - serviceName - servicePort type: object match: properties: ingressPort: maximum: 65535 minimum: 1 type: integer required: - ingressPort type: object name: minLength: 1 type: string protocol: enum: - TCP - UDP type: string required: - name - match - backend - protocol type: object minItems: 1 type: array type: object status: properties: conditions: items: properties: message: type: string observedGeneration: type: integer reason: type: string status: type: string type: type: string type: object type: array type: object type: object served: true storage: false deprecated: true subresources: status: {} - name: v2 served: true storage: true subresources: status: {} additionalPrinterColumns: - jsonPath: .spec.http[].match.hosts name: Hosts type: string priority: 0 - jsonPath: .spec.http[].match.paths name: URIs type: string priority: 0 - jsonPath: .spec.http[].backends[].serviceName name: Target Service(HTTP) type: string priority: 1 - jsonPath: .spec.tcp[].match.ingressPort name: Ingress Server Port(TCP) type: integer priority: 1 - jsonPath: .spec.tcp[].match.backend.serviceName name: Target Service(TCP) type: string priority: 1 - jsonPath: .metadata.creationTimestamp name: Age type: date priority: 0 schema: openAPIV3Schema: type: object properties: spec: type: object anyOf: - required: ["http"] - required: ["stream"] properties: http: type: array minItems: 1 items: type: object required: ["name", "match", "backends"] properties: name: type: string minLength: 1 priority: type: integer timeout: type: object properties: connect: type: string send: type: string read: type: string match: type: object required: - paths properties: paths: type: array minItems: 1 items: type: string pattern: "^/[a-zA-Z0-9\\-._~%!$&'()+,;=:@/]*\\*?$" hosts: type: array minItems: 1 items: type: string pattern: "^\\*?[0-9a-zA-Z-._]+$" methods: type: array minItems: 1 items: type: string enum: - "CONNECT" - "DELETE" - "GET" - "HEAD" - "OPTIONS" - "PATCH" - "POST" - "PUT" - "TRACE" remoteAddrs: type: array minItems: 1 items: type: string exprs: type: array minItems: 1 items: type: object properties: subject: type: object properties: scope: type: string enum: - "Cookie" - "Header" - "Path" - "Query" name: type: string minLength: 1 required: - scope op: type: string enum: - Equal - NotEqual - GreaterThan - LessThan - In - NotIn - RegexMatch - RegexNotMatch - RegexMatchCaseInsensitive - RegexNotMatchCaseInsensitive value: type: string set: type: array items: type: string oneOf: - required: ["subject", "op", "value"] - required: ["subject", "op", "set"] websocket: type: boolean plugin_config_name: type: string minLength: 1 backends: type: array minItems: 1 items: type: object properties: serviceName: type: string minLength: 1 servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true resolveGranularity: type: string enum: ["endpoint", "service"] weight: type: integer minimum: 0 subset: type: string required: - serviceName - servicePort plugins: type: array items: type: object properties: name: type: string minLength: 1 enable: type: boolean config: type: object x-kubernetes-preserve-unknown-fields: true # we have to enable it since plugin config required: - name - enable authentication: type: object properties: enable: type: boolean type: type: string enum: - "basicAuth" - "keyAuth" - "jwtAuth" - "wolfRBAC" - "hmacAuth" keyAuth: type: object properties: header: type: string jwtAuth: type: object properties: header: type: string query: type: string cookie: type: string required: - enable stream: type: array minItems: 1 items: type: object required: ["name", "match", "backend", "protocol"] properties: "protocol": type: string enum: ["TCP", "UDP"] name: type: string minLength: 1 match: type: object properties: ingressPort: type: integer minimum: 1 maximum: 65535 required: - ingressPort backend: type: object properties: serviceName: type: string minLength: 1 servicePort: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true resolveGranularity: type: string enum: ["endpoint", "service"] subset: type: string required: - serviceName - servicePort plugins: type: array items: type: object properties: name: type: string minLength: 1 enable: type: boolean config: type: object x-kubernetes-preserve-unknown-fields: true # we have to enable it since plugin config required: - name - enable status: type: object properties: conditions: type: array items: type: object properties: "type": type: string reason: type: string status: type: string message: type: string observedGeneration: type: integer --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: apisix.apache.org/app: ingress-apisix name: apisixtlses.apisix.apache.org spec: group: apisix.apache.org names: kind: ApisixTls plural: apisixtlses shortNames: - atls singular: apisixtls preserveUnknownFields: false scope: Namespaced versions: - name: v2 served: true storage: true subresources: status: {} additionalPrinterColumns: - jsonPath: .spec.hosts name: SNIs type: string - jsonPath: .spec.secret.name name: Secret Name type: string - jsonPath: .spec.secret.namespace name: Secret Namespace type: string - jsonPath: .metadata.creationTimestamp name: Age type: date schema: openAPIV3Schema: description: ApisixTls defines SSL resource in APISIX. type: object properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: ApisixTlsSpec is the specification of ApisixSSL. type: object required: - hosts - secret properties: client: description: ApisixMutualTlsClientConfig describes the mutual TLS CA and verify depth type: object properties: caSecret: description: ApisixSecret describes the Kubernetes Secret name and namespace. type: object required: - name - namespace properties: name: type: string minLength: 1 namespace: type: string minLength: 1 depth: type: integer hosts: type: array minItems: 1 items: type: string pattern: ^\*?[0-9a-zA-Z-.]+$ secret: description: ApisixSecret describes the Kubernetes Secret name and namespace. type: object required: - name - namespace properties: name: type: string minLength: 1 namespace: type: string minLength: 1 status: description: ApisixStatus is the status report for Apisix ingress Resources type: object properties: conditions: type: array items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type \ Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" type: object required: - lastTransitionTime - message - reason - status - type properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. type: string format: date-time message: description: message is a human readable message indicating details about the transition. This may be an empty string. type: string maxLength: 32768 observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. type: integer format: int64 minimum: 0 reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. type: string maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ status: description: status of the condition, one of True, False, Unknown. type: string enum: - "True" - "False" - Unknown type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) type: string 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])$ - name: v2beta3 additionalPrinterColumns: - jsonPath: .spec.hosts name: SNIs type: string - jsonPath: .spec.secret.name name: Secret Name type: string - jsonPath: .spec.secret.namespace name: Secret Namespace type: string - jsonPath: .metadata.creationTimestamp name: Age type: date schema: openAPIV3Schema: description: ApisixTls defines SSL resource in APISIX. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: ApisixTlsSpec is the specification of ApisixSSL. properties: client: description: ApisixMutualTlsClientConfig describes the mutual TLS CA and verify depth properties: caSecret: description: ApisixSecret describes the Kubernetes Secret name and namespace. properties: name: minLength: 1 type: string namespace: minLength: 1 type: string required: - name - namespace type: object depth: type: integer type: object hosts: items: pattern: ^\*?[0-9a-zA-Z-.]+$ type: string minItems: 1 type: array secret: description: ApisixSecret describes the Kubernetes Secret name and namespace. properties: name: minLength: 1 type: string namespace: minLength: 1 type: string required: - name - namespace type: object required: - hosts - secret type: object status: description: ApisixStatus is the status report for Apisix ingress Resources properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type \ // +patchStrategy=merge // +listType=map // +listMapKey=type \ Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. 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. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) 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 type: array type: object type: object served: true storage: false deprecated: true subresources: status: {} - name: v1 additionalPrinterColumns: - jsonPath: .spec.hosts name: SNIs type: string - jsonPath: .spec.secret.name name: Secret Name type: string - jsonPath: .spec.secret.namespace name: Secret Namespace type: string - jsonPath: .metadata.creationTimestamp name: Age type: date schema: openAPIV3Schema: description: ApisixTls defines SSL resource in APISIX. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: ApisixTlsSpec is the specification of ApisixSSL. properties: client: description: ApisixMutualTlsClientConfig describes the mutual TLS CA and verify depth properties: caSecret: description: ApisixSecret describes the Kubernetes Secret name and namespace. properties: name: minLength: 1 type: string namespace: minLength: 1 type: string required: - name - namespace type: object depth: type: integer type: object hosts: items: pattern: ^\*?[0-9a-zA-Z-.]+$ type: string minItems: 1 type: array secret: description: ApisixSecret describes the Kubernetes Secret name and namespace. properties: name: minLength: 1 type: string namespace: minLength: 1 type: string required: - name - namespace type: object required: - hosts - secret type: object status: description: ApisixStatus is the status report for Apisix ingress Resources properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type \ // +patchStrategy=merge // +listType=map // +listMapKey=type \ Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. 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. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) 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 type: array type: object type: object served: false storage: false deprecated: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: apisix.apache.org/app: ingress-apisix name: apisixupstreams.apisix.apache.org spec: group: apisix.apache.org names: kind: ApisixUpstream plural: apisixupstreams shortNames: - au singular: apisixupstream scope: Namespaced versions: - name: v2 served: true storage: true subresources: status: {} schema: openAPIV3Schema: type: object properties: spec: type: object properties: subsets: type: array items: type: object properties: name: type: string minLength: 1 labels: type: object x-kubernetes-preserve-unknown-fields: true required: ["name", "labels"] loadbalancer: type: object properties: type: type: string enum: - roundrobin - chash - ewma - least_conn hashOn: type: string enum: - vars - vars_combinations - header - cookie - consumer key: type: string required: - type scheme: type: string enum: - http - grpc - https - grpcs retries: type: integer minimum: 0 timeout: type: object properties: connect: type: string read: type: string send: type: string tlsSecret: description: ApisixSecret describes the Kubernetes Secret name and namespace. type: object required: - name - namespace properties: name: type: string minLength: 1 namespace: type: string minLength: 1 healthCheck: type: object anyOf: - required: - active - required: - active - passive properties: active: type: object properties: type: type: string enum: - http - https - tcp timeout: type: number minimum: 0 concurrency: type: integer minimum: 1 host: type: string pattern: "^\\*?[0-9a-zA-Z-._]+$" port: type: integer minimum: 1 maximum: 65535 httpPath: type: string minLength: 1 strictTLS: type: boolean requestHeaders: type: array minItems: 1 items: type: string healthy: type: object properties: interval: type: string httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 successes: type: integer minimum: 1 maximum: 254 unhealthy: type: object properties: interval: type: string httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 httpFailures: type: integer minimum: 1 maximum: 254 tcpFailures: type: integer minimum: 1 maximum: 254 timeouts: type: integer minimum: 0 passive: type: object properties: type: type: string enum: - http - https - tcp healthy: type: object properties: httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 successes: type: integer minimum: 1 maximum: 254 unhealthy: type: object properties: httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 httpFailures: type: integer minimum: 1 maximum: 254 tcpFailures: type: integer minimum: 1 maximum: 254 timeouts: type: integer minimum: 0 portLevelSettings: type: array items: type: object properties: port: type: integer minimum: 1 maximum: 65535 loadbalancer: type: object properties: type: type: string enum: - roundrobin - chash - ewma - least_conn hashOn: type: string enum: - vars - vars_combinations - header - cookie - consumer key: type: string required: - type scheme: type: string enum: - http - grpc retries: type: integer minimum: 0 timeout: type: object properties: connect: type: string read: type: string send: type: string healthCheck: type: object anyOf: - required: - active - required: - active - passive properties: active: type: object properties: type: type: string enum: - http - https - tcp timeout: type: number minimum: 0 concurrency: type: integer minimum: 1 host: type: string pattern: "^\\*?[0-9a-zA-Z-._]+$" port: type: integer minimum: 1 maximum: 65535 httpPath: type: string minLength: 1 strictTLS: type: boolean requestHeaders: type: array minItems: 1 items: type: string healthy: type: object properties: interval: type: string httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 successes: type: integer minimum: 1 maximum: 254 unhealthy: type: object properties: interval: type: string httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 httpFailures: type: integer minimum: 1 maximum: 254 tcpFailures: type: integer minimum: 1 maximum: 254 timeout: type: string passive: type: object properties: type: type: string enum: - http - https - tcp healthy: type: object properties: httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 successes: type: integer minimum: 1 maximum: 254 unhealthy: type: object properties: httpCodes: type: array minItems: 1 items: type: integer minimum: 200 maximum: 599 httpFailures: type: integer minimum: 1 maximum: 254 tcpFailures: type: integer minimum: 1 maximum: 254 timeout: type: string - name: v2beta3 schema: openAPIV3Schema: properties: spec: properties: healthCheck: anyOf: - required: - active - required: - active - passive properties: active: properties: concurrency: minimum: 1 type: integer healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array interval: type: string successes: maximum: 254 minimum: 1 type: integer type: object host: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string httpPath: minLength: 1 type: string port: maximum: 65535 minimum: 1 type: integer requestHeaders: items: type: string minItems: 1 type: array strictTLS: type: boolean timeout: minimum: 0 type: number type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer interval: type: string tcpFailures: maximum: 254 minimum: 1 type: integer timeouts: minimum: 0 type: integer type: object type: object passive: properties: healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array successes: maximum: 254 minimum: 1 type: integer type: object type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer tcpFailures: maximum: 254 minimum: 1 type: integer timeouts: minimum: 0 type: integer type: object type: object type: object loadbalancer: properties: hashOn: enum: - vars - vars_combinations - header - cookie - consumer type: string key: type: string type: enum: - roundrobin - chash - ewma - least_conn type: string required: - type type: object portLevelSettings: items: properties: healthCheck: anyOf: - required: - active - required: - active - passive properties: active: properties: concurrency: minimum: 1 type: integer healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array interval: type: string successes: maximum: 254 minimum: 1 type: integer type: object host: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string httpPath: minLength: 1 type: string port: maximum: 65535 minimum: 1 type: integer requestHeaders: items: type: string minItems: 1 type: array strictTLS: type: boolean timeout: minimum: 0 type: number type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer interval: type: string tcpFailures: maximum: 254 minimum: 1 type: integer timeout: type: string type: object type: object passive: properties: healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array successes: maximum: 254 minimum: 1 type: integer type: object type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer tcpFailures: maximum: 254 minimum: 1 type: integer timeout: type: string type: object type: object type: object loadbalancer: properties: hashOn: enum: - vars - vars_combinations - header - cookie - consumer type: string key: type: string type: enum: - roundrobin - chash - ewma - least_conn type: string required: - type type: object port: maximum: 65535 minimum: 1 type: integer retries: minimum: 0 type: integer scheme: enum: - http - grpc type: string timeout: properties: connect: type: string read: type: string send: type: string type: object type: object type: array retries: minimum: 0 type: integer scheme: enum: - http - grpc - https - grpcs type: string subsets: items: properties: labels: type: object x-kubernetes-preserve-unknown-fields: true name: minLength: 1 type: string required: - name - labels type: object type: array timeout: properties: connect: type: string read: type: string send: type: string type: object tlsSecret: description: ApisixSecret describes the Kubernetes Secret name and namespace. properties: name: minLength: 1 type: string namespace: minLength: 1 type: string required: - name - namespace type: object type: object type: object served: true storage: false deprecated: true subresources: status: {} - name: v1 schema: openAPIV3Schema: properties: spec: properties: healthCheck: anyOf: - required: - active - required: - active - passive properties: active: properties: concurrency: minimum: 1 type: integer healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array interval: type: string successes: maximum: 254 minimum: 1 type: integer type: object host: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string httpPath: minLength: 1 type: string port: maximum: 65535 minimum: 1 type: integer requestHeaders: items: type: string minItems: 1 type: array strictTLS: type: boolean timeout: minimum: 0 type: number type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer interval: type: string tcpFailures: maximum: 254 minimum: 1 type: integer timeouts: minimum: 0 type: integer type: object type: object passive: properties: healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array successes: maximum: 254 minimum: 1 type: integer type: object type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer tcpFailures: maximum: 254 minimum: 1 type: integer timeouts: minimum: 0 type: integer type: object type: object type: object loadbalancer: properties: hashOn: enum: - vars - vars_combinations - header - cookie - consumer type: string key: type: string type: enum: - roundrobin - chash - ewma - least_conn type: string required: - type type: object portLevelSettings: items: properties: healthCheck: anyOf: - required: - active - required: - active - passive properties: active: properties: concurrency: minimum: 1 type: integer healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array interval: type: string successes: maximum: 254 minimum: 1 type: integer type: object host: pattern: ^\*?[0-9a-zA-Z-._]+$ type: string httpPath: minLength: 1 type: string port: maximum: 65535 minimum: 1 type: integer requestHeaders: items: type: string minItems: 1 type: array strictTLS: type: boolean timeout: minimum: 0 type: number type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer interval: type: string tcpFailures: maximum: 254 minimum: 1 type: integer timeout: type: string type: object type: object passive: properties: healthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array successes: maximum: 254 minimum: 1 type: integer type: object type: enum: - http - https - tcp type: string unhealthy: properties: httpCodes: items: maximum: 599 minimum: 200 type: integer minItems: 1 type: array httpFailures: maximum: 254 minimum: 1 type: integer tcpFailures: maximum: 254 minimum: 1 type: integer timeout: type: string type: object type: object type: object loadbalancer: properties: hashOn: enum: - vars - vars_combinations - header - cookie - consumer type: string key: type: string type: enum: - roundrobin - chash - ewma - least_conn type: string required: - type type: object port: maximum: 65535 minimum: 1 type: integer retries: minimum: 0 type: integer scheme: enum: - http - grpc type: string timeout: properties: connect: type: string read: type: string send: type: string type: object type: object type: array retries: minimum: 0 type: integer scheme: enum: - http - grpc - https - grpcs type: string subsets: items: properties: labels: type: object x-kubernetes-preserve-unknown-fields: true name: minLength: 1 type: string required: - name - labels type: object type: array timeout: properties: connect: type: string read: type: string send: type: string type: object tlsSecret: description: ApisixSecret describes the Kubernetes Secret name and namespace. properties: name: minLength: 1 type: string namespace: minLength: 1 type: string required: - name - namespace type: object type: object type: object served: false storage: false deprecated: true subresources: status: {}