【问题标题】:How to define a local_reply_config in http transcoding configuration?如何在 http 转码配置中定义 local_reply_config?
【发布时间】:2021-11-01 19:22:45
【问题描述】:

我正在尝试在用于 http 转码到 GRPC API 的特使实例上定义 local_reply_config。我的 envoy-config.yaml 如下所示。我的问题是,一旦我定义了 local_reply_config 部分,特使就不再开始抛出下面的错误。知道我在这里做错了什么吗?

m-api-envoy_1  | [2021-11-01 15:06:51.700][9][warning][misc] [bazel-out/k8-opt/bin/source/extensions/common/_virtual_includes/utility_lib/extensions/common/utility.h:65] Using deprecated extension name 'envoy.http_connection_manager' for 'envoy.filters.network.http_connection_manager'. This name will be removed from Envoy soon. Please see https://www.envoyproxy.io/docs/envoy/latest/version_history/version_history for details.
m-api-envoy_1  | [2021-11-01 15:06:51.712][9][critical][main] [source/server/server.cc:102] error initializing configuration '/etc/envoy.yaml': Protobuf message (type envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager reason INVALID_ARGUMENT:(http_filters[0]) config: Cannot find field.) has unknown fields
m-api-envoy_1  | [2021-11-01 15:06:51.713][9][info][main] [source/server/server.cc:731] exiting
m-api-envoy_1  | Protobuf message (type envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager reason INVALID_ARGUMENT:(http_filters[0]) config: Cannot find field.) has unknown fields
m-api_m-api-envoy_1 exited with code 1

===

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 }

static_resources:
  listeners:
  - name: m-api-listener
    address:
      socket_address: { address: 0.0.0.0, port_value: 51051 }
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          stat_prefix: grpc_json
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match: { prefix: "/v4/api-docs"}
                route: { prefix_rewrite: "/v2/api-docs", cluster: swagger-backend-services, timeout: { seconds: 1500 } }
              - match: { prefix: "/v4/swagger-ui"}
                route: { prefix_rewrite: "/", cluster: swagger-backend-services, timeout: { seconds: 1500 } }
              - match: { prefix: "/", grpc: {} }
                route: { cluster: grpc-backend-services, timeout: { seconds: 600 } }
          http_filters:
          - name: envoy.grpc_json_transcoder
            config:
              proto_descriptor: "/data/m-api.pb"
              services: ["m.api.MAPI"]
              print_options:
                add_whitespace: true
                always_print_primitive_fields: true
                always_print_enums_as_ints: false
                preserve_proto_field_names: false
          - name: envoy.router

          local_reply_config:
            mappers:
            - filter:
                status_code_filter:
                  comparison:
                    op: EQ
                    value:
                      default_value: 500
                      runtime_key: key_b
              status_code: 423
              body:
                inline_string: "Project is locked"

  clusters:
  - name: grpc-backend-services
    connect_timeout: 150s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    dns_lookup_family: V4_ONLY
    http2_protocol_options: {}
    hosts:
    - socket_address:
        address: ${GRPC_HOST}
        port_value: 9090
  - name: swagger-backend-services
    connect_timeout: 150s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    dns_lookup_family: V4_ONLY
    hosts:
    - socket_address:
        address: ${GRPC_HOST}
        port_value: 8080

我在 envoy-alpine:v1.16.5-1.2

【问题讨论】:

    标签: envoyproxy


    【解决方案1】:

    为了解决我的问题,我必须转换为 envoy V3 配置格式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2016-04-16
      • 2012-09-20
      • 2019-06-12
      • 2010-11-29
      相关资源
      最近更新 更多