1. Apache Apisix
Apache Apisix 是一个动态,实时,高性能的云原生API网关,提供负载均衡,动态上游,灰度发布,服务熔断,身份认证,可观测性等丰富的流量管理功能;
2. 如何部署
helm repo add apisix https://charts.apiseven.com && helm repo update # 部署apisix-gateway 以及apisix-dashboard
helm upgrade --install apisix apisix/apisix --create-namespace --namespace apisix --set dashboard.enabled=true --set ingress-controller.enabled=true --set ingress-controller.config.apisix.serviceNamespace=apisix# http://apisix-dashboard.liyuan.com:31080/
# 默认账号密码均为 admin
k apply -f ./apisix-dashboard-ingress.yaml# 部署apisix ingress-controller# 可做CRD以及Ingress Controller功能,可自行选择
helm install apisix-ingress-controller apisix/apisix-ingress-controller --namespace ingress-apisix --create-namespace# 测试apisix-ingresscontroller CRD 功能
# 如果登录UI能看到该apply的规则,说明CRD正常工作
k apply -f apisix-test-crd.yaml
# apisix-dashboard-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: apisix-dashboard-ingressnamespace: apisixannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:ingressClassName: nginxrules:- host: apisix-dashboard.liyuan.comhttp:paths:- path: /pathType: Prefixbackend:service:name: apisix-dashboardport:number: 80
# apisix-test-crd.yaml
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:name: httpbin-route
spec:http:- name: route-1match:hosts:- httpbin.orgpaths:- /*backends:# 此处是任意一个同namespace下的服务- serviceName: nginx-deployment-svcservicePort: 80
2.1. 注意事项
(1) 需要检查apisix-dashboard configmap中allow_domain
一项,并确保该值包括 0.0.0.0/16
, 表示任意ip均能访问该dashboard
(2) 若apisix-ingresscontroller无法连接上apisix-gateway,但是apisix-gateway服务都是正常状态, 检查 apisix-ingresscontroller config 中 adminAPIVersion
, 可以尝试切换 v2
或v3
版本;
(3) etcd 维护起来有些难度,需要自行斟酌,可以参考 APISIX Ingress Controller:一种无需 etcd 的轻量级部署方式
3. 参考
apisix-helm-chart
APISIX Ingress Controller:一种无需 etcd 的轻量级部署方式