apisix体验学习

1、什么是apisix?

  Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

2、有了nginx为什么需要apisix?

  1、nginx无法支持集群管理

  2、nginx不支持配置热加载

  APISIX 的出现则解决了上述所有问题,成为了云原生时代最完美的 API 网关

3、apisix应用场景有那些?

  1. 微服务网关:APISIX 可用作微服务架构中的网关,用于管理和转发请求到不同的微服务。它可以提供路由、负载均衡、流量控制、认证授权等功能,使得微服务之间的通信更加简单和可靠。

  2. API 管理:APISIX 可用于管理和控制 API 的访问。它可以提供 API 注册、版本管理、访问控制、限流、监控等功能,帮助开发人员更好地管理和保护他们的 API。

  3. 服务发现:APISIX 可以与服务注册与发现组件(如 Consul、Etcd)集成,实现动态服务发现和自动负载均衡。它可以监控服务的健康状态,并根据配置自动调整请求的转发策略。

  4. 微服务治理:APISIX 提供了一些微服务治理的功能,如限流、熔断、降级和重试等。这些功能可以帮助开发人员提高系统的稳定性和可靠性。

  5. 边缘计算:由于 APISIX 的高性能和低延迟,它适合在边缘计算场景中使用。它可以在边缘节点上部署,为移动应用、物联网设备等提供高效的 API 访问和管理。

  6. API 网关集成:APISIX 可以与其他常见的 API 网关(如 Kong)进行集成,扩展其功能和性能。它可以作为一个插件或模块,与现有的网关架构进行整合,提供更强大的功能和灵活性。

4、为什么要学习apixsix

        1. 微服务架构的兴起:

         2. API 管理和安全性:

         3. 云原生和边缘计算:

        4. 提高开发效率和系统稳定性:APISIX 提供了丰富的功能和工具,如路由、负载均衡、限流、熔断等,可以帮助开发人员提高开发效率和系统稳定性。

   5.个人职业发展

5、部署安装apisix

  部署apisix的方式有很多种,由于我本地已经安装好了k8s环境,下面直接用k8s部署apisix

   1、安装helm,添加apisix 仓库

    wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz
    tar -zxvf  helm-v3.12.1-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/bin/
  2、helm version

    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

 

  

    

    

  

   

  

 

posted @ 2023-07-08 11:15  美好生活我心往之  阅读(216)  评论(0编辑  收藏  举报