Apache APISIX是一个动态的、实时的、高性能的 API 网关。它提供丰富的流量管理功能,例如负载均衡、动态上游服务、金丝雀发布、断路、身份验证、可观察性等。您可以使用 Apache APISIX 来处理传统的南北流量,以及服务之间的东西流量。2019 年 10 月份,深圳支流科技把网关 APISIX 贡献给 Apache 基金会,他们提供商业版本,以下内容基于社区版本。

APISIX地址:https://github.com/apache/apisix

DashBoard:https://github.com/apache/apisix-dashboard

中文文档地址:https://apisix.apache.org/zh/docs/apisix/getting-started/

1、安装APISIX 和 APISIX Dashboard

官方文档介绍了源码包、RPM 包、Docker 以及Helm Chart安装方式,这里我们在K8s 环境下使用 apisix, 所以选择使用Helm Chart方式安装,安装文档参见 https://apisix.apache.org/zh/docs/helm-chart/apisix/

日前支流科技提供了一个在线 Helm Charts 仓库 https://charts.apiseven.com, 用户可通过该仓库轻松安装 Apache APISIX、Apache apisix-dashboard 和 Apache apisix-ingress-controller (而不需要提前 clone 对应的项目)。

一共有3个Helm Chart:

添加仓库并获取更新

helm repo add apisix https://charts.apiseven.com
helm repo update

查看仓库中可用的 Charts 包

helm search repo apisix

> helm search repo apisix

NAME                                    CHART VERSION   APP VERSION     DESCRIPTION                                   

apisix/apisix                           0.3.4           2.6.0           A Helm chart for Apache APISIX                

apisix/apisix-dashboard                 0.1.4           2.6.0           A Helm chart for Apache APISIX Dashboard      

apisix/apisix-ingress-controller        0.4.2           0.6.0           Apache APISIX Ingress Controller for Kubernetes

安装 Apache APISIX 到目标 Kubernetes 集群中

helm install apisix apisix/apisix  --set gateway.type = NodePort --set admin.allow.ipList="{0.0.0.0/0}"   --namespace ingress-apisix

创建了四个Service资源,apisix-etcd 和 apisix-etcd-headless是etcd服务, 一个是处理真实流量的apisix-gateway,;另一个是充当控制平面来处理所有配置更改的服务apisix-admin

网关服务类型设置为NodePort,以便客户端可以通过节点 IP 和分配的端口访问 Apache APISIX。

还有一点需要注意的是,该allow.ipList字段要根据Pod CIDR设置进行自定义,请注意我这里偷懒把所有的ip 都打开了,这个在生产环境下是不推荐这么干的。这样apisix-ingress-controller实例才能访问APISIX实例

安装apisix-dashboard也建议通过 Helm Charts 安装,将其安装在与 Apache APISIX 相同的命名空间中

helm install apisix-dashboard apisix/apisix-dashboard --namespace ingress-apisix

安装 apisix-ingress-controller

通过 Helm Charts 安装 apisix-ingress-controller,建议将其安装在与 Apache APISIX 相同的命名空间中。

helm install apisix-ingress-controller apisix/apisix-ingress-controller   --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1  --namespace apisix-gateway

上述命令中使用的管理密钥是默认的,如果您在部署 APISIX 时更改了管理密钥配置,请记住在此处更改。将image.tag 更改为您想要的 apisix-ingress-controller 版本。

kubectl get service --namespace apisix-gateway 检测一下是否成功安装了:

访问apisix-dashboard 的默认用户名/密码是admin/admin:

登录成功进入控制台

我们下面部署一个asp.net core应用程序来测试一下apisix:

我选用asp.net core 的官方示例:https://github.com/dotnet/dotnet-docker/tree/main/samples/aspnetapp ,创建一个 Deployment:aspnetappdemo 和 Service:aspnetdemo

apiVersion: apps/v1

kind: Deployment

metadata:
   annotations:
     deployment.kubernetes.io/revision: "1"
   name: aspnetappdemo
   namespace: default

spec:
   progressDeadlineSeconds: 600
   replicas: 1
   revisionHistoryLimit: 10
   selector:
     matchLabels:
       workload.user.cattle.io/workloadselector: apps.deployment-default-aspnetappdemo
   strategy:
     rollingUpdate:
       maxSurge: 25%
       maxUnavailable: 25%
     type: RollingUpdate
   template:
     metadata:
       labels:
         workload.user.cattle.io/workloadselector: apps.deployment-default-aspnetappdemo
     spec:
       containers:
       - image: mcr.microsoft.com/dotnet/samples:aspnetapp
         imagePullPolicy: Always
         name: container-0
         resources: {}
         terminationMessagePath: /dev/termination-log
         terminationMessagePolicy: File
       dnsPolicy: ClusterFirst
       restartPolicy: Always
       schedulerName: default-scheduler
       securityContext: {}
       terminationGracePeriodSeconds: 30

----------------------------------------------------------------------------------------------------

apiVersion: v1

kind: Service

metadata:
   name: aspnetdemo
   namespace: default 

spec:
   clusterIP: 10.43.240.212
   clusterIPs:
   - 10.43.240.212
   externalTrafficPolicy: Cluster
   ports:
   - name: asphttp
     nodePort: 30002
     port: 80
     protocol: TCP
     targetPort: 80
   selector:
     workload.user.cattle.io/workloadselector: apps.deployment-default-aspnetappdemo
   sessionAffinity: None
   type: LoadBalancer

使用apisix-dashboard 创建一个上游服务代表我们的aspnetdemo:aspnetdemo.default.svc.cluster.local,在 APISIX 控制台的「上游」菜单中,创建一个 APISIX Upstream。如下图所示:

接下来就是创建一个APISIX Route,字面意思就是路由,通过定义一些规则来匹配客户端的请求,然后根据匹配结果加载并执行相应的 插件,并把请求转发给到指定 Upstream。

点击下一步,选择上游服务aspnetdemo:

点击下一步,关于插件部门后面的问题后续会陆续更新。

现在,我们来请求 APISIX 网关,转发请求到后端服务。 http://13.72.208.130:31856/

好了,暂时先了解到这里。

简单测试 APISIX2.6 网关的更多相关文章

  1. TODO:Golang UDP连接简单测试慎用Deadline

    TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interco ...

  2. .net orm比较之dapper和Entity Framework6的简单测试比较

    .net orm比较之dapper和Entity Framework6的简单测试比较

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...

  4. ORACLE 数据库简单测试

    ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库  非同一个用户的情况,用户是否可以 ...

  5. Javascript的简单测试环境

    在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很好的例子,既让我们得到了一个好用的小工具 ...

  6. struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)

    为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...

  7. struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)

    为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...

  8. [20190423]简单测试latch nowilling等待模式.txt

    [20190423]简单测试latch nowilling等待模式.txt --//我对这个问题的理解就是如果参数willing=0,表示无法获取该latch,直接退出,再寻找类似的latch.--/ ...

  9. Javascript学习-简单测试环境

    Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...

随机推荐

  1. VMware Workstation中安装Hyper-V

    1:在虚拟机设置中,CPU属性中勾选"Virtualize Intel VT-x/EPT or AMD-V/RVI"来启用虚拟机的CPU支持虚拟化. 2:2.在虚拟机文件所在目录中 ...

  2. 云空调来自 GitHub 的冷气——GitHub 热点速览 v.21.20

    作者:HelloGitHub-小鱼干 万物皆可上云,air-conditioner 是上周火爆小鱼干朋友圈和公众号信息流的云空调项目.第一眼的时候,你会觉得和这个云空调还挺别致的,第二眼,si~~感到 ...

  3. c#私钥加密统一JAVA

    public static string RSADecryptByPavKey(string pavKey,string strEncryptString) { string clearText = ...

  4. 发布声明$\beta$

    一.新功能 \(\beta\)阶段集中开发了3大核心功能:支持模块的嵌套.模型市场.模型推理,这三项基本上都是从零开始.徒手开发的功能,没有轮子可以参照,因此也不具有可以对比的先前版本. 除此之外,开 ...

  5. 放弃模拟器,安卓手机WiFi投屏到Ubuntu

    曾经使用过一些安卓的模拟器,但是特别占用资源,而且很多平时使用的非游戏生活类App都有兼容性问题,自然最终无奈而放弃了. 现在将学习环境迁移到了Ubuntu平台,发现各个方面还是不错的,平时使用的各种 ...

  6. [bug] HMaster启动后几秒消失

    参考 https://blog.csdn.net/weixin_44896798/article/details/97800045 https://blog.csdn.net/liudi1993/ar ...

  7. [OS] 操作系统课程(三)

    工具 源码阅读:understand 源码文档自动生成工具:Doxygen 编译环境:gcc 运行环境:x86机器或QEMU 调试工具:QEMU+(GDB or IDE) IDE:Eclipse-CD ...

  8. [Java] Git

    版本控制 VCS(Version Control System):版本控制系统 主要功能:版本控制.主动提交.中央仓库 中央仓库功能:保存版本历史.同步团队代码 DVCS(Distributed VC ...

  9. traceroute排查网络故障 www.qq.com排查网络故障网络不通 先ping自己

    网络不通 先ping自己 在ping网关 再ping外网 再ping别人的ip 背景需求 Linux 因为其强大的网络处理能力,被广泛用于网关(实例链接)和服务器(实例链接).实际工作中,快速排查这些 ...

  10. vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

    vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 打开编辑,修改如下内容: BOOTPROTO=static #默认dhcp,改为static,表示启用静态 ...