apisix~ApisixPluginConfig的使用
1. ApisixPluginConfig 的作用
- 插件配置复用:将插件配置定义为独立的资源,供多个路由或服务引用。
- 解耦插件与路由:修改插件配置时,只需更新
ApisixPluginConfig
,无需逐个修改路由。 - 支持复杂配置:避免在
Ingress
的 Annotations 中编写冗长的 JSON。 - plugin_config_id: 通过这种方式添加的插件,将不会在apisix dashboard上显示,这块需要注意,但插件本身是生效的。
2. 使用步骤
(1) 创建 ApisixPluginConfig 资源
定义插件的具体配置(例如限流插件 limit-count
):
apiVersion: apisix.apache.org/v2
kind: ApisixPluginConfig
metadata:
name: limit-config
spec:
plugins:
- name: limit-count
enable: true
config:
_meta:
disable: false #注意这行是必须的,否则在dashboard的路由>高级特性>插件模板配置中会出现白屏的情况
count: 100
time_window: 60
key: remote_addr
policy: local
(2) 在 ApisixRoute 或 Ingress 中引用
通过 plugin_config_name
字段关联到路由:
方式一:在 ApisixRoute
中引用
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: my-route
spec:
http:
- name: rule1
match:
hosts: ["example.com"]
paths: ["/*"]
backends:
- serviceName: my-service
servicePort: 80
# 引用插件配置
plugin_config_name: limit-config
注意:如果apisix-ingress中使用了自已的域名,那网关的域名就失效了,这块需要注意一下
方式二:在 Ingress
中通过注解引用
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
k8s.apisix.apache.org/plugin-config-name: "limit-config" # 指定插件配置名称
spec:
ingressClassName: apisix
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
3. 验证配置
(1) 检查 ApisixPluginConfig 状态
kubectl get apisixpluginconfig limit-config -o yaml
如果是阿里云容器平台上,它会在自定义资源里出现
apisix-dashboard的路由》高级特性》插件模板会展示你的插件配置
(2) 查看 APISIX 路由详情
通过 Admin API 检查路由是否关联了插件:
curl http://<APISIX_ADMIN_IP>:9180/apisix/admin/routes -H 'X-API-KEY: <ADMIN_KEY>'
预期输出中应包含 limit-count
插件的配置。
4. 优势对比
方式 | 维护成本 | 复用性 | 灵活性 | 适用场景 |
---|---|---|---|---|
ApisixPluginConfig |
低 | 高 | 高 | 多个路由共享同一插件 |
Ingress Annotations |
高 | 低 | 中 | 简单插件、单路由配置 |
5. 注意事项
- 作用域限制:
- 默认情况下,
ApisixPluginConfig
是命名空间级别的资源,需确保路由和插件配置在同一命名空间。若需跨命名空间引用,需配置 APISIX Ingress Controller 的scope
参数为cluster
。
- 默认情况下,
- 版本兼容性:
- 确保 APISIX Ingress Controller 版本支持
ApisixPluginConfig
(v2.7+ 推荐使用)。
- 确保 APISIX Ingress Controller 版本支持
- 配置冲突:
- 如果同时在
ApisixRoute
和ApisixPluginConfig
中定义了同名插件,ApisixRoute
中的配置会覆盖ApisixPluginConfig
。
- 如果同时在
6. 高级用法:组合多个插件
可以在一个 ApisixPluginConfig
中定义多个插件:
apiVersion: apisix.apache.org/v2
kind: ApisixPluginConfig
metadata:
name: global-plugins
spec:
plugins:
- name: limit-count
enable: true
config:
_meta:
disable: false
count: 200
time_window: 60
- name: cors
enable: true
config:
_meta:
disable: false
allow_origins: "*"
allow_methods: "GET,POST"
总结
通过 ApisixPluginConfig
可以实现插件的集中管理和复用,特别适合以下场景:
- 多个路由需要相同插件配置(如全局限流、鉴权)。
- 插件配置复杂,需避免在
Ingress
中维护冗长的 JSON。 - 需要动态更新插件配置而不影响路由定义。
如果此前通过 Ingress Annotations
管理插件,可以逐步迁移到 ApisixPluginConfig
,提升配置的可维护性。
apisix~ApisixPluginConfig的使用的更多相关文章
- OpenResty 社区王院生:APISIX 的高性能实践
2019 年 7 月 6 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·上海站,OpenResty 软件基金会联合创始人王院生在活动上做了&l ...
- 再谈 APISIX 高性能实践
2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 主要作者王院生在活动上做了<APISIX ...
- 王院生:Apache APISIX 微服务网关极致性能架构解析
2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...
- APISIX系列 | 使用 docker-apisix 安装APISIX服务
官方仓库:https://github.com/iresty/docker-apisix 官方仓库 拉取 git clone git@github.com:iresty/docker-apisix.g ...
- apisix 基于openresty 的api 网关
apisix 是由openresty 团队开发并开源的微服务api gateway,还不错,官方文档也比较全,同时这个也是一个不错的学习openresty 的项目 以下为来自官方的架构图 插件加载 插 ...
- 网关 apache APISIX
网关 apache - 国内版 Binghttps://cn.bing.com/search?q=%E7%BD%91%E5%85%B3+apache&qs=n&form=QBRE&am ...
- 基于 Apache APISIX 的下一代微服务架构
2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,Apache APISIX PPMC 温铭做了题为 ...
- 从 0 到 1:Apache APISIX 的 Apache 之路
2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,本次活动,邀请了来自Apache APISIX.又 ...
- apisix docker镜像构建及插件化开发
高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...
- apisix网关-构建docker镜像构建及插件化开发
高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...
随机推荐
- SQL注入之联合查询注入
SQL注入之联合查询注入 一.联合查询注入原理 联合查询注入是一种常见的SQL注入攻击手法,其核心原理是利用SQL中的UNION操作符将多个SELECT语句的结果集合并,从而返回一个统一的结果集.在使 ...
- [记录点滴]Spring Boot Admin源码分析笔记
[记录点滴]Spring Boot Admin源码分析笔记 0x00 摘要 本文是过去使用Spring Boot Admin时候分析源码的笔记.虽然比较简单,但是也可以看出Spring Boot Ad ...
- C#/.NET/.NET Core优秀项目和框架2025年1月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...
- 程序员的生产力神器Cursor -新手实操指南
不得不说这个Cursor AI简直是神器中的神器! 代码自动补全就算了,关键是它能直接读懂我的意图,秒懂需求!为你自动生成整个项目级别的代码!开发过程丝滑得像在跟老朋友聊天,代码质量贼高,效率提升10 ...
- C# 全角字符和半角字符相互转换
参考链接:https://blog.csdn.net/willingtolove/article/details/106923879 1. 全角转半角 /// <summary> /// ...
- Ansible 数百台批量操作前期准备工作
Ansible 数百台批量操作前期准备工作 背景: 当前有100台服务器在同一个内网,需要统一部署业务程序并且对主机修改主机名,只提供了一个文档host_user.txt,内容 " IP 用 ...
- JavaGUI - [04] BoxLayout
题记部分 一.简介 为了简化开发,Swing引入了一个新的布局管理器:BoxLayout.BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器: ...
- MySQL - [04] 分布式部署&主从复制&读写分离
一.前言 Q1:为什么需要主从复制? 1.在业务复杂的系统中,有一条SQL语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务.使用主从复制,让主库负责写,从库负责读,这样即使主库出现了锁 ...
- 关于我第二周学习kotlin这门语言
有关kotlin的知识点: 在学习lambda之前,我们先了解一下什么是lambda,简答来说就是一小段代码块,并且我们可以将这个代码块在函数之间传递,这是函数式编程的一个重要特性. 通常我们会需要一 ...
- 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
需求背景 阿里云服务器到期了,正好家里有闲置的电脑,还有公网IP,打算装个linux服务器使用.本文章主要重点是实现远程连接虚拟机内服务器,打通网络连接,更多玩法大家可以自行探索. ps: 公网IP自 ...