配置:来自文件系统的动态配置

您可以通过使用实现 xDS 协议的文件来启动具有动态配置的 Envoy。

当文件系统上的文件发生更改时,Envoy 将自动更新其配置。

注意

Envoy 仅在配置文件被文件移动替换时才更新,而不是在文件被就地编辑时更新。

这样实现是为了确保配置的一致性。

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

对于给定的示例,您还需要两个动态配置文件

如果您希望监视 Envoy 或检索统计信息或配置信息,您还可以添加 管理 部分。

以下部分将引导您完成 demo dynamic filesystem configuration file 中提供的动态配置。

节点

节点 应指定 集群id

1node:
2  cluster: test-cluster
3  id: test-id
4
5dynamic_resources:
6  cds_config:
7    path: /var/lib/envoy/cds.yaml

dynamic_resources

dynamic_resources 指定从哪里加载动态配置。

在此示例中,配置由下面设置的 yaml 文件提供。

3  id: test-id
4
5dynamic_resources:
6  cds_config:
7    path: /var/lib/envoy/cds.yaml
8  lds_config:
9    path: /var/lib/envoy/lds.yaml

resources - 监听器

链接的 lds_config 应为 监听器发现服务 (LDS) 的实现。

以下示例 dynamic LDS file 在端口 10000 上配置了一个 HTTP 监听器

所有域和路径都与 service_envoyproxy_io 集群匹配并路由到该集群。

host 标头被重写为 www.envoyproxy.io

 1resources:
 2- "@type": type.googleapis.com/envoy.config.listener.v3.Listener
 3  name: listener_0
 4  address:
 5    socket_address:
 6      address: 0.0.0.0
 7      port_value: 10000
 8  filter_chains:
 9  - filters:
10    - name: envoy.http_connection_manager
11      typed_config:
12        "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
13        stat_prefix: ingress_http
14        http_filters:
15        - name: envoy.router
16          typed_config:
17            "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
18        route_config:
19          name: local_route
20          virtual_hosts:
21          - name: local_service
22            domains:
23            - "*"
24            routes:
25            - match:
26                prefix: "/"
27              route:
28                host_rewrite_literal: www.envoyproxy.io
29                cluster: example_proxy_cluster

resources - 集群

链接的 cds_config 应为 集群发现服务 (CDS) 的实现。

在以下 dynamic CDS file 示例中,example_proxy_cluster 集群 通过 TLShttps://envoy.k8s.ac.cn 代理。

 1resources:
 2- "@type": type.googleapis.com/envoy.config.cluster.v3.Cluster
 3  name: example_proxy_cluster
 4  type: STRICT_DNS
 5  typed_extension_protocol_options:
 6    envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
 7      "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
 8      explicit_http_config:
 9        http2_protocol_options: {}
10  load_assignment:
11    cluster_name: example_proxy_cluster
12    endpoints:
13    - lb_endpoints:
14      - endpoint:
15          address:
16            socket_address:
17              address: www.envoyproxy.io
18              port_value: 443
19  transport_socket:
20    name: envoy.transport_sockets.tls
21    typed_config:
22      "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
23      sni: www.envoyproxy.io

另请参阅

原子交换

有关如何更新运行时配置的详细信息。