This is an automated email from the ASF dual-hosted git repository.

zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git


The following commit(s) were added to refs/heads/master by this push:
     new 0630ac5  feat: upgrade CRD version to v1 (#693)
0630ac5 is described below

commit 0630ac55697eaf01017715fcad87b154cb64d9d4
Author: Jintao Zhang <[email protected]>
AuthorDate: Wed Sep 29 00:43:00 2021 +0800

    feat: upgrade CRD version to v1 (#693)
---
 Makefile                                           |   2 +-
 README.md                                          |   2 +-
 docs/en/latest/practices/check-crd-status.md       |   2 +-
 .../latest/practices/proxy-the-httpbin-service.md  |   2 +-
 docs/en/latest/practices/the-hard-way.md           |  65 +-
 .../crd/{v1beta1 => v1}/ApisixClusterConfig.yaml   |  66 +-
 samples/deploy/crd/v1/ApisixConsumer.yaml          | 100 +++
 samples/deploy/crd/v1/ApisixRoute.yaml             | 890 +++++++++++++++++++++
 samples/deploy/crd/v1/ApisixTls.yaml               | 187 +++++
 samples/deploy/crd/v1/ApisixUpstream.yaml          | 387 +++++++++
 .../deploy/crd/{v1beta1 => v1}/kustomization.yaml  |   0
 samples/deploy/crd/v1beta1/ApisixConsumer.yaml     | 100 ---
 samples/deploy/crd/v1beta1/ApisixRoute.yaml        | 324 --------
 samples/deploy/crd/v1beta1/ApisixTls.yaml          | 187 -----
 samples/deploy/crd/v1beta1/ApisixUpstream.yaml     | 387 ---------
 samples/deploy/kustomization.yaml                  |   2 +-
 16 files changed, 1605 insertions(+), 1098 deletions(-)

diff --git a/Makefile b/Makefile
index 1697554..477a313 100644
--- a/Makefile
+++ b/Makefile
@@ -71,7 +71,7 @@ unit-test:
 ### e2e-test:             Run e2e test cases (kind is required)
 .PHONY: e2e-test
 e2e-test: ginkgo-check push-images-to-kind
-       kubectl apply -k $(PWD)/samples/deploy/crd/v1beta1
+       kubectl apply -k $(PWD)/samples/deploy/crd/v1
        cd test/e2e && ginkgo -cover -coverprofile=coverage.txt -r 
--randomizeSuites --randomizeAllSpecs --trace -p --nodes=$(E2E_CONCURRENCY)
 
 .PHONY: ginkgo-check
diff --git a/README.md b/README.md
index 4062417..a6ca33b 100644
--- a/README.md
+++ b/README.md
@@ -59,7 +59,7 @@ This project is currently general availability.
 
 ## Prerequisites
 
-Apisix ingress controller requires Kubernetes version 1.15+.
+Apisix ingress controller requires Kubernetes version 1.16+. Because we used 
`CustomResourceDefinition` v1 stable API.
 From the version 1.0.0, APISIX-ingress-controller need to work with Apache 
APISIX version 2.7+.
 
 ## Apache APISIX Ingress vs. Kubernetes Ingress Nginx
diff --git a/docs/en/latest/practices/check-crd-status.md 
b/docs/en/latest/practices/check-crd-status.md
index 049691a..6ba4024 100644
--- a/docs/en/latest/practices/check-crd-status.md
+++ b/docs/en/latest/practices/check-crd-status.md
@@ -96,5 +96,5 @@ Status:
 If can not see the Status information, please check the following points:
 
 1. The version of Apache APISIX Ingress Controller needs to be >= 1.0.
-2. Use the latest CRD definition file, refer to 
[here](https://github.com/apache/apisix-ingress-controller/tree/master/samples/deploy/crd/v1beta1).
+2. Use the latest CRD definition file, refer to 
[here](https://github.com/apache/apisix-ingress-controller/tree/master/samples/deploy/crd/v1).
 3. Use the latest RBAC configuration, refer to 
[here](https://github.com/apache/apisix-ingress-controller/tree/master/samples/deploy/rbac).
diff --git a/docs/en/latest/practices/proxy-the-httpbin-service.md 
b/docs/en/latest/practices/proxy-the-httpbin-service.md
index 3ed5cce..56dda7a 100644
--- a/docs/en/latest/practices/proxy-the-httpbin-service.md
+++ b/docs/en/latest/practices/proxy-the-httpbin-service.md
@@ -42,7 +42,7 @@ kubectl expose pod httpbin --port 80
 
 ## Resource Delivery
 
-In order to let Apache APISIX proxies requests to httpbin, we need to create 
an `ApisixRoute` resource, if you're not familiar with it, see the 
[reference](https://github.com/apache/apisix-ingress-controller/blob/master/samples/deploy/crd/v1beta1/ApisixRoute.yaml)
 for the details.
+In order to let Apache APISIX proxies requests to httpbin, we need to create 
an `ApisixRoute` resource, if you're not familiar with it, see the 
[reference](https://github.com/apache/apisix-ingress-controller/blob/master/samples/deploy/crd/v1/ApisixRoute.yaml)
 for the details.
 
 ```yaml
 # httpbin-route.yaml
diff --git a/docs/en/latest/practices/the-hard-way.md 
b/docs/en/latest/practices/the-hard-way.md
index 5b990cb..1440ae1 100644
--- a/docs/en/latest/practices/the-hard-way.md
+++ b/docs/en/latest/practices/the-hard-way.md
@@ -601,70 +601,11 @@ subjects:
 
 Then, we need to create ApisixRoute CRD:
 
-```yaml
-
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixroutes.apisix.apache.org
-spec:
-  group: apisix.apache.org
-  versions:
-    - name: v1
-      served: true
-      storage: false
-    - name: v2alpha1
-      served: true
-      storage: false
-    - name: v2beta1
-      served: true
-      storage: true
-  scope: Namespaced
-  names:
-    plural: apisixroutes
-    singular: apisixroute
-    kind: ApisixRoute
-    shortNames:
-      - ar
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixtlses.apisix.apache.org
-spec:
-  group: apisix.apache.org
-  versions:
-    - name: v1
-      served: true
-      storage: true
-  scope: Namespaced
-  names:
-    plural: apisixtlses
-    singular: apisixtls
-    kind: ApisixTls
-    shortNames:
-      - atls
----
-apiVersion: apiextensions.k8s.io/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixupstreams.apisix.apache.org
-spec:
-  group: apisix.apache.org
-  versions:
-    - name: v1
-      served: true
-      storage: true
-  scope: Namespaced
-  names:
-    plural: apisixupstreams
-    singular: apisixupstream
-    kind: ApisixUpstream
-    shortNames:
-      - au
+```bash
+kubectl apply -k samples/deploy/crd/v1
 ```
 
-This yaml doesn't contain all the CRDs for APISIX Ingress Controller. Please 
refer to 
[samples](http://github.com/apache/apisix-ingress-controller/blob/master/samples/deploy/crd)
 for details.
+Please refer to 
[samples](http://github.com/apache/apisix-ingress-controller/blob/master/samples/deploy/crd)
 for details.
 
 To make the ingress controller works properly with APISIX, we need to create a 
config file containing the APISIX admin API URL and API key as below:
 
diff --git a/samples/deploy/crd/v1beta1/ApisixClusterConfig.yaml 
b/samples/deploy/crd/v1/ApisixClusterConfig.yaml
similarity index 59%
rename from samples/deploy/crd/v1beta1/ApisixClusterConfig.yaml
rename to samples/deploy/crd/v1/ApisixClusterConfig.yaml
index b1d11d1..6594f2a 100644
--- a/samples/deploy/crd/v1beta1/ApisixClusterConfig.yaml
+++ b/samples/deploy/crd/v1/ApisixClusterConfig.yaml
@@ -15,16 +15,12 @@
 # limitations under the License.
 #
 
-apiVersion: apiextensions.k8s.io/v1beta1
+apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   name: apisixclusterconfigs.apisix.apache.org
 spec:
   group: apisix.apache.org
-  versions:
-    - name: v2alpha1
-      served: true
-      storage: true
   scope: Cluster
   names:
     plural: apisixclusterconfigs
@@ -33,39 +29,43 @@ spec:
     shortNames:
       - acc
   preserveUnknownFields: false
-  subresources:
-    status: {}
-  validation:
-    openAPIV3Schema:
-      type: object
-      properties:
-        spec:
+  versions:
+    - name: v2alpha1
+      served: true
+      storage: true
+      subresources:
+        status: {}
+      schema:
+        openAPIV3Schema:
           type: object
           properties:
-            admin:
-              type: object
-              required:
-                - baseURL
-              properties:
-                baseURL:
-                  type: string
-                  pattern: "https?://[^:]+:(\\d+)"
-                adminKey:
-                  type: string
-            monitoring:
+            spec:
               type: object
               properties:
-                prometheus:
+                admin:
                   type: object
+                  required:
+                    - baseURL
                   properties:
-                    enable:
-                      type: boolean
-                skywalking:
+                    baseURL:
+                      type: string
+                      pattern: "https?://[^:]+:(\\d+)"
+                    adminKey:
+                      type: string
+                monitoring:
                   type: object
                   properties:
-                    enable:
-                      type: boolean
-                    sampleRatio:
-                      type: number
-                      minimum: 0.00001
-                      maximum: 1
+                    prometheus:
+                      type: object
+                      properties:
+                        enable:
+                          type: boolean
+                    skywalking:
+                      type: object
+                      properties:
+                        enable:
+                          type: boolean
+                        sampleRatio:
+                          type: number
+                          minimum: 0.00001
+                          maximum: 1
diff --git a/samples/deploy/crd/v1/ApisixConsumer.yaml 
b/samples/deploy/crd/v1/ApisixConsumer.yaml
new file mode 100644
index 0000000..04fedfd
--- /dev/null
+++ b/samples/deploy/crd/v1/ApisixConsumer.yaml
@@ -0,0 +1,100 @@
+#
+# 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:
+  name: apisixconsumers.apisix.apache.org
+spec:
+  group: apisix.apache.org
+  scope: Namespaced
+  names:
+    plural: apisixconsumers
+    singular: apisixconsumer
+    kind: ApisixConsumer
+    shortNames:
+      - ac
+  preserveUnknownFields: false
+  versions:
+    - name: v2alpha1
+      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"]
+                  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
diff --git a/samples/deploy/crd/v1/ApisixRoute.yaml 
b/samples/deploy/crd/v1/ApisixRoute.yaml
new file mode 100644
index 0000000..c09f754
--- /dev/null
+++ b/samples/deploy/crd/v1/ApisixRoute.yaml
@@ -0,0 +1,890 @@
+#
+# 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:
+  name: apisixroutes.apisix.apache.org
+spec:
+  group: apisix.apache.org
+  scope: Namespaced
+  names:
+    plural: apisixroutes
+    singular: apisixroute
+    kind: ApisixRoute
+    shortNames:
+      - ar
+  versions:
+    - name: v1
+      served: true
+      storage: false
+      deprecated: 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[].backend.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: ["tcp"]
+                - required: ["stream"]
+              properties:
+                http:
+                  type: array
+                  minItems: 1
+                  items:
+                    type: object
+                    oneOf:
+                      - required: ["name", "match", "backend"]
+                      - 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
+                      backend:
+                        type: object
+                        properties:
+                          serviceName:
+                            type: string
+                            minLength: 1
+                          servicePort:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: ["endpoint", "service"]
+                          weight:
+                            type: integer
+                            minimum: 0
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+                      backends:
+                        type: array
+                        minItems: 1
+                        items:
+                          type: object
+                          properties:
+                            serviceName:
+                              type: string
+                              minLength: 1
+                            servicePort:
+                              type: integer
+                              minimum: 1
+                              maximum: 65535
+                            resolveGranualrity:
+                              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-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"]
+                          keyAuth:
+                            type: object
+                            properties:
+                              header:
+                                type: string
+                        required:
+                          - enable
+                tcp:
+                  type: array
+                  minItems: 1
+                  items:
+                    type: object
+                    required: ["name", "match", "backend"]
+                    properties:
+                      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:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: ["endpoint", "service"]
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+                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:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: [ "endpoint", "service" ]
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+    - name: v2alpha1
+      served: true
+      storage: false
+      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[].backend.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: ["tcp"]
+                - required: ["stream"]
+              properties:
+                http:
+                  type: array
+                  minItems: 1
+                  items:
+                    type: object
+                    oneOf:
+                      - required: ["name", "match", "backend"]
+                      - 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
+                      backend:
+                        type: object
+                        properties:
+                          serviceName:
+                            type: string
+                            minLength: 1
+                          servicePort:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: ["endpoint", "service"]
+                          weight:
+                            type: integer
+                            minimum: 0
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+                      backends:
+                        type: array
+                        minItems: 1
+                        items:
+                          type: object
+                          properties:
+                            serviceName:
+                              type: string
+                              minLength: 1
+                            servicePort:
+                              type: integer
+                              minimum: 1
+                              maximum: 65535
+                            resolveGranualrity:
+                              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-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"]
+                          keyAuth:
+                            type: object
+                            properties:
+                              header:
+                                type: string
+                        required:
+                          - enable
+                tcp:
+                  type: array
+                  minItems: 1
+                  items:
+                    type: object
+                    required: ["name", "match", "backend"]
+                    properties:
+                      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:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: ["endpoint", "service"]
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+                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:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: [ "endpoint", "service" ]
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+    - name: v2beta1
+      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[].backend.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: ["tcp"]
+                - required: ["stream"]
+              properties:
+                http:
+                  type: array
+                  minItems: 1
+                  items:
+                    type: object
+                    oneOf:
+                      - required: ["name", "match", "backend"]
+                      - 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
+                      backend:
+                        type: object
+                        properties:
+                          serviceName:
+                            type: string
+                            minLength: 1
+                          servicePort:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: ["endpoint", "service"]
+                          weight:
+                            type: integer
+                            minimum: 0
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+                      backends:
+                        type: array
+                        minItems: 1
+                        items:
+                          type: object
+                          properties:
+                            serviceName:
+                              type: string
+                              minLength: 1
+                            servicePort:
+                              type: integer
+                              minimum: 1
+                              maximum: 65535
+                            resolveGranualrity:
+                              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-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"]
+                          keyAuth:
+                            type: object
+                            properties:
+                              header:
+                                type: string
+                        required:
+                          - enable
+                tcp:
+                  type: array
+                  minItems: 1
+                  items:
+                    type: object
+                    required: ["name", "match", "backend"]
+                    properties:
+                      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:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: ["endpoint", "service"]
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
+                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:
+                            type: integer
+                            minimum: 1
+                            maximum: 65535
+                          resolveGranualrity:
+                            type: string
+                            enum: [ "endpoint", "service" ]
+                          subset:
+                            type: string
+                        required:
+                          - serviceName
+                          - servicePort
diff --git a/samples/deploy/crd/v1/ApisixTls.yaml 
b/samples/deploy/crd/v1/ApisixTls.yaml
new file mode 100644
index 0000000..465e101
--- /dev/null
+++ b/samples/deploy/crd/v1/ApisixTls.yaml
@@ -0,0 +1,187 @@
+#
+# 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:
+  name: apisixtlses.apisix.apache.org
+spec:
+  group: apisix.apache.org
+  scope: Namespaced
+  names:
+    plural: apisixtlses
+    singular: apisixtls
+    kind: ApisixTls
+    shortNames:
+    - atls
+  preserveUnknownFields: false
+  versions:
+  - name: v1
+    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])$
diff --git a/samples/deploy/crd/v1/ApisixUpstream.yaml 
b/samples/deploy/crd/v1/ApisixUpstream.yaml
new file mode 100644
index 0000000..d9b0e07
--- /dev/null
+++ b/samples/deploy/crd/v1/ApisixUpstream.yaml
@@ -0,0 +1,387 @@
+#
+# 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:
+  name: apisixupstreams.apisix.apache.org
+spec:
+  group: apisix.apache.org
+  scope: Namespaced
+  names:
+    plural: apisixupstreams
+    singular: apisixupstream
+    kind: ApisixUpstream
+    shortNames:
+      - au
+  versions:
+    - name: v1
+      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
+                    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
+                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
+                            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
diff --git a/samples/deploy/crd/v1beta1/kustomization.yaml 
b/samples/deploy/crd/v1/kustomization.yaml
similarity index 100%
rename from samples/deploy/crd/v1beta1/kustomization.yaml
rename to samples/deploy/crd/v1/kustomization.yaml
diff --git a/samples/deploy/crd/v1beta1/ApisixConsumer.yaml 
b/samples/deploy/crd/v1beta1/ApisixConsumer.yaml
deleted file mode 100644
index 11b605b..0000000
--- a/samples/deploy/crd/v1beta1/ApisixConsumer.yaml
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# 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/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixconsumers.apisix.apache.org
-spec:
-  group: apisix.apache.org
-  versions:
-    - name: v2alpha1
-      served: true
-      storage: true
-  scope: Namespaced
-  names:
-    plural: apisixconsumers
-    singular: apisixconsumer
-    kind: ApisixConsumer
-    shortNames:
-      - ac
-  preserveUnknownFields: false
-  subresources:
-    status: {}
-  validation:
-    openAPIV3Schema:
-      type: object
-      properties:
-        spec:
-          type: object
-          required:
-            - authParameter
-          properties:
-            authParameter:
-              type: object
-              oneOf:
-                - required: ["basicAuth"]
-                - required: ["keyAuth"]
-              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
diff --git a/samples/deploy/crd/v1beta1/ApisixRoute.yaml 
b/samples/deploy/crd/v1beta1/ApisixRoute.yaml
deleted file mode 100644
index c546fa4..0000000
--- a/samples/deploy/crd/v1beta1/ApisixRoute.yaml
+++ /dev/null
@@ -1,324 +0,0 @@
-#
-# 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/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixroutes.apisix.apache.org
-spec:
-  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[].backend.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
-  group: apisix.apache.org
-  versions:
-    - name: v1
-      served: true
-      storage: false
-      deprecated: true
-    - name: v2alpha1
-      served: true
-      storage: false
-    - name: v2beta1
-      served: true
-      storage: true
-  scope: Namespaced
-  names:
-    plural: apisixroutes
-    singular: apisixroute
-    kind: ApisixRoute
-    shortNames:
-      - ar
-  preserveUnknownFields: true # we have to enable it since plugin config
-  subresources:
-    status: {}
-  validation:
-    openAPIV3Schema:
-      type: object
-      properties:
-        spec:
-          type: object
-          anyOf:
-            - required: ["http"]
-            - required: ["tcp"]
-            - required: ["stream"]
-          properties:
-            http:
-              type: array
-              minItems: 1
-              items:
-                type: object
-                oneOf:
-                  - required: ["name", "match", "backend"]
-                  - 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
-                  backend:
-                    type: object
-                    properties:
-                      serviceName:
-                        type: string
-                        minLength: 1
-                      servicePort:
-                        type: integer
-                        minimum: 1
-                        maximum: 65535
-                      resolveGranualrity:
-                        type: string
-                        enum: ["endpoint", "service"]
-                      weight:
-                        type: integer
-                        minimum: 0
-                      subset:
-                        type: string
-                    required:
-                      - serviceName
-                      - servicePort
-                  backends:
-                    type: array
-                    minItems: 1
-                    items:
-                      type: object
-                      properties:
-                        serviceName:
-                          type: string
-                          minLength: 1
-                        servicePort:
-                          type: integer
-                          minimum: 1
-                          maximum: 65535
-                        resolveGranualrity:
-                          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
-                    required:
-                      - name
-                      - enable
-                  authentication:
-                    type: object
-                    properties:
-                      enable:
-                        type: boolean
-                      type:
-                        type: string
-                        enum: ["basicAuth", "keyAuth"]
-                      keyAuth:
-                        type: object
-                        properties:
-                          header:
-                            type: string
-                    required:
-                      - enable
-            tcp:
-              type: array
-              minItems: 1
-              items:
-                type: object
-                required: ["name", "match", "backend"]
-                properties:
-                  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:
-                        type: integer
-                        minimum: 1
-                        maximum: 65535
-                      resolveGranualrity:
-                        type: string
-                        enum: ["endpoint", "service"]
-                      subset:
-                        type: string
-                    required:
-                      - serviceName
-                      - servicePort
-            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:
-                        type: integer
-                        minimum: 1
-                        maximum: 65535
-                      resolveGranualrity:
-                        type: string
-                        enum: [ "endpoint", "service" ]
-                      subset:
-                        type: string
-                    required:
-                      - serviceName
-                      - servicePort
diff --git a/samples/deploy/crd/v1beta1/ApisixTls.yaml 
b/samples/deploy/crd/v1beta1/ApisixTls.yaml
deleted file mode 100644
index c4e1858..0000000
--- a/samples/deploy/crd/v1beta1/ApisixTls.yaml
+++ /dev/null
@@ -1,187 +0,0 @@
-#
-# 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/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixtlses.apisix.apache.org
-spec:
-  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
-  group: apisix.apache.org
-  versions:
-  - name: v1
-    served: true
-    storage: true
-  scope: Namespaced
-  names:
-    plural: apisixtlses
-    singular: apisixtls
-    kind: ApisixTls
-    shortNames:
-    - atls
-  preserveUnknownFields: false
-  subresources:
-    status: {}
-  validation:
-    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])$
diff --git a/samples/deploy/crd/v1beta1/ApisixUpstream.yaml 
b/samples/deploy/crd/v1beta1/ApisixUpstream.yaml
deleted file mode 100644
index 3bf9349..0000000
--- a/samples/deploy/crd/v1beta1/ApisixUpstream.yaml
+++ /dev/null
@@ -1,387 +0,0 @@
-#
-# 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/v1beta1
-kind: CustomResourceDefinition
-metadata:
-  name: apisixupstreams.apisix.apache.org
-spec:
-  group: apisix.apache.org
-  versions:
-    - name: v1
-      served: true
-      storage: true
-  scope: Namespaced
-  names:
-    plural: apisixupstreams
-    singular: apisixupstream
-    kind: ApisixUpstream
-    shortNames:
-      - au
-  subresources:
-    status: {}
-  validation:
-    openAPIV3Schema:
-      type: object
-      properties:
-        spec:
-          type: object
-          properties:
-            subsets:
-              type: array
-              items:
-                type: object
-                properties:
-                  name:
-                    type: string
-                    minLength: 1
-                  labels:
-                    type: object
-                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
-            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
-                        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
diff --git a/samples/deploy/kustomization.yaml 
b/samples/deploy/kustomization.yaml
index 32854a0..c175a05 100644
--- a/samples/deploy/kustomization.yaml
+++ b/samples/deploy/kustomization.yaml
@@ -25,4 +25,4 @@ bases:
   - ./admission
   - ./deployment
   - ./rbac
-  - ./crd/v1beta1
+  - ./crd/v1

Reply via email to