Apache APISIX for Kubernetes
Use Apache APISIX for Kubernetes Ingress.
All configurations in apisix-ingress-controller
are defined with Kubernetes CRDs (Custom Resource Definitions).
Support configuring plugins, service registration discovery mechanism for upstreams, load balancing and more in Apache APISIX.
apisix-ingress-controller
is an Apache APISIX control plane component. Currently it serves for Kubernetes clusters. In the future, we plan to separate the submodule to adapt to more deployment modes, such as virtual machine clusters.
The technical architecture of apisix-ingress-controller
:
Status
This project is currently general availability.
Features
- Declarative configuration for Apache APISIX with Custom Resource Definitions(CRDs), using k8s yaml struct with minimum learning curve.
- Hot-reload during yaml apply.
- Native Kubernetes Ingress (both
v1
andv1beta1
) support. - Auto register k8s endpoint to upstream (Apache APISIX) node.
- Support load balancing based on pod (upstream nodes).
- Out of box support for node health check.
- Plug-in extension supports hot configuration and immediate effect.
- Support SSL and mTLS for routes.
- Support traffic split and canary deployments.
- Support TCP 4 layer proxy.
- Ingress controller itself as a pluggable hot-reload component.
- Multi-cluster configuration distribution.
More about comparison among multiple Ingress Controllers.
Internal Architecture
Prerequisites
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
- Hot-reload during yaml apply.
- More convenient canary deployment.
- Verify the correctness of the configuration, safe and reliable.
- Rich plugins and ecology.
- Supports APISIX custom resources and Kubernetes native Ingress resources.
- More active community
Contributor over time
Get started
Todos
- Support UDP definition. #116
- Support GRPC definition. #114
- Add a complete demo. #9
- More todos will display in issues
Documents
FAQ
User stories
- aispeech: Why we create a new k8s ingress controller?(Chinese)
- Tencent Cloud: Why choose Apache APISIX to implement the k8s ingress controller?(Chinese)
Contributing
We welcome all kinds of contributions from the open-source community, individuals and partners.
Community
- Mailing List: Mail to dev-subscribe@apisix.apache.org, follow the reply to subscribe the mailing list.
- QQ Group - 578997126
- - follow and interact with us using hashtag
#ApacheAPISIX
- Bilibili video
Milestone
Terminology
- Ingress APISIX: the whole service that contains the proxy (Apache APISIX) and ingress controller (apisix ingress controller).
- apisix-ingress-controller: the ingress controller component.
How to contribute
Most of the contributions that we receive are code contributions, but you can also contribute to the documentation or simply report solid bugs for us to fix.
For new contributors, please take a look at issues with a tag called Good first issue or Help wanted.
How to report a bug
-
Ensure the bug was not already reported by searching on GitHub under Issues.
-
If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.