首页 > 其他分享 >apisix~升级原始插件的方法

apisix~升级原始插件的方法

时间:2024-05-15 09:30:56浏览次数:19  
标签:插件 jwt auth 升级 lua file apisix

扩展apisix原始插件

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

  1. 下载apisix源代码,找个原来的插件,在上面直接开发
  2. 找到_M.rewirte方法,在解析jwt之后,添加向下一请求头写入的代码
core.request.add_header(ctx,"sub", jwt_obj.payload.sub)
core.request.add_header(ctx,"preferred_username", jwt_obj.payload.preferred_username)
  1. 将插件内容修改后,放到我们自己扩展的目录,文件名还是jwt-auth.lua
  2. 部署configmap,我们可以通过下面语句来实现由lua文件到configMap的导入
kubectl create configmap jwt-auth-app-header-config -n apisix --from-file=./jwt-auth-app-header.lua
  1. 在values.override.yaml文件中,添加jwt-auth的部署如下
apisix:
  customPlugins:
    enabled: true
    luaPath: "/opt/?.lua"
    plugins:
      - name: "jwt-auth"
        configMap:
          name: "jwt-auth-config"
          mounts:
            - key: "jwt-auth.lua"
              path: "/opt/apisix/plugins/jwt-auth.lua"
  1. 升级你的apisix服务即可helm -n apisix upgrade apisix -f ./apisix/values.override.yaml ./apisix,之后重新访问服务,请求头就出现了sub这些扩展字段

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

  • 遍历插件目录下所有lua文件
  • 生成configmap的名称,以lua文件主名-config为标准
  • 使用kubectl create | kubectl apply -f -,存在就从文件更新,不存在就从文件建立configmap

具体sh脚本代码

#!/bin/sh
# 不存大就建立,存在就更新
for file in "$(pwd)"/*.lua
do
    if [ -f "$file" ]; then
        echo "通过lua脚本更新configmap配置:$file"
        configName=$(basename "$file" .lua)
        kubectl create configmap "$configName"-config -n apisix --from-file="$file" --dry-run=true -o yaml |  kubectl apply -f -
    fi
done

标签:插件,jwt,auth,升级,lua,file,apisix
From: https://www.cnblogs.com/lori/p/18192757

相关文章

  • 【django学习-24】自定义插件
    1.ModelForm可以帮助我们生成HTML标签,这种是普通的标签classUserModelForm(forms.ModelForm):classMeta:model=models.UserInfofields=["name","password",]form=UserModelForm()2.如果我们要使用bootstrap的标签,该怎么操作呢?2.1:自定义......
  • CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
    CodeGeeX是支持适配VisualStudio2019的唯一一款国产智能辅助编程工具,已经在VisualStudio趋势上霸榜2周!CodeGeeXv1.0.4版本上线VisualStudio插件市场,带来了多项新功能和性能优化,提升编程体验。新功能亮点速览:一、侧边栏工具箱功能v1.0.4版本中,CodeGeeX新增了侧边栏工具箱......
  • VMware vSphere ESXI升级
    一、登录https://support.broadcom.com/官网,输入帐号和密码,如果没有帐号密码注册一个。 二、softwaer列表并选择“VMwareCloudFoundations”-----MyDownloads 三、点击“VMwarevsphere” 四、选择“定制ISO”输入HP 五、选择自己对应的服务器,点击下载 六、登录......
  • npm插件发布
    闲来无事在npm上发布个插件玩玩,例如我发布的小插件joy-tools注册账号https://www.npmjs.com初始化npminit-y登录npmlogin输入用户名密码邮箱,同时还会给你发邮箱验证码进行输入登录;登录报错一般是npm源地址的问题,切换为原始地址即可发布npmpublish其它指令介绍......
  • 数据库升级PostgreSql+Garnet
    目录前言PostgreSql安装测试额外Nuget安装Person.cs模拟运行Navicate连postgresql解决方案Garnet为什么要选择Garnet而不是RedisRedis不再开源Windows版的Redis是由微软维护的WindowsRedis版本老旧,后续可能不再更新Garnet性能强于Redis安装测试安装可视化工具C#代码连接测试总结......
  • apisix~lua插件开发与插件注册
    开发插件的步骤在APISIX中,要自定义插件,一般需要按照以下步骤进行操作:编写Lua脚本:首先,你需要编写Lua脚本来实现你想要的功能。可以根据APISIX提供的插件开发文档和示例进行编写。将Lua脚本放置到APISIX插件目录:将编写好的Lua脚本文件放置到APISIX的插件目录下,一般是/usr/loc......
  • Photoshop AI生成式填充工具,PS AI怎么用,怎么注册升级PS AI账号?
    Adobe发布全新生成式人工智慧功能——生成式扩展(GenerativeExpand),推进Photoshop的生成式AI功能发展更上一层楼。老牌的PS也加入到AI浪潮中,推出了一个相当炸裂的AI功能。PSAI能用来做什么这是一款功能强大且使用方便的图像处理软件,它采用了AdobeFirefly提供的AI绘图技术,可以......
  • apisix~自定义插件的部署
    参考https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-luahttps://apisix.apache.org/docs/apisix/next/plugin-develop/https://apisix.apache.org/docs/apisix/next/plugins/prometheus/https://apisix.apache.org/blog/2022/02/16/file-logge......
  • vite 自定义插件获取打包时长
    //vite.config.ts//打包时间functionbuildTimePlugin(mode){console.log('mode:>>',mode)return{name:'build-time',//在buildStart阶段设置初始值buildStart(){this.startTime=Date.now()if(mode!==&......
  • 重大升级 | OpenSCA SaaS全面接入供应链安全情报!
    结合社区用户反馈及研发小伙伴的积极探索,OpenSCA项目组再次发力,SaaS版本重大升级啦!用户的需求是OpenSCA前进的动力,欢迎更多感兴趣的朋友们积极试用和反馈~ 更新内容  1全面接入云脉XSBOM供应链安全情报 2强大的资产全局管理页面  更新说明 1.云脉XSBO......