尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

APISIX Admin API 实操指南:6 条命令打通第一条转发路由

APISIX Admin API 实操指南:6 条命令打通第一条转发路由 APISIX Admin API 实操指南6 条命令打通第一条转发路由【免费下载链接】apisixThe Cloud-Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/ap/apisixAPISIX Admin API 是一组 HTTP 管理接口建路由、挂上游、开鉴权限流、查配置全靠它完成。这篇实操带你用 curl 敲通第一条转发路由顺路把排错和生产化事项一次讲清楚。接入 Admin API第一次调用怎么配APISIX 默认开启管理功能enable_admin: true管理端口固定9180所有接口挂在/apisix/admin前缀下。你只需要在 conf/config.yaml 里确认三项deployment: admin: admin_key: - name: admin key: f3a9b2c4d5e6f7a8b9c0d1e2f3a4b5c6 role: admin allow_admin: - 127.0.0.0/24 admin_listen: ip: 127.0.0.1 port: 9180第一条命令用 GET 拉一次路由集合——能返回 JSON 而不是报错说明网络和认证都通了export ADMIN_KEYf3a9b2c4d5e6f7a8b9c0d1e2f3a4b5c6 curl http://127.0.0.1:9180/apisix/admin/routes -H X-API-KEY: $ADMIN_KEY之后所有请求都带X-API-KEY头。key 要求 32 或 64 位十六进制role决定能读还是能写admin可写viewer只读详见 官方文档。让一个请求转发出去创建第一条路由拿短内容平台的播放接口举例v.shortvid.io域名下/play/*的请求要打到后端机器。PUT 带 id 是幂等的——重复执行同一条命令只是覆盖不会建出第二个路由{ uri: /play/*, host: v.shortvid.io, name: play-ss-route, plugins: { limit-count: { count: 50, time_window: 10 } }, upstream: { type: roundrobin, nodes: { 10.20.1.11:8080: 1, 10.20.1.12:8080: 1 } } }对应请求是PUT http://127.0.0.1:9180/apisix/admin/routes/1请求体就是上面这份 JSON。匹配字段分别命中谁看这张表一条请求只要命中其中一条路由即可字段命中的对象说明uri路径前缀最常用*做通配host请求的 Host 域名支持泛域名*.shortvid.iomethodsHTTP 方法如[GET,POST]remote_addr客户端来源 IPCIDR 写法vars任意 Nginx 变量如[arg_q,,1]priority路由重叠时定胜负数值大者优先保存成功后用这条命令从数据面验证转发是否生效curl -s http://127.0.0.1:9080/play/88231 -H Host: v.shortvid.io能收到后端 200 就说明链路通了。把流量摊到多个后端上游与健康检查节点数量少、又只被一条路由使用直接内联upstream就够用当多条路由共享同一组后端时把它抽成独立的 upstream 资源路由里只需写upstream: { id: play-ss }。负载均衡算法选型各一句话roundrobin轮流分配最稳的默认项least_conn给活跃连接最少的节点适合各请求耗时不均的场景chash一致性哈希同一个 key 永远落同一个节点适合要缓存亲和的业务ewma按近期响应速度挑节点慢后端会被自动绕开。健康检查怎么配不做主动探测的话节点挂了请求会一直打到超时用户干等。开启主动检查后网关就像值班员一样定时敲每个节点的/health连续失败达到阈值就把节点摘出轮转后续探测成功再自动放回。关键字段checks.active.type/http_path探测方式与健康端点healthy.successes恢复判定连续成功几次unhealthy.http_failures摘除判定连续失败几次active.timeout单次探测超时。给接口加把锁 鉴权与限流插件其实有四个可挂的层级global_rules整个网关、service多条路由共用、route某条路由、consumer某个调用方。经验上凭证放 consumer流控放 route。先建消费者。这里的secret就是客户端签 JWT 用的密钥创建接口为PUT /apisix/admin/consumers/sv-merchant{ username: sv-merchant, desc: 商家端播放流调用方, plugins: { jwt-auth: { secret: b3k2p1q9w8e7r5t3, algorithm: HS256, exp: 86400 } } }客户端拿这个 secret 用 HS256 签出 JWT放在Authorization: Bearer token头里发过来jwt-auth 插件校验不过就直接拒绝。限流挂在路由上比如路由plugins里的limit-count配置count: 50, time_window: 10, key: http_x_svid含义是同一个调用方标识 10 秒最多 50 次超出返回 503多网关节点要共享计数器时把policy设成redis实现细节见 limit-count 源码。上线前查一查 配置校验与常见报错JSON 拿不准时别直接 PUT先丢给校验接口它只做 schema 检查、不落库通过返回 200失败会告诉你具体哪个字段不对。curl http://127.0.0.1:9180/apisix/admin/schema/validate/routes \ -H X-API-KEY: $ADMIN_KEY -X POST -d { uri: /play/*, upstream: { type: roundrobin, nodes: { 10.20.1.11:8080: 1 } } }401 是哪里没配对状态码多半发生了什么先查哪里401key 没带、写错、权限不够头部拼写与 key 值viewer 角色不能写400请求体没过 schema错误信息会点名具体字段先 validate 再改404资源不存在或路径拼错资源类型名routes/upstreams 等和 id409唯一字段被别的资源占了换个 id/name或先删旧资源错误响应都带error_msg字段请求体有格式问题时还会回显req_body方便对照。配置多了怎么办 批量操作与查询路由从几条变几十条后一条一条 PUT 就太累了。Admin API 默认是 v3 版本POST 到集合路径时请求体可以是一个 JSON 数组一次写入多条列表查询则原生支持分页page_size限 10~500和按字段过滤。把这个脚本存下来发版时复用#!/bin/bash # deploy_routes.sh —— 批量下发 分页巡检 HOSThttp://127.0.0.1:9180/apisix/admin KEYX-API-KEY: $ADMIN_KEY # 批量创建routes-batch.json 内容是 JSON 数组 curl $HOST/routes -H $KEY -X POST -d ./routes-batch.json # 分页拉取第 2 页每页 20 条 curl $HOST/routes?page2page_size20 -H $KEY # 按字段过滤只拿指定 name 的路由 curl $HOST/routes?nameplay-ss-route -H $KEY批量写、翻页查、按名筛三段合在一起塞进 CI就能做到每次发版自动同步网关配置。生产化清单白名单收紧allow_admin只放行运维机所在网段别留空全开监听收敛admin_listen.ip指向127.0.0.1或内网管理网段不暴露公网密钥分工给监控系统发viewer只读 key写操作单独用adminkey定期轮换监控接入建一条 metrics 路由挂prometheus插件把 QPS、上游状态暴露出去再让 Prometheus 定期抓取。以上命令都可以原样搬进你的运维脚本——Admin API 说到底就是普通的 HTTP 接口shell 能敲任何语言的客户端同样能调。【免费下载链接】apisixThe Cloud-Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/ap/apisix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表