简单测试 APISIX2.6 网关
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:
- Apache APISIX Helm Chart :https://apisix.apache.org/zh/docs/helm-chart/apisix/
- Apache APISIX Dashboard Helm Chart: https://apisix.apache.org/zh/docs/helm-chart/apisix-dashboard
- Apache APISIX Ingress Controller Helm Chart: https://apisix.apache.org/zh/docs/helm-chart/apisix-ingress-controller
添加仓库并获取更新
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 网关的更多相关文章
- TODO:Golang UDP连接简单测试慎用Deadline
TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interco ...
- .net orm比较之dapper和Entity Framework6的简单测试比较
.net orm比较之dapper和Entity Framework6的简单测试比较
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...
- ORACLE 数据库简单测试
ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库 非同一个用户的情况,用户是否可以 ...
- Javascript的简单测试环境
在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很好的例子,既让我们得到了一个好用的小工具 ...
- struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)
为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...
- struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)
为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...
- [20190423]简单测试latch nowilling等待模式.txt
[20190423]简单测试latch nowilling等待模式.txt --//我对这个问题的理解就是如果参数willing=0,表示无法获取该latch,直接退出,再寻找类似的latch.--/ ...
- Javascript学习-简单测试环境
Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...
随机推荐
- WIN64内核编程-的基础知识
WIN64内核编程基础班(作者:胡文亮) https://www.dbgpro.com/x64driver 我们先从一份"简历"说起: 姓名:X86或80x86 性别:? 出生 ...
- 神经网络与机器学习 笔记—卷积神经网络(CNN)
卷积神经网络 之前的一些都是考虑多层感知器算法设计相关的问题,这次是说一个多层感知器结构布局相关的问题.来总结卷积神经网络.对于模式分类非常合适.网络的提出所隐含的思想收到了神经生物学的启发. 第一个 ...
- Day006 方法的定义和调用
方法的定义 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 方法包含一个方法头和一个方法体.下面是一个方法的所有部分: 修饰符:修饰符,这 ...
- ATK&CK红队评估实战靶场 (一)的搭建和模拟攻击过程全过程
介绍及环境搭建 靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2 官方靶机说明: 红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练 ...
- VS2017报错 由#define后的分号引发的【“ 应输入“)】
其实并不是第十行分号出现了问题,而是由于在宏定义后面加了分号,修改成这样即可 一开始竟然没看出来--甚至以为是VS中出现"宏可以转换为constexpr"问题--下次要仔细--
- Spring Cloud Alibaba(10)---Sentinel控制台搭建+整合SpringCloudAlibaba
上一篇博客讲了Sentinel一些概念性的东西 Spring Cloud Alibaba(9)---Sentinel概述 这篇博客主要讲 Sentinel控制台搭建,和 整合SpringCloudAl ...
- 语音降噪论文“A Hybrid Approach for Speech Enhancement Using MoG Model and Neural Network Phoneme Classifier”的研读
最近认真的研读了这篇关于降噪的论文.它是一种利用混合模型降噪的方法,即既利用了生成模型(MoG高斯模型),也利用了判别模型(神经网络NN模型).本文根据自己的理解对原理做了梳理. 论文是基于" ...
- 数据库和SQL概述
一.数据库的概念 1.DB 数据库(database):存储数据的"仓库".它保存了一系列有组织的数据. 2.DBMS 数据库管理系统(Database Management Sy ...
- 使用Optional处理null
一.聊聊NullPointerException 相比做Java开发的,见到NullPointerException肯定不陌生吧,可以说见到它深恶痛绝.在开发时认为不会出现NullPointerE ...
- Fio 输出内容的解释
Fio 输出内容的解释 feilianbb 2016-01-11 16:18:54 27828 收藏 19 文章标签: Linux 存储 Fio SSD 性能 翻译原文来源 https://t ...