简单测试 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组的实现,对于初学者而言,这无疑是一个很 ...
随机推荐
- 学习Canvas绘图与动画基础 绘制直线(二)
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...
- Win10安装Ubuntu子系统(WSL)
一:设置子系统环境 关闭所有运行的程序,打开 控制面板→卸载程序→启用或关闭windows功能→勾选上适用于Linux的windows子系统 ,然后确定,完成会提示重启电脑,确定重启,等重启电脑后在操 ...
- android之Parcelable
java编程中,为了将对象的状态保存,需要将对象序列化. 在android中,序列化有两种方法可供选择,一个是java自带的序列化方法,只需实现Serializeable接口即可:另一个是androi ...
- Java 在Word中添加数学公式(Latex/MathML)
本文介绍通过Java程序在Word文档中添加数学公式的方法.添加时,可添加latex数学公式或者MathML数学公式.详细内容见下文. 1. 程序环境 Word测试文档:.docx 2013 Word ...
- PostgreSQL条件表达式
条件表达式在日常工作中很多场景都会用到,比如某个字段为空,取另外一个字段:某个值大于多少,取什么字段,小于多少取什么字段等等.那么下面来简单的学习下PostgreSQL有那些条件表达式. 1.CA ...
- mouseenter mouseleave鼠标悬浮离开事件
- docker中运行envoy 报错 cannot bind '0.0.0.0:80': Permission denied
docker-compose文件 version: '3' services: envoy: image: envoyproxy/envoy-alpine:v1.15-latest volumes: ...
- JMeter四种参数化方式
JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号.JMeter一共有四种参数化方式,分别是: CSV Data Set Config Function He ...
- [刷题] 19 Remove Nth Node From End of List
要求 给定一个链表,删除倒数第n个节点 示例 1->2->3->4->5->NULL , n=2 1->2->3->5 边界 n是从0还是从1计 n不合 ...
- 【转载】Python 代码调试技巧
https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Python 代码调试技巧 张 颖2012 年 5 月 03 日发布 ...