配置:来自文件系统的动态配置
您可以通过使用实现 xDS 协议的文件来启动具有动态配置的 Envoy。
当文件系统上的文件发生更改时,Envoy 将自动更新其配置。
注意
Envoy 仅在配置文件被文件移动替换时才更新,而不是在文件被就地编辑时更新。
这样实现是为了确保配置的一致性。
至少,您需要使用以下部分配置启动 Envoy
节点 用于唯一标识代理节点。
dynamic_resources 用于告诉 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
集群 通过 TLS
向 https://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
另请参阅
- 原子交换
有关如何更新运行时配置的详细信息。