配置:来自控制平面的动态配置

这些说明稍微复杂一些,因为您还必须设置一个控制平面来为 Envoy 提供其配置。

有许多与 Envoy 的 API 兼容的控制平面,例如 GlooIstio

您可能还想探索实施自己的控制平面,在这种情况下,Go 控制平面 提供了一个参考实现,可以作为良好的起点。

至少,您需要启动 Envoy,并使用以下部分进行配置

您还可以添加一个 admin 部分,如果您希望监控 Envoy 或检索统计信息或配置信息。

以下部分介绍了 demo dynamic control plane configuration file 中提供的动态配置。

node

节点 应该指定 clusterid

1node:
2  cluster: test-cluster
3  id: test-id
4
5dynamic_resources:

dynamic_resources

dynamic_resources 指定要动态加载的配置,以及要连接以获取动态配置更新的 集群

在此示例中,配置由以下配置的 xds_cluster 提供。

 3  id: test-id
 4
 5dynamic_resources:
 6  ads_config:
 7    api_type: GRPC
 8    grpc_services:
 9    - envoy_grpc:
10        cluster_name: xds_cluster
11  cds_config:
12    ads: {}
13  lds_config:
14    ads: {}
15
16static_resources:
17  clusters:
18  - type: STRICT_DNS
19    typed_extension_protocol_options:

static_resources

在这里,我们指定了要从中检索动态配置的 static_resources

xds_cluster 被配置为查询位于 http://my-control-plane:18000 的控制平面。

17  clusters:
18  - type: STRICT_DNS
19    typed_extension_protocol_options:
20      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
21        "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
22        explicit_http_config:
23          http2_protocol_options: {}
24    name: xds_cluster
25    load_assignment:
26      cluster_name: xds_cluster
27      endpoints:
28      - lb_endpoints:
29        - endpoint:
30            address:
31              socket_address:
32                address: my-control-plane
33                port_value: 18000
34
35admin:
36  address:
37    socket_address:
38      address: 0.0.0.0