zoukankan      html  css  js  c++  java
  • skipper lua 添加luarocks 包管理

    skipper 支持基于lua 的script 扩展,同时设计比较方便的filter模型,让我们可以方便
    进行request、response的扩展,结合lua 社区的包我们可以快速的进行新功能的开发

    环境准备

    • docker-compose 文件
      测试功能,集成了监控功能
    version: "3"
    services:
      skipper:
        #image: dalongrong/skipper:latest
        build: ./
        image: dalongrong/skipper-docker-build-luarocks
        ports:
        - "9090:9090"
        - "9911:9911"
        volumes:
        - "./router.eskip:/router.eskip"
        - "./app.lua:/app.lua"
        command: skipper -enable-ratelimits -enable-prometheus-metrics -routes-file /router.eskip
      g:
        image: grafana/grafana
        ports:
        - "3000:3000"
      web:
        image: nginx
        ports:
        - "8099:80"
      p:
        image: prom/prometheus
        volumes:
        - "./prometheus.yml:/etc/prometheus/prometheus.yml"
        ports:
        - "9091:9090"
    • skipper dockerfile
      使用dockerfile mutilstage 进行构建,拷贝现有二进制包到一个luarocks的容器,
      同时添加了一个uuid 的模块
    FROM dalongrong/skipper:latest as build
    
    FROM abaez/luarocks:lua5.1
    LABEL author="1141591465@qq.com"
    WORKDIR /
    COPY --from=build /usr/bin/skipper /skipper
    COPY --from=build /usr/bin/eskip /eskip
    ENV PATH=$PATH:/
    RUN luarocks install uuid
    
    • uuid lua 包的使用
      app.lua
    local uuid = require("uuid") --- 引用包
    local json = require("json")
    function request(ctx, params)
        -- ctx.serve({
        -- status_code=302,
        -- header={
        -- location="http://www.baidu.com/",
        -- },
        -- })
        ctx.request.header["user_token"]="request_token"
    end
    
    function response(ctx, params)
        ctx.response.header["lua_token"]="dalongdemo";
        -- local user = {
        -- name="dalong",
        -- age=33
        -- }
        local tokeninfo = {
            token=uuid(), --- 使用uuid 包
            status=200
        }
        ctx.serve({
            status_code=200,
            header= {
                ['Content-Type']="application/json",
                lua_token=uuid()
            },
            body=json.encode(tokeninfo)
        })
    end
    • router 配置
    hello: Path("/report/**") ->compress("text/html")-> corsOrigin()->setResponseHeader("TOKEN","dalongdemo")->responseCookie("test-session", "abc", 31536000)->
    setRequestHeader("TOKEN","dalongdemo")-> "http://10.10.17.21:9000/report";
    ## lua 支持
    app: Path("/users/**") -> lua("/app.lua", "myparam=foo", "other=bar") -> "http://www.baidu.com";
    static: Path("/static/*") -> static("/static/", "/root") -> <shunt>;
    

    运行&&测试

    • 启动
    docker-compose up -d
    • 测试

    说明

    集成lua 模块,我们可以方便进行系统的扩展,很方便

    参考资料

    https://github.com/rongfengliang/skipper-prometheus-docker-compose
    https://opensource.zalando.com/skipper/reference/scripts/

  • 相关阅读:
    Navicat for SQLite之外键(05)
    UIButton
    多线程中的API
    UIImageView
    IOS中实现单例
    IOS中的多线程【二】— NSOperation和NSOperationQueue
    IOS中的多线程
    OC中新增的数据类型
    【转】c# DBF数据库导入导出实例
    【经验】学习新知识的经验
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10069214.html
Copyright © 2011-2022 走看看