如何修改消息头

    安装完成后,可以看到集群中增加了下面两个 NS,这两个 NS 中分别安装了基于 MetaProtocol 实现的 Dubbo 和 Thrift 协议的示例程序。 你可以选用任何一个程序进行测试。

    Aeraki 支持采用 MetaRouter 来修改消息 Header,我们可以采用下面的规则来修改请求消息的 Header。

    1. apiVersion: metaprotocol.aeraki.io/v1alpha1
    2. kind: MetaRouter
    3. metadata:
    4. name: test-metaprotocol-thrift-route
    5. namespace: meta-thrift
    6. spec:
    7. hosts:
    8. - thrift-sample-server.meta-thrift.svc.cluster.local
    9. routes:
    10. - name: header-mutation
    11. route:
    12. - destination:
    13. host: thrift-sample-server.meta-thrift.svc.cluster.local
    14. requestMutation:
    15. value: bar
    16. - key: foo1
    17. EOF

    使用 aerakictl 命令来查看客户端的 sidecar 日志,可以看到增加的消息头:

    在向 Sidecar Proxy 下发的配置中, Aeraki 在服务对应的 Outbound Listener 的 FilterChain 中设置了 MetaProtocol Proxy,并在 MetaProtocol Proxy 配置中指定 Aeraki 为 RDS 服务器。

    Aeraki 会将 MetaRouter 中配置的路由规则翻译为 MetaProtocol Proxy 的路由规则,通过 Aeraki 内置的 RDS 服务器下发给 MetaProtocol Proxy。

    1. aerakictl_sidecar_config client meta-thrift |fx

    其中 Thrift 服务的 Outbound Listener 中的 MetaProtocol Proxy 配置如下所示:

    在导出的文件中还可以查看到目前 Proxy 中生效的 RDS 路由信息,可以看到路由中增加了相应的 header,如下所示:

    1. {
    2. @type": "type.googleapis.com/aeraki.meta_protocol_proxy.admin.v1alpha.RoutesConfigDump",
    3. dynamic_route_configs": [
    4. {
    5. "version_info": "1641896797",
    6. "route_config": {
    7. "@type": "type.googleapis.com/aeraki.meta_protocol_proxy.config.route.v1alpha.RouteConfiguration",
    8. "name": "thrift-sample-server.meta-thrift.svc.cluster.local_9090",
    9. "routes": [
    10. {
    11. "name": "header-mutation",
    12. "route": {
    13. "cluster": "outbound|9090||thrift-sample-server.meta-thrift.svc.cluster.local"
    14. "request_mutation": [
    15. "key": "foo",
    16. "value": "bar"
    17. },
    18. {
    19. "key": "foo1",
    20. "value": "bar1"
    21. }
    22. ]
    23. }
    24. ]
    25. },
    26. "last_updated": "2022-03-10T06:26:24.083Z"
    27. }
    28. ]
    29. },
    30. "last_updated": "2022-01-11T10:26:37.357Z"

    最后修改 March 22, 2022: circuit breaking (f12858b)