Skip to content

api7/api7-ingress-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API7 Ingress Controller

All configurations in api7-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.

api7-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 api7-ingress-controller:

Architecture

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 and v1beta1) 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.

Get started

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+.

Works with APISIX Dashboard

Currently, APISIX Ingress Controller automatically manipulates some APISIX resources, which is not very compatible with APISIX Dashboard. In addition, users should not modify resources labeled managed-by: api7-ingress-controllers via APISIX Dashboard.

Internal Architecture (Image below to be updated)

module

Apache APISIX Ingress vs. Kubernetes Ingress Nginx

  • The control plane and data plane are separated, which can improve security and deployment flexibility.

  • 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.

  • APISIX Ingress: the whole service that contains the proxy (Apache APISIX) and ingress controller (api7-ingress-controller).

  • api7-ingress-controller: the ingress controller component.