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. 注意事项

  1. 作用域限制

    • 默认情况下,ApisixPluginConfig 是命名空间级别的资源,需确保路由和插件配置在同一命名空间。若需跨命名空间引用,需配置 APISIX Ingress Controller 的 scope 参数为 cluster
  2. 版本兼容性
    • 确保 APISIX Ingress Controller 版本支持 ApisixPluginConfig(v2.7+ 推荐使用)。
  3. 配置冲突
    • 如果同时在 ApisixRouteApisixPluginConfig 中定义了同名插件,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 可以实现插件的集中管理和复用,特别适合以下场景

  1. 多个路由需要相同插件配置(如全局限流、鉴权)。
  2. 插件配置复杂,需避免在 Ingress 中维护冗长的 JSON。
  3. 需要动态更新插件配置而不影响路由定义。

如果此前通过 Ingress Annotations 管理插件,可以逐步迁移到 ApisixPluginConfig,提升配置的可维护性。

apisix~ApisixPluginConfig的使用的更多相关文章

  1. OpenResty 社区王院生:APISIX 的高性能实践

    2019 年 7 月 6 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·上海站,OpenResty 软件基金会联合创始人王院生在活动上做了&l ...

  2. 再谈 APISIX 高性能实践

    2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 主要作者王院生在活动上做了<APISIX ...

  3. 王院生:Apache APISIX 微服务网关极致性能架构解析

    2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...

  4. APISIX系列 | 使用 docker-apisix 安装APISIX服务

    官方仓库:https://github.com/iresty/docker-apisix 官方仓库 拉取 git clone git@github.com:iresty/docker-apisix.g ...

  5. apisix 基于openresty 的api 网关

    apisix 是由openresty 团队开发并开源的微服务api gateway,还不错,官方文档也比较全,同时这个也是一个不错的学习openresty 的项目 以下为来自官方的架构图 插件加载 插 ...

  6. 网关 apache APISIX

    网关 apache - 国内版 Binghttps://cn.bing.com/search?q=%E7%BD%91%E5%85%B3+apache&qs=n&form=QBRE&am ...

  7. 基于 Apache APISIX 的下一代微服务架构

    2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,Apache APISIX PPMC 温铭做了题为 ...

  8. 从 0 到 1:Apache APISIX 的 Apache 之路

    2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,本次活动,邀请了来自Apache APISIX.又 ...

  9. apisix docker镜像构建及插件化开发

    高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...

  10. apisix网关-构建docker镜像构建及插件化开发

    高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...

随机推荐

  1. SQL注入之联合查询注入

    SQL注入之联合查询注入 一.联合查询注入原理 联合查询注入是一种常见的SQL注入攻击手法,其核心原理是利用SQL中的UNION操作符将多个SELECT语句的结果集合并,从而返回一个统一的结果集.在使 ...

  2. [记录点滴]Spring Boot Admin源码分析笔记

    [记录点滴]Spring Boot Admin源码分析笔记 0x00 摘要 本文是过去使用Spring Boot Admin时候分析源码的笔记.虽然比较简单,但是也可以看出Spring Boot Ad ...

  3. C#/.NET/.NET Core优秀项目和框架2025年1月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...

  4. 程序员的生产力神器Cursor -新手实操指南

    不得不说这个Cursor AI简直是神器中的神器! 代码自动补全就算了,关键是它能直接读懂我的意图,秒懂需求!为你自动生成整个项目级别的代码!开发过程丝滑得像在跟老朋友聊天,代码质量贼高,效率提升10 ...

  5. C# 全角字符和半角字符相互转换

    参考链接:https://blog.csdn.net/willingtolove/article/details/106923879 1. 全角转半角 /// <summary> /// ...

  6. Ansible 数百台批量操作前期准备工作

    Ansible 数百台批量操作前期准备工作 背景: 当前有100台服务器在同一个内网,需要统一部署业务程序并且对主机修改主机名,只提供了一个文档host_user.txt,内容 " IP 用 ...

  7. JavaGUI - [04] BoxLayout

    题记部分 一.简介   为了简化开发,Swing引入了一个新的布局管理器:BoxLayout.BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器: ...

  8. MySQL - [04] 分布式部署&主从复制&读写分离

    一.前言 Q1:为什么需要主从复制? 1.在业务复杂的系统中,有一条SQL语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务.使用主从复制,让主库负责写,从库负责读,这样即使主库出现了锁 ...

  9. 关于我第二周学习kotlin这门语言

    有关kotlin的知识点: 在学习lambda之前,我们先了解一下什么是lambda,简答来说就是一小段代码块,并且我们可以将这个代码块在函数之间传递,这是函数式编程的一个重要特性. 通常我们会需要一 ...

  10. 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器

    需求背景 阿里云服务器到期了,正好家里有闲置的电脑,还有公网IP,打算装个linux服务器使用.本文章主要重点是实现远程连接虚拟机内服务器,打通网络连接,更多玩法大家可以自行探索. ps: 公网IP自 ...