配置:来自控制平面的动态配置
这些说明稍微复杂一些,因为您还必须设置一个控制平面来为 Envoy 提供其配置。
有许多与 Envoy 的 API 兼容的控制平面,例如 Gloo 或 Istio。
您可能还想探索实施自己的控制平面,在这种情况下,Go 控制平面 提供了一个参考实现,可以作为良好的起点。
至少,您需要启动 Envoy,并使用以下部分进行配置
节点 用于唯一标识代理节点。
dynamic_resources 用于告知 Envoy 哪些配置应该动态更新。
static_resources 用于指定 Envoy 应该从哪里检索其配置。
您还可以添加一个 admin 部分,如果您希望监控 Envoy 或检索统计信息或配置信息。
以下部分介绍了 demo dynamic control plane configuration file
中提供的动态配置。
node
该 节点 应该指定 cluster
和 id
。
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