You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apisix.apache.org by Chever John <ch...@gmail.com> on 2022/09/01 02:10:20 UTC

[Discussion] A new subproject called APISIX-Operator of the Apache APISIX

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%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637975944415070770%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=hWNECLBuHbCYgC7kqhOqb5Tqgjl4k8znZ%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%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637975944415070770%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=hp%2F3H5sb93Im%2BPijwfh5F%2FlwoHVdUyHqJNTnV1KQn3M%3D&reserved=0>

Re: [Discussion] A new subproject called APISIX-Operator of the Apache APISIX

Posted by Chao Zhang <to...@apache.org>.
Hi,

I also want to know the advantages of this projects when comparing
with Helm Chart? Also, the management of ETCD cluster is
the thing I concerned about.

Best regards
Chao Zhang

https://github.com/tokers

On Thu, Sep 1, 2022 at 10:10 AM Chever John <ch...@gmail.com> wrote:
>
> 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%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637975944415070770%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%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%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=hWNECLBuHbCYgC7kqhOqb5Tqgjl4k8znZ%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%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637975944415070770%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=hp%2F3H5sb93Im%2BPijwfh5F%2FlwoHVdUyHqJNTnV1KQn3M%3D&reserved=0>

Re: [Discussion] A new subproject called APISIX-Operator of the Apache APISIX

Posted by Jintao Zhang <zh...@apache.org>.
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 <ch...@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>
>