Kubernetes K8s大使无过滤政策处理人

Kubernetes K8s大使无过滤政策处理人,kubernetes,filter,ambassador,Kubernetes,Filter,Ambassador,我已经在我的本地和应用插件过滤器中配置了大使,下面是过滤器配置 apiVersion: getambassador.io/v1beta1 kind: Filter metadata: name: "x-dc-filter" spec: Plugin: name: "x-dc-plugin" --- apiVersion: getambassador.io/v1beta1 kind: FilterPolicy metadata: nam

我已经在我的本地和应用插件过滤器中配置了大使,下面是过滤器配置

apiVersion: getambassador.io/v1beta1
kind: Filter
metadata:
  name: "x-dc-filter"
spec:
  Plugin:
    name: "x-dc-plugin"

---
apiVersion: getambassador.io/v1beta1
kind: FilterPolicy
metadata:
  name: "x-dc-filter-policy"
spec:
  rules:
  - host: "*"
    path: "*"
    filters:               
    - name: "x-dc-filter"  
已将plugin.so文件打包为Ambassadocker图像的一部分,并验证该插件在pod中的/etc/ambassador plugins路径中可用。大使一开始就收到了pod的以下日志

Calling Metriton
2020-11-27 06:11:28 diagd 1.9.1 [P75TThreadPoolExecutor-0_1] INFO: B155B245-326B-4CA6-8ECF-A9034B478E5E: 127.0.0.1 "GET /ambassador/v0/diag/" 22ms 200 success
2020/11/27 06:11:35 aggregator: watch hook stderr: 2020-11-27 06:11:35 watch-hook WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020/11/27 06:11:35 aggregator: watch hook stderr: 2020-11-27 06:11:35 watch-hook WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020/11/27 06:11:35 aggregator: watch hook stderr:
2020/11/27 06:11:35 kubernetes:secret|default|*|*: signaling shutdown
2020/11/27 06:11:35 kubernetes:secret|default|*|*: exited
2020/11/27 06:11:35 kubernetes:service|default|*|*: signaling shutdown
2020/11/27 06:11:35 kubernetes:service|default|*|*: exited
2020-11-27 06:11:35 diagd 1.9.1 [P75TAEW] WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020-11-27 06:11:35 diagd 1.9.1 [P75TAEW] WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020-11-27 06:11:36 diagd 1.9.1 [P75TAEW] INFO: configuration updated (complete) from snapshot 3 (S8 L1 G8 C3)
time="2020-11-27 06:11:36" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
time="2020-11-27 06:11:36" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
2020/11/27 06:11:36 aggregator: watch hook stderr: 2020-11-27 06:11:36 watch-hook WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020/11/27 06:11:36 aggregator: watch hook stderr: 2020-11-27 06:11:36 watch-hook WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020/11/27 06:11:36 aggregator: watch hook stderr:
2020-11-27 06:11:37 diagd 1.9.1 [P75TAEW] WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020-11-27 06:11:37 diagd 1.9.1 [P75TAEW] WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020-11-27 06:11:37 diagd 1.9.1 [P75TAEW] INFO: configuration updated (complete) from snapshot 4 (S8 L1 G8 C3)
time="2020-11-27 06:11:37" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
time="2020-11-27 06:11:37" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
2020/11/27 06:11:38 aggregator: watch hook stderr: 2020-11-27 06:11:38 watch-hook WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020/11/27 06:11:38 aggregator: watch hook stderr: 2020-11-27 06:11:38 watch-hook WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020/11/27 06:11:38 aggregator: watch hook stderr:
2020-11-27 06:11:38 diagd 1.9.1 [P75TAEW] WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020-11-27 06:11:38 diagd 1.9.1 [P75TAEW] WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020-11-27 06:11:38 diagd 1.9.1 [P75TAEW] INFO: configuration updated (complete) from snapshot 5 (S8 L1 G8 C3)
time="2020-11-27 06:11:38" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
time="2020-11-27 06:11:38" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
2020-11-27 06:12:27 diagd 1.9.1 [P75TThreadPoolExecutor-0_0] INFO: 44A5439F-C2E4-46C8-9D57-F5F4B6654E72: 127.0.0.1 "GET /ambassador/v0/diag/" 22ms 200 success
2020-11-27 06:13:27 diagd 1.9.1 [P75TThreadPoolExecutor-0_0] INFO: 15FD78F9-B331-4D57-B838-FEB5CB066C82: 127.0.0.1 "GET /ambassador/v0/diag/" 16ms 200 success
2020-11-27 06:13:38 diagd 1.9.1 [P75TAEW] INFO: TIMER reconfiguration: 5, 0.121/0.260/0.406
呼叫Metriton
2020-11-27 06:11:28 diagd 1.9.1[P75TThreadPoolExecutor-0_1]信息:B155B245-326B-4CA6-8ECF-A9034B478E5E:127.0.0.1“GET/ambassador/v0/diag/”22ms 200成功
2020/11/27 06:11:35聚合器:监视挂钩标准:2020-11-27 06:11:35监视挂钩警告::没有筛选器处理程序,只是保存
2020/11/27 06:11:35聚合器:监视挂钩标准:2020-11-27 06:11:35监视挂钩警告::没有筛选器策略的处理程序,只是保存
2020/11/27 06:11:35聚合器:手表挂钩标准:
2020/11/27 06:11:35库伯内特斯:秘密|默认|*|*:信号关闭
2020/11/27 06:11:35库伯内特斯:秘密|默认|*|*:退出
2020/11/27 06:11:35 kubernetes:服务|默认|*|*:信号关闭
2020/11/27 06:11:35 kubernetes:服务|默认|*|*:退出
2020-11-27 06:11:35诊断1.9.1[P75TAEW]警告::过滤器没有处理程序,只是保存
2020-11-27 06:11:35诊断1.9.1[P75TAEW]警告::过滤器策略没有处理程序,只是保存
2020-11-27 06:11:36诊断1.9.1[P75TAEW]信息:从快照3(S8 L1 G8 C3)更新(完成)配置
time=“2020-11-27 06:11:36”level=warning msg=“license\u secret\u watch:empty decoded license data”func=github.com/datawire/apro/cmd/cmd/amb-sidecar/runner.runne.func4 file=“github.com/datawire/apro/cmd/amb sidecar/runner/main.go:300”main=license\u secret\u watch
time=“2020-11-27 06:11:36”level=warning msg=“license\u secret\u watch:empty decoded license data”func=github.com/datawire/apro/cmd/cmd/amb-sidecar/runner.runne.func4 file=“github.com/datawire/apro/cmd/amb sidecar/runner/main.go:300”main=license\u secret\u watch
2020/11/27 06:11:36聚合器:监视挂钩标准:2020-11-27 06:11:36监视挂钩警告::没有筛选器处理程序,只是保存
2020/11/27 06:11:36聚合器:监视挂钩标准:2020-11-27 06:11:36监视挂钩警告::没有筛选器策略的处理程序,只是保存
2020/11/27 06:11:36聚合器:手表挂钩标准:
2020-11-27 06:11:37诊断1.9.1[P75TAEW]警告::过滤器没有处理程序,只是保存
2020-11-27 06:11:37诊断1.9.1[P75TAEW]警告::过滤器策略没有处理程序,只是保存
2020-11-27 06:11:37诊断1.9.1[P75TAEW]信息:从快照4(S8 L1 G8 C3)更新(完成)配置
time=“2020-11-27 06:11:37”level=warning msg=“license\u secret\u watch:empty decoded license data”func=github.com/datawire/apro/cmd/cmd/amb sidecar/runner.runE.func4 file=“github.com/datawire/apro/cmd/amb sidecar/runner/main.go:300”main=license\u secret\u watch
time=“2020-11-27 06:11:37”level=warning msg=“license\u secret\u watch:empty decoded license data”func=github.com/datawire/apro/cmd/cmd/amb sidecar/runner.runE.func4 file=“github.com/datawire/apro/cmd/amb sidecar/runner/main.go:300”main=license\u secret\u watch
2020/11/27 06:11:38聚合器:监视挂钩标准:2020-11-27 06:11:38监视挂钩警告::没有筛选器处理程序,只是保存
2020/11/27 06:11:38聚合器:监视挂钩标准:2020-11-27 06:11:38监视挂钩警告::没有筛选器策略的处理程序,只是保存
2020/11/27 06:11:38聚合器:watch hook标准:
2020-11-27 06:11:38诊断1.9.1[P75TAEW]警告::过滤器没有处理程序,只是保存
2020-11-27 06:11:38诊断1.9.1[P75TAEW]警告::过滤器策略没有处理程序,只是保存
2020-11-27 06:11:38诊断1.9.1[P75TAEW]信息:从快照5(S8 L1 G8 C3)更新(完成)配置
time=“2020-11-27 06:11:38”level=warning msg=“license\u secret\u watch:empty decoded license data”func=github.com/datawire/apro/cmd/cmd/amb sidecar/runner.runne.func4 file=“github.com/datawire/apro/cmd/amb sidecar/runner/main.go:300”main=license\u secret\u watch
time=“2020-11-27 06:11:38”level=warning msg=“license\u secret\u watch:empty decoded license data”func=github.com/datawire/apro/cmd/cmd/amb sidecar/runner.runne.func4 file=“github.com/datawire/apro/cmd/amb sidecar/runner/main.go:300”main=license\u secret\u watch
2020-11-27 06:12:27 diagd 1.9.1[P75TThreadPoolExecutor-0_0]信息:44A5439F-C2E4-46C8-9D57-F5F4B6654E72:127.0.0.1“GET/ambassador/v0/diag/”22MS200成功
2020-11-27 06:13:27 diagd 1.9.1[P75ttThreadPoolExecutor-0_0]信息:15FD78F9-B331-4D57-B838-FEB5CB066C82:127.0.0.1“GET/ambassador/v0/diag/”16ms 200成功
2020-11-27 06:13:38图1.9.1[P75TAEW]信息:计时器重新配置:5,0.121/0.260/0.406

Abassador请求映射以以下方式工作

  • 对大使网关的任何请求都将首先检查映射中是否有可供请求的匹配项
  • 如果任何映射匹配,那么如果筛选器策略规则与请求匹配,它将调用筛选器
  • 过滤器插件应用逻辑并更新请求
  • 在过滤逻辑之后,请求被映射到任何映射并路由到实际服务
  • 因此,为了避免上述问题,添加了以下映射

    annotations:
        getambassador.io/config: |
          ---
          apiVersion: ambassador/v1
          kind:  Mapping
          name:  dc_1_mapping
          prefix: "/getHostName"
          rewrite: ""
          headers:
            X-Dc: odd
          service: testservice1:8081
          ---
            apiVersion: ambassador/v1
            kind:  Mapping
            name:  dc_2_mapping
            prefix: "/getHostName"
            headers:
              X-Dc: even
            service: testservice2:8082
            rewrite: ""
          ---
          apiVersion: ambassador/v1
          kind:  Mapping
          name:  dc_3_mapping
          prefix: "/getHostName"
          service: testservice3:8083
          rewrite: ""
    
    注意:前面提到的X-dc-plugin过滤器只是根据query param中的id以奇数或偶数更新请求头X-dc

    流程示例:

    如果我发出请求,请在这里http://localhost/getHostName?id=2 这将匹配最后一个映射,然后将请求路由到筛选器。过滤器更新标题,即使查询参数中的id为2。然后,ambassador再次尝试将请求与上面带有偶数头的映射匹配,并将请求路由到testService2:8082