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 ...
随机推荐
- 深⼊mysqlONDUPLICATEKEYUPDATE语法的分析
深⼊mysqlONDUPLICATEKEYUPDATE语法的分析mysql "ON DUPLICATE KEY UPDATE" 语法如果在INSERT语句末尾指定了ON DUPLI ...
- 独立看门狗IWDG
一.简介 STM32F10xxx内置两个看门狗(独立看门狗是12位递减计数器,窗口看门狗是7位递减计数器),提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门 ...
- Q:ssh远程连接慢的原因排查
连接linux服务器一般都是使用SSH远程连接的方式.有时,SSH连接速度很慢,大约30s左右,但是ping时一切正常. 问题原因 1.server的sshd会去DNS查找访问的client ip的h ...
- NET中三种主机简单理解
在NET中有三个不同的主机: .NET WebApplication 主机,也称为最小主机. 这是.NET 6中的一个新特性,旨在提供最小的启动时间和内存消耗.最小主机只包括.NET运行时的最基本组件 ...
- 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异 数据库统计信息的作用 在数据库系统中,查询优化在决定应用程序性能方面起着至关重要的作用. 高效的查询依赖于最新的数 ...
- Oracle DBA末日or重生?不会APEX=淘汰!
残酷现实:传统DBA正在消失 "只会调优SQL的DBA,正在沦为数据库修理工!" 掌握APEX的DBA,薪资翻3倍,秒变企业核心资产! 一.DBA的死刑通知书 1. 云+AI:直接 ...
- rgba颜色转换为十六进制
RGBA颜色转HEX 转换步骤: 先将r.g.b分别转换为十六进制,比如 r.g.b分别为 255,则转换后得到的为 FF.FF.FF 将a 乘以 255,然后获得的积的整数部分转换为十六进制,如 a ...
- gitlab - [01] 概述
gitlab! 一.GitLab是什么 GitLab是一个集成了Git仓库管理.持续集成(CI/CD).项目管理.代码审查.包管理和发布在内的全方位DevOps平台.它为软件开发团队提供了从项目规划到 ...
- Flink学习(十八) 状态管理与状态编程
Flink中的状态 由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态:可以认为状态就是一个本地变量,可以被任务的业务逻辑访问:Flink会进行状态管理,包括状态一致性,故障处理以及 ...
- [解决方案]git pull : error: cannot lock ref 'refs/remotes/origin/*' (unable to update local ref)
错误 git pull 报错不能更新本地分支 错误分析 本地分支跟远程分支不匹配 导致更新失败 解决方案 备份自己修改的代码 .git\refs\remotes (文件路径)对应删除你报错的分支 gi ...