Skip to content

Commit f85b07f

Browse files
committed
envoy: Use yaml format for bootstrap config
[ upstream commit 57ca16f ] Envoy is supporting both json and yaml for bootstrap config, so we can switch to yaml for better maintainability and readability. The json format is still used in configmap for backward compatibility. Signed-off-by: Tam Mach <[email protected]>
1 parent 17247b2 commit f85b07f

File tree

2 files changed

+220
-2
lines changed

2 files changed

+220
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
node:
2+
id: "host~127.0.0.1~no-id~localdomain"
3+
cluster: "ingress-cluster"
4+
staticResources:
5+
listeners:
6+
{{- if .Values.envoy.prometheus.enabled }}
7+
- name: "envoy-prometheus-metrics-listener"
8+
address:
9+
socketAddress:
10+
address: "0.0.0.0"
11+
portValue: {{ .Values.envoy.prometheus.port }}
12+
filterChains:
13+
- filters:
14+
- name: "envoy.filters.network.http_connection_manager"
15+
typedConfig:
16+
"@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
17+
statPrefix: "envoy-prometheus-metrics-listener"
18+
routeConfig:
19+
virtualHosts:
20+
- name: "prometheus_metrics_route"
21+
domains:
22+
- "*"
23+
routes:
24+
- name: "prometheus_metrics_route"
25+
match:
26+
prefix: "/metrics"
27+
route:
28+
cluster: "/envoy-admin"
29+
prefixRewrite: "/stats/prometheus"
30+
httpFilters:
31+
- name: "envoy.filters.http.router"
32+
typedConfig:
33+
"@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router"
34+
internalAddressConfig:
35+
cidrRanges:
36+
- addressPrefix: "10.0.0.0"
37+
prefixLen: 8
38+
- addressPrefix: "172.16.0.0"
39+
prefixLen: 12
40+
- addressPrefix: "192.168.0.0"
41+
prefixLen: 16
42+
- addressPrefix: "127.0.0.1"
43+
prefixLen: 32
44+
- addressPrefix: "::1"
45+
prefixLen: 128
46+
streamIdleTimeout: "0s"
47+
{{- end }}
48+
- name: "envoy-health-listener"
49+
address:
50+
socketAddress:
51+
address: {{ .Values.ipv4.enabled | ternary "127.0.0.1" "::1" | quote }}
52+
portValue: {{ .Values.envoy.healthPort }}
53+
{{- if and .Values.ipv4.enabled .Values.ipv6.enabled }}
54+
additionalAddresses:
55+
- address:
56+
socketAddress:
57+
address: "::1"
58+
portValue: {{ .Values.envoy.healthPort }}
59+
{{- end }}
60+
filterChains:
61+
- filters:
62+
- name: "envoy.filters.network.http_connection_manager"
63+
typedConfig:
64+
"@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
65+
statPrefix: "envoy-health-listener"
66+
routeConfig:
67+
virtual_hosts:
68+
- name: "health"
69+
domains:
70+
- "*"
71+
routes:
72+
- name: "health"
73+
match:
74+
prefix: "/healthz"
75+
route:
76+
cluster: "/envoy-admin"
77+
prefixRewrite: "/ready"
78+
httpFilters:
79+
- name: "envoy.filters.http.router"
80+
typedConfig:
81+
"@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router"
82+
internalAddressConfig:
83+
cidrRanges:
84+
- addressPrefix: "10.0.0.0"
85+
prefixLen: 8
86+
- addressPrefix: "172.16.0.0"
87+
prefixLen: 12
88+
- addressPrefix: "192.168.0.0"
89+
prefixLen: 16
90+
- addressPrefix: "127.0.0.1"
91+
prefixLen: 32
92+
- addressPrefix: "::1"
93+
prefixLen: 128
94+
streamIdleTimeout: "0s"
95+
clusters:
96+
- name: "ingress-cluster"
97+
type: "ORIGINAL_DST"
98+
connectTimeout: "{{ .Values.envoy.connectTimeoutSeconds }}s"
99+
lbPolicy: "CLUSTER_PROVIDED"
100+
typedExtensionProtocolOptions:
101+
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
102+
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions"
103+
commonHttpProtocolOptions:
104+
idleTimeout: "{{ .Values.envoy.idleTimeoutDurationSeconds }}s"
105+
maxConnectionDuration: "{{ .Values.envoy.maxConnectionDurationSeconds }}s"
106+
maxRequestsPerConnection: {{ .Values.envoy.maxRequestsPerConnection }}
107+
useDownstreamProtocolConfig: {}
108+
cleanupInterval: "{{ .Values.envoy.connectTimeoutSeconds }}.500s"
109+
- name: "egress-cluster-tls"
110+
type: "ORIGINAL_DST"
111+
connectTimeout: "{{ .Values.envoy.connectTimeoutSeconds }}s"
112+
lbPolicy: "CLUSTER_PROVIDED"
113+
typedExtensionProtocolOptions:
114+
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
115+
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions"
116+
commonHttpProtocolOptions:
117+
idleTimeout: "{{ .Values.envoy.idleTimeoutDurationSeconds }}s"
118+
maxConnectionDuration: "{{ .Values.envoy.maxConnectionDurationSeconds }}s"
119+
maxRequestsPerConnection: {{ .Values.envoy.maxRequestsPerConnection }}
120+
upstreamHttpProtocolOptions: {}
121+
useDownstreamProtocolConfig: {}
122+
cleanupInterval: "{{ .Values.envoy.connectTimeoutSeconds }}.500s"
123+
transportSocket:
124+
name: "cilium.tls_wrapper"
125+
typedConfig:
126+
"@type": "type.googleapis.com/cilium.UpstreamTlsWrapperContext"
127+
- name: "egress-cluster"
128+
type: "ORIGINAL_DST"
129+
connectTimeout: "{{ .Values.envoy.connectTimeoutSeconds }}s"
130+
lbPolicy: "CLUSTER_PROVIDED"
131+
typedExtensionProtocolOptions:
132+
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
133+
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions"
134+
commonHttpProtocolOptions:
135+
idleTimeout: "{{ .Values.envoy.idleTimeoutDurationSeconds }}s"
136+
maxConnectionDuration: "{{ .Values.envoy.maxConnectionDurationSeconds }}s"
137+
maxRequestsPerConnection: {{ .Values.envoy.maxRequestsPerConnection }}
138+
useDownstreamProtocolConfig: {}
139+
cleanupInterval: "{{ .Values.envoy.connectTimeoutSeconds }}.500s"
140+
- name: "ingress-cluster-tls"
141+
type: "ORIGINAL_DST"
142+
connectTimeout: "{{ .Values.envoy.connectTimeoutSeconds }}s"
143+
lbPolicy: "CLUSTER_PROVIDED"
144+
typedExtensionProtocolOptions:
145+
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
146+
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions"
147+
commonHttpProtocolOptions:
148+
idleTimeout: "{{ .Values.envoy.idleTimeoutDurationSeconds }}s"
149+
maxConnectionDuration: "{{ .Values.envoy.maxConnectionDurationSeconds }}s"
150+
maxRequestsPerConnection: {{ .Values.envoy.maxRequestsPerConnection }}
151+
upstreamHttpProtocolOptions: {}
152+
useDownstreamProtocolConfig: {}
153+
cleanupInterval: "{{ .Values.envoy.connectTimeoutSeconds }}.500s"
154+
transportSocket:
155+
name: "cilium.tls_wrapper"
156+
typedConfig:
157+
"@type": "type.googleapis.com/cilium.UpstreamTlsWrapperContext"
158+
- name: "xds-grpc-cilium"
159+
type: "STATIC"
160+
connectTimeout: "{{ .Values.envoy.connectTimeoutSeconds }}s"
161+
loadAssignment:
162+
clusterName: "xds-grpc-cilium"
163+
endpoints:
164+
- lbEndpoints:
165+
- endpoint:
166+
address:
167+
pipe:
168+
path: "/var/run/cilium/envoy/sockets/xds.sock"
169+
typedExtensionProtocolOptions:
170+
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
171+
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions"
172+
explicitHttpConfig:
173+
http2ProtocolOptions: {}
174+
- name: "/envoy-admin"
175+
type: "STATIC"
176+
connectTimeout: "{{ .Values.envoy.connectTimeoutSeconds }}s"
177+
loadAssignment:
178+
clusterName: "/envoy-admin"
179+
endpoints:
180+
- lbEndpoints:
181+
- endpoint:
182+
address:
183+
pipe:
184+
path: "/var/run/cilium/envoy/sockets/admin.sock"
185+
dynamicResources:
186+
ldsConfig:
187+
apiConfigSource:
188+
apiType: "GRPC"
189+
transportApiVersion: "V3"
190+
grpcServices:
191+
- envoyGrpc:
192+
clusterName: "xds-grpc-cilium"
193+
setNodeOnFirstMessageOnly: true
194+
resourceApiVersion: "V3"
195+
cdsConfig:
196+
apiConfigSource:
197+
apiType: "GRPC"
198+
transportApiVersion: "V3"
199+
grpcServices:
200+
- envoyGrpc:
201+
clusterName: "xds-grpc-cilium"
202+
setNodeOnFirstMessageOnly: true
203+
resourceApiVersion: "V3"
204+
bootstrapExtensions:
205+
- name: "envoy.bootstrap.internal_listener"
206+
typedConfig:
207+
"@type": "type.googleapis.com/envoy.extensions.bootstrap.internal_listener.v3.InternalListener"
208+
overloadManager:
209+
resourceMonitors:
210+
- name: "envoy.resource_monitors.global_downstream_max_connections"
211+
typedConfig:
212+
"@type": "type.googleapis.com/envoy.extensions.resource_monitors.downstream_connections.v3.DownstreamConnectionsConfig"
213+
max_active_downstream_connections: "50000"
214+
admin:
215+
address:
216+
pipe:
217+
path: "/var/run/cilium/envoy/sockets/admin.sock"

install/kubernetes/cilium/templates/cilium-envoy/configmap.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ metadata:
77
name: cilium-envoy-config
88
namespace: {{ .Release.Namespace }}
99
data:
10-
{{- (tpl (.Files.Glob "files/cilium-envoy/configmap/bootstrap-config.json").AsConfig .) | nindent 2 }}
11-
10+
# Keep the key name as bootstrap-config.json to avoid breaking changes
11+
bootstrap-config.json: |
12+
{{- (tpl (.Files.Get "files/cilium-envoy/configmap/bootstrap-config.yaml") .) | fromYaml | toJson | nindent 4 }}
1213
{{- end }}

0 commit comments

Comments
 (0)