chore: release APISIX Ingress controller v1.6.0-rc1 (#420)
diff --git a/charts/apisix-ingress-controller/Chart.yaml b/charts/apisix-ingress-controller/Chart.yaml
index 6565f35..926005c 100644
--- a/charts/apisix-ingress-controller/Chart.yaml
+++ b/charts/apisix-ingress-controller/Chart.yaml
@@ -24,8 +24,8 @@
- nginx
- crd
type: application
-version: 0.10.2
-appVersion: 1.5.1
+version: 0.11.0
+appVersion: 1.6.0-rc1
sources:
- https://github.com/apache/apisix-helm-chart
@@ -34,4 +34,4 @@
# ref: https://artifacthub.io/docs/topics/annotations/helm/
annotations:
- artifacthub.io/prerelease: "false"
+ artifacthub.io/prerelease: "true"
diff --git a/charts/apisix-ingress-controller/README.md b/charts/apisix-ingress-controller/README.md
index 0222224..756ff2a 100644
--- a/charts/apisix-ingress-controller/README.md
+++ b/charts/apisix-ingress-controller/README.md
@@ -112,6 +112,7 @@
| clusterDomain | string | `"cluster.local"` | |
| config.apisix | object | `{"adminKey":"edd1c9f034335f136f87ad84b625c8f1","clusterName":"default","serviceName":"apisix-admin","serviceNamespace":"ingress-apisix","servicePort":9180}` | APISIX related configurations. |
| config.apisix.serviceName | string | `"apisix-admin"` | Enabling this value, overrides serviceName and serviceNamespace. serviceFullname: "apisix-admin.apisix.svc.local" |
+| config.apisixAdminAPIVersion | string | `"v3"` | the APISIX admin API version. can be "v2" or "v3", default is "v3". |
| config.apisixResourceSyncInterval | string | `"300s"` | Default interval for synchronizing Kubernetes resources to APISIX |
| config.certFile | string | `"/etc/webhook/certs/cert.pem"` | the TLS certificate file path. |
| config.enableProfiling | bool | `true` | enable profiling via web interfaces host:port/debug/pprof, default is true. |
@@ -120,15 +121,16 @@
| config.ingressPublishService | string | `""` | the controller will use the Endpoint of this Service to update the status information of the Ingress resource. The format is "namespace/svc-name" to solve the situation that the data plane and the controller are not deployed in the same namespace. |
| config.ingressStatusAddress | list | `[]` | |
| config.keyFile | string | `"/etc/webhook/certs/key.pem"` | the TLS key file path. |
-| config.kubernetes | object | `{"apisixRouteVersion":"apisix.apache.org/v2","appNamespaces":["*"],"electionId":"ingress-apisix-leader","enableGatewayAPI":false,"ingressClass":"apisix","ingressVersion":"networking/v1","kubeconfig":"","namespaceSelector":[""],"resyncInterval":"6h","watchEndpointSlices":false}` | Kubernetes related configurations. |
+| config.kubernetes | object | `{"apiVersion":"apisix.apache.org/v2","apisixRouteVersion":"apisix.apache.org/v2","electionId":"ingress-apisix-leader","enableGatewayAPI":false,"ingressClass":"apisix","ingressVersion":"networking/v1","kubeconfig":"","namespaceSelector":[""],"pluginMetadataCM":"","resyncInterval":"6h","watchEndpointSlices":false}` | Kubernetes related configurations. |
+| config.kubernetes.apiVersion | string | `"apisix.apache.org/v2"` | the resource API version, support "apisix.apache.org/v2beta3" and "apisix.apache.org/v2". default is "apisix.apache.org/v2" |
| config.kubernetes.apisixRouteVersion | string | `"apisix.apache.org/v2"` | the supported apisixroute api group version, can be "apisix.apache.org/v2" "apisix.apache.org/v2beta3" or "apisix.apache.org/v2beta2" |
-| config.kubernetes.appNamespaces | list | `["*"]` | namespace list that controller will watch for resources, by default all namespaces (represented by "*") are watched. |
| config.kubernetes.electionId | string | `"ingress-apisix-leader"` | the election id for the controller leader campaign, only the leader will watch and delivery resource changes, other instances (as candidates) stand by. |
| config.kubernetes.enableGatewayAPI | bool | `false` | whether to enable support for Gateway API. Note: This feature is currently under development and may not work as expected. It is not recommended to use it in a production environment. Before we announce support for it to reach Beta level or GA. |
| config.kubernetes.ingressClass | string | `"apisix"` | The class of an Ingress object is set using the field IngressClassName in Kubernetes clusters version v1.18.0 or higher or the annotation "kubernetes.io/ingress.class" (deprecated). |
| config.kubernetes.ingressVersion | string | `"networking/v1"` | the supported ingress api group version, can be "networking/v1beta1", "networking/v1" (for Kubernetes version v1.19.0 or higher), and "extensions/v1beta1", default is "networking/v1". |
| config.kubernetes.kubeconfig | string | `""` | the Kubernetes configuration file path, default is "", so the in-cluster configuration will be used. |
| config.kubernetes.namespaceSelector | list | `[""]` | namespace_selector represent basis for selecting managed namespaces. the field is support since version 1.4.0 For example, "apisix.ingress=watching", so ingress will watching the namespaces which labels "apisix.ingress=watching" |
+| config.kubernetes.pluginMetadataCM | string | `""` | Pluginmetadata in APISIX can be controlled through ConfigMap. default is "" |
| config.kubernetes.resyncInterval | string | `"6h"` | how long should apisix-ingress-controller re-synchronizes with Kubernetes, default is 6h, |
| config.kubernetes.watchEndpointSlices | bool | `false` | whether to watch EndpointSlices rather than Endpoints. |
| config.logLevel | string | `"info"` | the error log level, default is info, optional values are: debug, info, warn, error, panic, fatal |
@@ -136,7 +138,7 @@
| fullnameOverride | string | `""` | |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string | `"apache/apisix-ingress-controller"` | |
-| image.tag | string | `"1.5.1"` | |
+| image.tag | string | `"1.6.0-rc1"` | |
| imagePullSecrets | list | `[]` | |
| initContainer.image | string | `"busybox"` | |
| initContainer.tag | float | `1.28` | |
diff --git a/charts/apisix-ingress-controller/crds/customresourcedefinitions.yaml b/charts/apisix-ingress-controller/crds/customresourcedefinitions.yaml
index 3c0d034..0981fcc 100644
--- a/charts/apisix-ingress-controller/crds/customresourcedefinitions.yaml
+++ b/charts/apisix-ingress-controller/crds/customresourcedefinitions.yaml
@@ -31,45 +31,6 @@
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:
@@ -110,7 +71,7 @@
deprecated: true
subresources:
status: {}
- - name: v2alpha1
+ - name: v2
schema:
openAPIV3Schema:
properties:
@@ -145,9 +106,8 @@
type: object
type: object
type: object
- served: false
- storage: false
- deprecated: true
+ served: true
+ storage: true
subresources:
status: {}
---
@@ -168,174 +128,6 @@
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:
@@ -348,6 +140,12 @@
- basicAuth
- required:
- keyAuth
+ - required:
+ - wolfRBAC
+ - required:
+ - jwtAuth
+ - required:
+ - hmacAuth
properties:
basicAuth:
oneOf:
@@ -377,6 +175,84 @@
- password
type: object
type: object
+ hmacAuth:
+ oneOf:
+ - required:
+ - value
+ - required:
+ - secretRef
+ properties:
+ secretRef:
+ properties:
+ name:
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ value:
+ properties:
+ access_key:
+ type: string
+ algorithm:
+ type: string
+ clock_skew:
+ type: integer
+ encode_uri_params:
+ type: boolean
+ keep_headers:
+ type: boolean
+ max_req_body:
+ type: integer
+ secret_key:
+ type: string
+ signed_headers:
+ items:
+ type: string
+ type: array
+ validate_request_body:
+ type: boolean
+ required:
+ - access_key
+ - secret_key
+ type: object
+ type: object
+ jwtAuth:
+ oneOf:
+ - required:
+ - value
+ - required:
+ - secretRef
+ properties:
+ secretRef:
+ properties:
+ name:
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ value:
+ properties:
+ algorithm:
+ type: string
+ base64_secret:
+ type: boolean
+ exp:
+ type: integer
+ key:
+ minLength: 1
+ type: string
+ private_key:
+ type: string
+ public_key:
+ type: string
+ secret:
+ type: string
+ required:
+ - key
+ type: object
+ type: object
keyAuth:
oneOf:
- required:
@@ -401,6 +277,31 @@
- key
type: object
type: object
+ wolfRBAC:
+ oneOf:
+ - required:
+ - value
+ - required:
+ - secretRef
+ properties:
+ secretRef:
+ properties:
+ name:
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ value:
+ properties:
+ appid:
+ type: string
+ header_prefix:
+ type: string
+ server:
+ type: string
+ type: object
+ type: object
type: object
required:
- authParameter
@@ -411,7 +312,7 @@
deprecated: true
subresources:
status: {}
- - name: v2alpha1
+ - name: v2
schema:
openAPIV3Schema:
properties:
@@ -423,6 +324,12 @@
- basicAuth
- required:
- keyAuth
+ - required:
+ - wolfRBAC
+ - required:
+ - jwtAuth
+ - required:
+ - hmacAuth
properties:
basicAuth:
oneOf:
@@ -452,6 +359,84 @@
- password
type: object
type: object
+ hmacAuth:
+ oneOf:
+ - required:
+ - value
+ - required:
+ - secretRef
+ properties:
+ secretRef:
+ properties:
+ name:
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ value:
+ properties:
+ access_key:
+ type: string
+ algorithm:
+ type: string
+ clock_skew:
+ type: integer
+ encode_uri_params:
+ type: boolean
+ keep_headers:
+ type: boolean
+ max_req_body:
+ type: integer
+ secret_key:
+ type: string
+ signed_headers:
+ items:
+ type: string
+ type: array
+ validate_request_body:
+ type: boolean
+ required:
+ - access_key
+ - secret_key
+ type: object
+ type: object
+ jwtAuth:
+ oneOf:
+ - required:
+ - value
+ - required:
+ - secretRef
+ properties:
+ secretRef:
+ properties:
+ name:
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ value:
+ properties:
+ algorithm:
+ type: string
+ base64_secret:
+ type: boolean
+ exp:
+ type: integer
+ key:
+ minLength: 1
+ type: string
+ private_key:
+ type: string
+ public_key:
+ type: string
+ secret:
+ type: string
+ required:
+ - key
+ type: object
+ type: object
keyAuth:
oneOf:
- required:
@@ -476,14 +461,38 @@
- key
type: object
type: object
+ wolfRBAC:
+ oneOf:
+ - required:
+ - value
+ - required:
+ - secretRef
+ properties:
+ secretRef:
+ properties:
+ name:
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ value:
+ properties:
+ appid:
+ type: string
+ header_prefix:
+ type: string
+ server:
+ type: string
+ type: object
+ type: object
type: object
required:
- authParameter
type: object
type: object
- served: false
- storage: false
- deprecated: true
+ served: true
+ storage: true
subresources:
status: {}
---
@@ -503,65 +512,12 @@
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:
+ - additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
priority: 0
type: date
+ name: v2beta3
schema:
openAPIV3Schema:
properties:
@@ -610,6 +566,61 @@
deprecated: true
subresources:
status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ priority: 0
+ type: date
+ name: v2
+ 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
+ secretRef:
+ 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: true
+ subresources:
+ status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
@@ -1265,8 +1276,7 @@
deprecated: true
subresources:
status: {}
- - name: v2beta3
- additionalPrinterColumns:
+ - additionalPrinterColumns:
- jsonPath: .spec.http[].match.hosts
name: Hosts
priority: 0
@@ -1291,6 +1301,7 @@
name: Age
priority: 0
type: date
+ name: v2beta3
schema:
openAPIV3Schema:
properties:
@@ -1308,6 +1319,15 @@
properties:
enable:
type: boolean
+ jwtAuth:
+ properties:
+ cookie:
+ type: string
+ header:
+ type: string
+ query:
+ type: string
+ type: object
keyAuth:
properties:
header:
@@ -1317,6 +1337,9 @@
enum:
- basicAuth
- keyAuth
+ - jwtAuth
+ - wolfRBAC
+ - hmacAuth
type: string
required:
- enable
@@ -1550,298 +1573,344 @@
deprecated: true
subresources:
status: {}
- - name: v2
- served: true
- storage: true
- subresources:
- status: {}
- additionalPrinterColumns:
+ - additionalPrinterColumns:
- jsonPath: .spec.http[].match.hosts
name: Hosts
- type: string
priority: 0
+ type: string
- jsonPath: .spec.http[].match.paths
name: URIs
- type: string
priority: 0
+ type: string
- jsonPath: .spec.http[].backends[].serviceName
name: Target Service(HTTP)
- type: string
priority: 1
+ type: string
- jsonPath: .spec.tcp[].match.ingressPort
name: Ingress Server Port(TCP)
- type: integer
priority: 1
+ type: integer
- jsonPath: .spec.tcp[].match.backend.serviceName
name: Target Service(TCP)
- type: string
priority: 1
+ type: string
- jsonPath: .metadata.creationTimestamp
name: Age
- type: date
priority: 0
+ type: date
+ name: v2
schema:
openAPIV3Schema:
- type: object
properties:
spec:
- type: object
anyOf:
- - required: ["http"]
- - required: ["stream"]
+ - required:
+ - http
+ - required:
+ - stream
properties:
http:
- type: array
- minItems: 1
items:
- type: object
- required: ["name", "match", "backends"]
+ anyOf:
+ - required:
+ - name
+ - match
+ - backends
+ - required:
+ - name
+ - match
+ - upstreams
properties:
- name:
- type: string
- minLength: 1
- priority:
- type: integer
- timeout:
- type: object
+ authentication:
properties:
- connect:
+ enable:
+ type: boolean
+ jwtAuth:
+ properties:
+ cookie:
+ type: string
+ header:
+ type: string
+ query:
+ type: string
+ type: object
+ keyAuth:
+ properties:
+ header:
+ type: string
+ type: object
+ type:
+ enum:
+ - basicAuth
+ - keyAuth
+ - jwtAuth
+ - wolfRBAC
+ - hmacAuth
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
+ - enable
+ type: object
backends:
- type: array
- minItems: 1
items:
- type: object
properties:
- serviceName:
+ resolveGranularity:
+ enum:
+ - endpoint
+ - service
type: string
+ serviceName:
minLength: 1
+ type: string
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:
+ 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
+ - GreaterThanEqual
+ - LessThan
+ - LessThanEqual
+ - 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
+ - Variable
+ 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
+ secretRef:
+ 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
+ upstreams:
+ description: Upstreams refer to ApisixUpstream CRD
+ items:
+ description: ApisixRouteUpstreamReference contains a ApisixUpstream
+ CRD reference
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:
+ weight:
+ type: integer
+ type: object
+ type: array
+ websocket:
+ type: boolean
type: object
- required: ["name", "match", "backend", "protocol"]
+ minItems: 1
+ type: array
+ stream:
+ items:
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:
+ resolveGranularity:
+ enum:
+ - endpoint
+ - service
type: string
+ serviceName:
minLength: 1
+ type: string
servicePort:
anyOf:
- type: integer
- type: string
x-kubernetes-int-or-string: true
- resolveGranularity:
- type: string
- enum: ["endpoint", "service"]
subset:
type: string
required:
- - serviceName
- - servicePort
+ - serviceName
+ - servicePort
+ type: object
+ match:
+ properties:
+ host:
+ type: string
+ ingressPort:
+ maximum: 65535
+ minimum: 1
+ type: integer
+ required:
+ - ingressPort
+ type: object
+ name:
+ minLength: 1
+ type: string
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
+ x-kubernetes-preserve-unknown-fields: true
+ enable:
+ type: boolean
+ name:
+ minLength: 1
+ type: string
+ secretRef:
+ type: string
+ type: object
required:
- - name
- - enable
- status:
+ - name
+ - enable
+ type: array
+ protocol:
+ enum:
+ - TCP
+ - UDP
+ type: string
+ required:
+ - name
+ - match
+ - backend
+ - protocol
+ type: object
+ minItems: 1
+ type: array
type: object
+ status:
properties:
conditions:
- type: array
items:
- type: object
properties:
- "type":
- type: string
- reason:
- type: string
- status:
- type: string
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: true
+ subresources:
+ status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
@@ -1860,475 +1929,319 @@
preserveUnknownFields: false
scope: Namespaced
versions:
- - name: v2
+ - 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
+ name: v2beta3
+ 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: {}
+ - 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
+ name: v2
+ 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: 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
@@ -2346,378 +2259,6 @@
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:
@@ -3094,12 +2635,41 @@
deprecated: true
subresources:
status: {}
- - name: v1
+ - name: v2
schema:
openAPIV3Schema:
properties:
spec:
properties:
+ discovery:
+ description: Discovery is used to configure service discovery for
+ upstream
+ properties:
+ args:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ serviceName:
+ type: string
+ type:
+ type: string
+ type: object
+ externalNodes:
+ description: ExternalNodes contains external nodes the Upstream should
+ use If this field is set, the upstream will use these nodes directly
+ without any further resolves
+ items:
+ description: ApisixUpstreamExternalNode is the external node conf
+ properties:
+ name:
+ type: string
+ port:
+ type: integer
+ type:
+ type: string
+ weight:
+ type: integer
+ type: object
+ type: array
healthCheck:
anyOf:
- required:
@@ -3465,8 +3035,7 @@
type: object
type: object
type: object
- served: false
- storage: false
- deprecated: true
+ served: true
+ storage: true
subresources:
status: {}
diff --git a/charts/apisix-ingress-controller/templates/configmap.yaml b/charts/apisix-ingress-controller/templates/configmap.yaml
index 9b67b27..1beab28 100644
--- a/charts/apisix-ingress-controller/templates/configmap.yaml
+++ b/charts/apisix-ingress-controller/templates/configmap.yaml
@@ -32,16 +32,11 @@
{{- end }}
{{- end }}
enable_profiling: {{ .Values.config.enableProfiling }}
+ apisix-admin-api-version: {{ .Values.config.apisixAdminAPIVersion }}
apisix-resource-sync-interval: {{ .Values.config.apisixResourceSyncInterval }}
kubernetes:
kubeconfig: {{ .Values.config.kubernetes.kubeconfig | quote }}
resync_interval: {{ .Values.config.kubernetes.resyncInterval | quote }}
- {{- if gt (len .Values.config.kubernetes.appNamespaces) 0 }}
- app_namespaces:
- {{- range .Values.config.kubernetes.appNamespaces }}
- - {{ . | quote }}
- {{- end }}
- {{- end }}
{{- if gt (len .Values.config.kubernetes.namespaceSelector) 0 }}
namespace_selector:
@@ -55,6 +50,8 @@
watch_endpointslices: {{ .Values.config.kubernetes.watchEndpointSlices }}
apisix_route_version: {{ .Values.config.kubernetes.apisixRouteVersion | quote }}
enable_gateway_api: {{ .Values.config.kubernetes.enableGatewayAPI }}
+ apisix_version: {{ .Values.config.kubernetes.apiVersion | quote }}
+ plugin_metadata_cm: {{ .Values.config.kubernetes.pluginMetadataCM | quote }}
apisix:
{{ if .Values.config.apisix.serviceFullname }}
default_cluster_base_url: http://{{ .Values.config.apisix.serviceFullname }}:{{ .Values.config.apisix.servicePort }}/apisix/admin
diff --git a/charts/apisix-ingress-controller/values.yaml b/charts/apisix-ingress-controller/values.yaml
index a175acd..f13dc73 100644
--- a/charts/apisix-ingress-controller/values.yaml
+++ b/charts/apisix-ingress-controller/values.yaml
@@ -42,7 +42,7 @@
image:
repository: apache/apisix-ingress-controller
pullPolicy: IfNotPresent
- tag: "1.5.1"
+ tag: "1.6.0-rc1"
podAnnotations: {}
@@ -79,6 +79,8 @@
ingressStatusAddress: []
# -- enable profiling via web interfaces host:port/debug/pprof, default is true.
enableProfiling: true
+ # -- the APISIX admin API version. can be "v2" or "v3", default is "v3".
+ apisixAdminAPIVersion: "v3"
# -- Default interval for synchronizing Kubernetes resources to APISIX
apisixResourceSyncInterval: "300s"
# -- Kubernetes related configurations.
@@ -89,9 +91,6 @@
# -- how long should apisix-ingress-controller re-synchronizes with Kubernetes,
# default is 6h,
resyncInterval: "6h"
- # -- namespace list that controller will watch for resources,
- # by default all namespaces (represented by "*") are watched.
- appNamespaces: ["*"]
# -- namespace_selector represent basis for selecting managed namespaces.
# the field is support since version 1.4.0
# For example, "apisix.ingress=watching", so ingress will watching the namespaces which labels "apisix.ingress=watching"
@@ -118,6 +117,12 @@
# It is not recommended to use it in a production environment.
# Before we announce support for it to reach Beta level or GA.
enableGatewayAPI: false
+ # -- the resource API version, support "apisix.apache.org/v2beta3" and "apisix.apache.org/v2".
+ # default is "apisix.apache.org/v2"
+ apiVersion: "apisix.apache.org/v2"
+ # -- Pluginmetadata in APISIX can be controlled through ConfigMap. default is ""
+ pluginMetadataCM: ""
+
# -- APISIX related configurations.
apisix:
# -- Enabling this value, overrides serviceName and serviceNamespace.