gxthrj commented on a change in pull request #48:
URL:
https://github.com/apache/apisix-ingress-controller/pull/48#discussion_r536803451
##########
File path: docs/design.md
##########
@@ -36,6 +36,89 @@ Apache APISIX ingress for Kubernetes.
- match and covert Apisix-ingress-types to Apisix-types before handing the
control over to the above module seven;
-## Sequence Diagram
+## CRD design
-
+Currently `apisix-ingress-controller` CRDs consist of 3 parts:
ApisixRoute/ApisixService/ApisixUpstream. The design follows the following
ideas.
+
+1. The most important part of the gateway is the routing part, which is used
to define the distribution rules of the gateway traffics.
+2. In order to facilitate understanding and configuration, the design
structure of `ApisixRoute` is basically similar to Kubernetes Ingress.
+3. In the design of annotation, the structure of Kubernetes Ingress is used
for reference, but the internal implementation is based on the plug-in of
Apache APISIX.
+4. Both `ApisixRoute` and `ApisixService` can be bound to plug-ins, which is
consistent with Apache APISIX.
+5. In the simplest case, you only need to define `ApisixRoute`, and the
Ingress controller will automatically add `ApisixService` and `ApisixUpstream`.
+6. `ApisixService`, like Apache APISIX service, is a grouping of routes, which
can simplify the configuration complexity of the same plug-in.
+7. `ApisixUpstream` can define some details on Apache APISIX upstream, such as
load balancing/health check, etc.
+
+## Monitoring CRDs
+
+`apisix-ingress-controller` is responsible for interacting with the Kubernetes
Apiserver, applying for accessible resource permissions (RBAC), monitoring
changes, and implementing object conversion within the Ingress controller,
comparing the changes, and then synchronizing to Apache APISIX.
+
+### Timing diagram
+
+
+
+### Conversion structure
+
+`apisix-ingress-controller` provides external configuration methods for CRDs.
It is aimed at operators such as daily operation and maintenance, who often
need to process a large number of routes in batches, hoping to handle all
related services in the same configuration file, and at the same time have
convenient and understandable management capabilities. Apache APISIX is
designed from the perspective of the gateway, and all routes are independent.
This leads to obvious differences in the data structure between the two. One
focuses on batch definition, while the other is discrete implementation.
+
+Taking into account the usage habits of different groups of people, the data
structure of CRDs draws on the data structure of Kubernetes Ingress, and is
basically the same in shape.
+
+A simple comparison is as follows, they have different definitions:
+
+
Review comment:
Done, I change the opacity of backgrounds, with little diff color for
easy to distinguish.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]