apisix~ApisixPluginConfig的利用

打印 上一主题 下一主题

主题 1802|帖子 1802|积分 5408

1. ApisixPluginConfig 的作用


  • 插件设置复用:将插件设置定义为独立的资源,供多个路由或服务引用。
  • 解耦插件与路由:修改插件设置时,只需更新 ApisixPluginConfig,无需逐个修改路由。
  • 支持复杂设置:制止在 Ingress 的 Annotations 中编写冗长的 JSON。
  • plugin_config_id: 通过这种方式添加的插件,将不会在apisix dashboard上显示,这块需要注意,但插件本身是见效的。
2. 利用步骤

(1) 创建 ApisixPluginConfig 资源

定义插件的详细设置(例如限流插件 limit-count):
  1. apiVersion: apisix.apache.org/v2
  2. kind: ApisixPluginConfig
  3. metadata:
  4.   name: limit-config
  5. spec:
  6.   plugins:
  7.   - name: limit-count
  8.     enable: true
  9.     config:
  10.       _meta:
  11.         disable: false #注意这行是必须的,否则在dashboard的路由>高级特性>插件模板配置中会出现白屏的情况
  12.       count: 100
  13.       time_window: 60
  14.       key: remote_addr
  15.       policy: local
复制代码
(2) 在 ApisixRoute 或 Ingress 中引用

通过 plugin_config_name 字段关联到路由:
方式一:在 ApisixRoute 中引用
  1. apiVersion: apisix.apache.org/v2
  2. kind: ApisixRoute
  3. metadata:
  4.   name: my-route
  5. spec:
  6.   http:
  7.   - name: rule1
  8.     match:
  9.       hosts: ["example.com"]
  10.       paths: ["/*"]
  11.     backends:
  12.       - serviceName: my-service
  13.         servicePort: 80
  14.     # 引用插件配置
  15.     plugin_config_name: limit-config
复制代码
注意:如果apisix-ingress中利用了自已的域名,那网关的域名就失效了,这块需要注意一下
方式二:在 Ingress 中通过注解引用
  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4.   name: my-ingress
  5.   annotations:
  6.     k8s.apisix.apache.org/plugin-config-name: "limit-config"  # 指定插件配置名称
  7. spec:
  8.   ingressClassName: apisix
  9.   rules:
  10.   - host: example.com
  11.     http:
  12.       paths:
  13.       - path: /
  14.         pathType: Prefix
  15.         backend:
  16.           service:
  17.             name: my-service
  18.             port:
  19.               number: 80
复制代码
3. 验证设置

(1) 检查 ApisixPluginConfig 状态
  1. kubectl get apisixpluginconfig limit-config -o yaml
复制代码

如果是阿里云容器平台上,它会在自定义资源里出现

apisix-dashboard的路由》高级特性》插件模板会展示你的插件设置

(2) 查看 APISIX 路由详情

通过 Admin API 检查路由是否关联了插件:
  1. 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+ 推荐利用)。

  • 设置冲突

    • 如果同时在 ApisixRoute 和 ApisixPluginConfig 中定义了同名插件,ApisixRoute 中的设置会覆盖 ApisixPluginConfig。

6. 高级用法:组合多个插件

可以在一个 ApisixPluginConfig 中定义多个插件:
  1. apiVersion: apisix.apache.org/v2
  2. kind: ApisixPluginConfig
  3. metadata:
  4.   name: global-plugins
  5. spec:
  6.   plugins:
  7.   - name: limit-count
  8.     enable: true
  9.     config:
  10.       _meta:
  11.         disable: false
  12.       count: 200
  13.       time_window: 60
  14.   - name: cors
  15.     enable: true
  16.     config:
  17.        _meta:
  18.          disable: false
  19.       allow_origins: "*"
  20.       allow_methods: "GET,POST"
复制代码
总结

通过 ApisixPluginConfig 可以实现插件的集中管理和复用,特别适合以了局景

  • 多个路由需要相同插件设置(如全范围流、鉴权)。
  • 插件设置复杂,需制止在 Ingress 中维护冗长的 JSON。
  • 需要动态更新插件设置而不影响路由定义。
如果此前通过 Ingress Annotations 管理插件,可以逐步迁徙到 ApisixPluginConfig,提拔设置的可维护性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

tsx81428

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表