apisix体验学习
1、什么是apisix?
Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
2、有了nginx为什么需要apisix?
1、nginx无法支持集群管理
2、nginx不支持配置热加载
APISIX 的出现则解决了上述所有问题,成为了云原生时代最完美的 API 网关
3、apisix应用场景有那些?
-
微服务网关:APISIX 可用作微服务架构中的网关,用于管理和转发请求到不同的微服务。它可以提供路由、负载均衡、流量控制、认证授权等功能,使得微服务之间的通信更加简单和可靠。
-
API 管理:APISIX 可用于管理和控制 API 的访问。它可以提供 API 注册、版本管理、访问控制、限流、监控等功能,帮助开发人员更好地管理和保护他们的 API。
-
服务发现:APISIX 可以与服务注册与发现组件(如 Consul、Etcd)集成,实现动态服务发现和自动负载均衡。它可以监控服务的健康状态,并根据配置自动调整请求的转发策略。
-
微服务治理:APISIX 提供了一些微服务治理的功能,如限流、熔断、降级和重试等。这些功能可以帮助开发人员提高系统的稳定性和可靠性。
-
边缘计算:由于 APISIX 的高性能和低延迟,它适合在边缘计算场景中使用。它可以在边缘节点上部署,为移动应用、物联网设备等提供高效的 API 访问和管理。
-
API 网关集成:APISIX 可以与其他常见的 API 网关(如 Kong)进行集成,扩展其功能和性能。它可以作为一个插件或模块,与现有的网关架构进行整合,提供更强大的功能和灵活性。
4、为什么要学习apixsix
1. 微服务架构的兴起:
2. API 管理和安全性:
3. 云原生和边缘计算:
4. 提高开发效率和系统稳定性:APISIX 提供了丰富的功能和工具,如路由、负载均衡、限流、熔断等,可以帮助开发人员提高开发效率和系统稳定性。
5.个人职业发展
5、部署安装apisix
部署apisix的方式有很多种,由于我本地已经安装好了k8s环境,下面直接用k8s部署apisix
1、安装helm,添加apisix 仓库
version.BuildInfo{Version:"v3.12.1", GitCommit:"f32a527a060157990e2aa86bf45010dfb3cc8b8d", GitTreeState:"clean", GoVersion:"go1.20.4"} #验证是否安装成功
3、添加apixsix repo仓库
helm repo add apisix https://charts.apiseven.com
4、创建apisix所需要的命名空间
kubectl create ns monitoring
kubectl create ns ingress-apisix
5、安装apisix,dashboard,controller
helm install apisix apisix/apisix --set gateway.type=NodePort \ --set ingress-controller.enabled=true \ --set dashboard.enabled=true \ --set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1 \ --set gateway.tls.enabled=true \ --set etcd.volumePermissions.enabled=true \ --set etcd.persistence.storageClass="alicloud-nas-subpath" \ --set etcd.persistence.size="10Gi" \ --set ingress-controller.config.apisix.serviceNamespace=apisix --namespace apisix --create-namespace
#注意:按实际情况填写存储类,不然会一直pending
创建了五个服务资源。
apisix-gateway,处理真实流量,暴露apisix服务;
apisix-admin,它充当控制平面来处理所有配置更,主要用于通过api的方式将路有写入etcd。
apisix-ingress-controller,监听k8s的api 后通过apisix-admin 写入etcd。
apisix-etcd 以及 apisix-etcd-headless 用于 etcd 服务和内部通信。
apisix-dashboard:Apache APISIX 前端界面
安装时碰到下面错误信息。
Error: INSTALLATION FAILED: Get "https://github.com/apache/apisix-helm-chart/releases/download/apisix-2.0.0/apisix-2.0.0.tgz": unexpected EOF,
下载github文件失败,解决办法:多试几次,或者开启vpn。
6、执行安装成功返回的命令
6、配置apisix
1、配置访问dashborad
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: apisix-dashboard namespace: apisix spec: rules: - host: apisix.idcsec.com http: paths: - backend: serviceName: apisix-dashboard servicePort: 80 path: /
2、创建一个 ApisixRoute 资源
apiVersion: apisix.apache.org/v2beta1 kind: ApisixRoute metadata: name: httpserver-route spec: http: - name: httpbin match: hosts: - local.httpbin.org paths: - "/*" backend: serviceName: httpbin servicePort: 80
3、测试
kubectl exec -it -n ${namespace of Apache APISIX} ${Pod name of Apache APISIX} -- curl http://127.0.0.1:9180/apisix/admin/routes -H 'X-API-Key: edd1c9f034335f136f87ad84b625c8f1'
4、查看 apisix-admin 接口 apikey:
export POD_NAME=$(kubectl get pods --namespace apisix -l "app.kubernetes.io/instance=apisix,app.kubernetes.io/name=apisix" -o jsonpath="{.items[0].metadata.name}") kubectl -n apisix exec -it $POD_NAME cat conf/config.yaml |grep key