apisix~升级原始插件的方法

打印 上一主题 下一主题

主题 847|帖子 847|积分 2541

扩展apisix原始插件

当apisix提供的插件不能满意我们要求时,我们可能需要将它的plugin进行个性化扩展,例如一个jwt认证插件jwt-auth,它本身具有验证jwt有用性功能,支持rs256,hs256等常用签名算法,但在验证之后,如果希望将jwt中的用户信息取出来,并放哀求头向上游通报,目前这个插件是不支持的,我们需要扩展一下它,下面看详细的步骤。

  • 下载apisix源代码,找个原来的插件,在上面直接开辟
  • 找到_M.rewirte方法,在解析jwt之后,添加向下一哀求头写入的代码
  1. core.request.add_header(ctx,"sub", jwt_obj.payload.sub)
  2. core.request.add_header(ctx,"preferred_username", jwt_obj.payload.preferred_username)
复制代码

  • 将插件内容修改后,放到我们本身扩展的目次,文件名还是jwt-auth.lua
  • 摆设configmap,我们可以通过下面语句来实现由lua文件到configMap的导入
  1. kubectl create configmap jwt-auth-app-header-config -n apisix --from-file=./jwt-auth-app-header.lua
复制代码

  • 在values.override.yaml文件中,添加jwt-auth的摆设如下
  1. apisix:
  2.   customPlugins:
  3.     enabled: true
  4.     luaPath: "/opt/?.lua"
  5.     plugins:
  6.       - name: "jwt-auth"
  7.         configMap:
  8.           name: "jwt-auth-config"
  9.           mounts:
  10.             - key: "jwt-auth.lua"
  11.               path: "/opt/apisix/plugins/jwt-auth.lua"
复制代码

  • 升级你的apisix服务即可helm -n apisix upgrade  apisix -f ./apisix/values.override.yaml ./apisix,之后重新访问服务,哀求头就出现了sub这些扩展字段

一键更新扩展插件包的方法


  • 遍历插件目次下全部lua文件
  • 天生configmap的名称,以lua文件主名-config为标准
  • 使用kubectl create |  kubectl apply -f -,存在就从文件更新,不存在就从文件创建configmap
详细sh脚本代码
  1. #!/bin/sh
  2. # 不存大就建立,存在就更新
  3. for file in "$(pwd)"/*.lua
  4. do
  5.     if [ -f "$file" ]; then
  6.         echo "通过lua脚本更新configmap配置:$file"
  7.         configName=$(basename "$file" .lua)
  8.         kubectl create configmap "$configName"-config -n apisix --from-file="$file" --dry-run=true -o yaml |  kubectl apply -f -
  9.     fi
  10. done
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表