特使lua本地脚本文件

发布于 2025-02-12 20:34:29 字数 1915 浏览 0 评论 0原文

我正在尝试将LUA脚本实现到EVNOY配置文件中 我想要的是在本地lua文件中写下我的lua代码,然后在特使配置文件中将我的脚本文件定为

我的脚本文件这是我的yaml文件:

static_resources:
  listeners:
    - address:
        socket_address:
          address: 0.0.0.0
          port_value: 10000
      filter_chains:
        - filters:
          - name: envoy.filters.network.http_connection_manager
            typed_config: 
              '@type': "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
              stat_prefix: http_proxy
              route_config: 
                name: all
                virtual_hosts:
                  - name: allbackend_cluster
                    domains: 
                      - '*'
                    routes:
                      - match: { prefix: "/"}
                        route:
                          cluster: cluster_wackopicko
              http_filters:
                - name: envoy.filters.http.router
                - name: envoy.lua
                  typed_config:
                    "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
                    inline_code: |
                      function envoy_on_response(response_handle)
                        body_size = response_handle:body():length()
                        response_handle:headers():add("response-body-size", tostring(body_size))
                        response_handle:headers():add("foo", "bar")
                      end

  clusters:
    - name: cluster_wackopicko
      connect_timeout: 1s
      lb_policy: ROUND_ROBIN
      load_assignment:
        cluster_name: cluster_wackopicko
        endpoints:
        - lb_endpoints:
          - endpoint:
              address:
                socket_address:
                  address: 127.0.0.1
                  port_value: 8081

我需要更改此配置文件以将lua代码导出到外部文件中,该文件将位于我的Ubuntu服务器上的/Envoy/Lua/脚本/文件夹中?

I am trying to implement lua script into an evnoy configuration file
What I want is to write my lua code within a local lua file and then scpecify my script file inside the envoy configuration file

This is my yaml file:

static_resources:
  listeners:
    - address:
        socket_address:
          address: 0.0.0.0
          port_value: 10000
      filter_chains:
        - filters:
          - name: envoy.filters.network.http_connection_manager
            typed_config: 
              '@type': "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
              stat_prefix: http_proxy
              route_config: 
                name: all
                virtual_hosts:
                  - name: allbackend_cluster
                    domains: 
                      - '*'
                    routes:
                      - match: { prefix: "/"}
                        route:
                          cluster: cluster_wackopicko
              http_filters:
                - name: envoy.filters.http.router
                - name: envoy.lua
                  typed_config:
                    "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
                    inline_code: |
                      function envoy_on_response(response_handle)
                        body_size = response_handle:body():length()
                        response_handle:headers():add("response-body-size", tostring(body_size))
                        response_handle:headers():add("foo", "bar")
                      end

  clusters:
    - name: cluster_wackopicko
      connect_timeout: 1s
      lb_policy: ROUND_ROBIN
      load_assignment:
        cluster_name: cluster_wackopicko
        endpoints:
        - lb_endpoints:
          - endpoint:
              address:
                socket_address:
                  address: 127.0.0.1
                  port_value: 8081

What I need to change in this config file to export the lua code to external file which will be located in /envoy/lua/scripts/ folder on my ubuntu server ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美煞众生 2025-02-19 20:34:29

Envoy> = 1.23.0

以来,Envoy V1.23.0( and this pr ),您可以在default_source_code中定义脚本。参见文档

示例:

-- /envoy/lua/scripts/myscript.lua

function envoy_on_response(response_handle)
    body_size = response_handle:body():length()
    response_handle:headers():add("response-body-size", tostring(body_size))
    response_handle:headers():add("foo", "bar")
end
name: envoy.filters.http.lua
typed_config:
  "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
  default_source_code: 
    filename: /envoy/lua/scripts/myscript.lua

Envoy≪ 1.23.0

带有较旧版本的版本,您可以使用source_codes带有fileName。 See

但是,您必须添加inline_code这是一个已知的问题

例子:

-- /envoy/lua/scripts/myscript.lua

function add_headers(response_handle)
    body_size = response_handle:body():length()
    response_handle:headers():add("response-body-size", tostring(body_size))
    response_handle:headers():add("foo", "bar")
end
name: envoy.filters.http.lua
typed_config:
  "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
  inline_code: |
    require("envoy.lua.scripts.myscript")

    function envoy_on_response(response_handle)
      add_headers(response_handle)
    end
  source_codes:
    myscript.lua:
      filename: /envoy/lua/scripts/myscript.lua

Envoy >= 1.23.0

Since Envoy v1.23.0 (and this PR), you can define your script in default_source_code. See documentation.

Example:

-- /envoy/lua/scripts/myscript.lua

function envoy_on_response(response_handle)
    body_size = response_handle:body():length()
    response_handle:headers():add("response-body-size", tostring(body_size))
    response_handle:headers():add("foo", "bar")
end
name: envoy.filters.http.lua
typed_config:
  "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
  default_source_code: 
    filename: /envoy/lua/scripts/myscript.lua

Envoy < 1.23.0

With older versions, you can use source_codes with filename. See documentation.

However, you have to add inline_code. This is a known issue.

Example:

-- /envoy/lua/scripts/myscript.lua

function add_headers(response_handle)
    body_size = response_handle:body():length()
    response_handle:headers():add("response-body-size", tostring(body_size))
    response_handle:headers():add("foo", "bar")
end
name: envoy.filters.http.lua
typed_config:
  "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
  inline_code: |
    require("envoy.lua.scripts.myscript")

    function envoy_on_response(response_handle)
      add_headers(response_handle)
    end
  source_codes:
    myscript.lua:
      filename: /envoy/lua/scripts/myscript.lua
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文