Skip to content

failed to adapt orion to envoy go control plane #38

@YaoZengzeng

Description

@YaoZengzeng
  1. Run envoy go control plane example:
git clone https://github.com/envoyproxy/go-control-plane.git
cd go-control-plane
make example

Now xds server will listen on localhost:18000

  1. config yaml of orion, name is orion-runtime-xds.yaml:
#                                       /proxy/    ---> (cluster1) 192.168.2.10:80
#                                      |
#  http request ---> 192.168.1.1:8080 -|
#                                      |
#                                       (default)  ---> (cluster2) 127.0.0.1:80
#
#                                       /proxy/    ---> (cluster3) 192.168.2.10:81 (h2)
#                                      |
#  http request ---> 192.168.1.1:8081 -|
#                                      |
#                                      / 404
#

runtime:
  num_cpus: 2
  num_runtimes: 2
  event_interval: 31          # estimated optimal value
  global_queue_interval: null   # default
  max_io_events_per_tick: null  # default

logging:
  log_level: "debug"
  # log_directory: "."
  # log_file: "orion.log"

envoy_bootstrap:
  node:
    id: "test-id" 

  dynamic_resources:
    ads_config:
      grpc_services:
        - envoy_grpc:
            cluster_name: xds_cluster

  static_resources:
    clusters:
      - name: xds_cluster
        connect_timeout: 0.25s
        type: STATIC
        lb_policy: ROUND_ROBIN
        typed_extension_protocol_options:
          envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
            "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
            explicit_http_config:
              # force http2
              http2_protocol_options: {}
        load_assignment:
          cluster_name: xds_cluster
          endpoints:
            - lb_endpoints:
                - endpoint:
                    address:
                      socket_address:
                        address: 127.0.0.1
                        port_value: 18000
  1. Start orion docker container:
docker run \
  --network host \
  -v ./orion-runtime-xds.yaml:/etc/orion/orion-runtime.yaml \
  orion-proxy

Log of orion:

...
2025-08-18T07:48:16.435923Z  INFO xdstask_0 orion_xds::xds::client: received config resources from xDS type_url="type.googleapis.com/envoy.config.route.v3.RouteConfiguration" size=1
2025-08-18T07:48:16.435994Z  WARN xdstask_0 orion_xds::xds::client: problem decoding config update for local_route : error Some(ConversionError(TracedError(["local_route"] / virtual_hosts ["local_service"] / routes [0] / action, UnsupportedField("host_rewrite_specifier"))))
...
2025-08-18T07:48:16.436338Z  INFO xdstask_0 orion_xds::xds::client: received config resources from xDS type_url="type.googleapis.com/envoy.config.listener.v3.Listener" size=1
2025-08-18T07:48:16.436357Z  WARN xdstask_0 orion_xds::xds::client: problem decoding config update for listener_0 : error Some(ConversionError(TracedError(["listener_0"] / filter_chains [0], MissingField("name"))))
...

Obviously because orion has not implemented all fields in xds, we should fix them first. Don't know if there will be more issues.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions