Apache APISIX 是 Apache 软件基金会下的顶级项目,由 API7.ai 开发并捐赠。它是一个具有动态、实时、高性能等特点的云原生 API 网关。
你可以使用 APISIX 网关作为所有业务的流量入口,它提供了动态路由、动态上游、动态证书、A/B 测试、灰度发布(金丝雀发布)、蓝绿部署、限速、防攻击、收集指标、监控报警、可观测、服务治理等功能。
官网链接:https://apisix.apache.org/zh/docs/apisix/getting-started/README/
本文主要通过helm进行部署,安装helm方式比较简答这里省略了,需要注意的是apisix的配置路由等信息都是存在etcd的所以需要部署etcd集群,集群可以在k8s内部也可以单独部署,这里使用helm统一部署到k8s集群内了,生产环境如果在k8s集群内一定要将相关存储挂载出来避免服务重启后数据丢失造成不必要的故障问题。
- 先安装helm这里省略直接第二步。
- 设置helm源
helm repo add apisix https://charts.apiseven.com
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
- 部署crd 如果要指定命名空间需要修改,里面有镜像必须科学上网才能拉去下来所以最后提前准备好。
文件中用到的镜像国内地址:
registry.cn-beijing.aliyuncs.com/public-lib/admission-server:v0.5.0
registry.cn-beijing.aliyuncs.com/public-lib/kube-webhook-certgen:v1.1.1
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.5.0/standard-install.yaml
- 部署apisix
ADMIN_API_VERSION=v3
helm install apisix apisix/apisix \
—set gateway.type=NodePort \
—set ingress-controller.enabled=true \
—create-namespace \
—namespace ingress-apisix \
—set ingress-controller.config.apisix.serviceNamespace=ingress-apisix \
—set ingress-controller.config.kubernetes.enableGatewayAPI=true \
—set ingress-controller.config.apisix.adminAPIVersion=$ADMIN_API_VERSION
kubectl get service —namespace ingress-apisix
- 创建路由规则测试。
vim router.yaml
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: test
namespace: test-vice
spec:
http:
- name: test
match:
hosts:
- test001.cdd.group
paths:
- /*
# 根据请求头匹配路由,必须携带头部
#exprs:
#- subject:
# scope: Header
# name: server
# op: Equal
# value: webserver
backends:
- serviceName: new-platform-web
servicePort: 80