Hi, I have the following things to know:
* What is the goal of this project? which are not within its scope * We know that there are already many projects, including Ingress and Dashboard, which can be installed and deployed through Helm. What advantages does this project have over Helm charts? * Focusing on APISIX itself, it needs etcd, will the etcd life cycle be managed? * APISIX also has some external plugins, is it possible to manage the life cycle of external plugins through this project? * If there is such a project, then I hope its CRD is carefully designed to be a project as extensible as prometheus-operator. Honestly, I like the operator pattern, and I like Helm too. But I don't want to discuss which of the two is better here, it's a question that is often discussed in the community. I am more concerned about what value it can bring to the APISIX community and to our users. Of course, if a project is born, I also want to know who is willing to maintain it and let it grow. Best Jintao Zhang 在 2022年9月1日星期四,Chever John <cheverjonat...@gmail.com> 写道: > Hi, community, > > > I would like to start a discussion about the feasibility of an APISIX > sub-project called APISIX-Operator. > > > *Background* > > When I got involved in formal enterprise-level development, I found that a > proper Kubernetes Operator would quickly improve the project's development > progress. Currently, I have a simple apisix-operator demo. You can refer to > this link[1]. > > > The Kubernetes Operator is a way to package, deploy, and manage Kubernetes > applications. Kubernetes applications are deployed on Kubernetes and > collected using the Kubernetes API and kubectl tools. Kubernetes operator > is an application-specific controller that extends the capabilities of the > Kubernetes API to create, configure, and manage instances of complex > applications on behalf of Kubernetes users. For more information, refer to > this article[2]. > > > *Some advantages* > > I propose to create a subproject APISIX-operator of APISIX. The benefits > include the following. > > 1. it is clear that this project will add a way for the community to use > APISIX and that this approach will be more suitable for enterprise-level > automated development and management. > > 2. Potentially, the project will increase the community's activity and > promote the community's health and the APISIX project. > > > *After adoption* > > If the community adopts this suggestion, I would like to discuss a few > points regarding the features of the apisix-operator. > > 1. whether the community version of apisix-operator applies to cluster > scope or namespace scope (if you are confused, check out this > documentation[3]. > > 2. How do we specify where to store some internal go codes and some naming? > > 3. How to start the contribution process based on my simple demo[1]. > > > *The ideal result I want to achieve* > > 1. Eventually this project was uploaded to OperatorHub[4] for use. > > 2. Eventually this project was reasonably well maintained by the community. > > > *Conclusion* > > I will produce a full proposal after this discussion. > > > Thanks, > > Chenwei Jiang (CheverJohn) > > [1] https://github.com/chever-john/apisix-operator/ > <https://nam12.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fgithub.com%2Fchever-john%2Fapisix- > operator%2F&data=05%7C01%7C%7C5e8ef73b210d4b8e4bb808da8bbdc4f8% > 7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637975944415070770%7CUnknown% > 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik > 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=pGam% > 2BJuoGwvobibqjUl8R6RbzGM3G9IWQWO8C186t5A%3D&reserved=0> > [2] > https://www.redhat.com/en/topics/containers/what-is-a-kubernetes-operator > <https://nam12.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.redhat.com%2Fen%2Ftopics%2Fcontainers% > 2Fwhat-is-a-kubernetes-operator&data=05%7C01%7C% > 7C5e8ef73b210d4b8e4bb808da8bbdc4f8%7C84df9e7fe9f640afb435aaaaaaaa > aaaa%7C1%7C0%7C637975944415070770%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata= > qd99BSzz2763P9ksl2wnK31zbNbbOYx9xJjDn1ZbNfc%3D&reserved=0> > [3] > https://sdk.operatorframework.io/docs/building-operators/ > golang/operator-scope/ > <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsdk. > operatorframework.io%2Fdocs%2Fbuilding-operators%2Fgolang% > 2Foperator-scope%2F&data=05%7C01%7C%7C5e8ef73b210d4b8e4bb808da8bbdc4f8% > 7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637975944415070770%7CUnknown% > 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik > 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=hWNECLBuHbCYgC7kqhOqb5Tqgjl4k8 > znZ%2FUbiWjn02Q%3D&reserved=0> > [4] https://operatorhub.io/ > <https://nam12.safelinks.protection.outlook.com/?url= > https%3A%2F%2Foperatorhub.io%2F&data=05%7C01%7C% > 7C5e8ef73b210d4b8e4bb808da8bbdc4f8%7C84df9e7fe9f640afb435aaaaaaaa > aaaa%7C1%7C0%7C637975944415070770%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000% > 7C%7C%7C&sdata=hp%2F3H5sb93Im%2BPijwfh5F%2FlwoHVdUyHqJNTnV1KQn3M%3D& > reserved=0> >