1{
2  "node": {
3    "id": "{{ .EnvoyConfigOpt.NodeID }}",
4    "cluster": "mycluster",
5    "locality": {
6      "zone": "testzone"
7    },
8    "metadata": {
9      {{ .EnvoyConfigOpt.meta_json_str }}
10    }
11  },
12  "stats_config": {
13    "use_all_default_tags": false
14  },
15  "admin": {
16    "access_log_path": "{{.AccessLogPath}}",
17    "address": {
18      "socket_address": {
19        "address": "0.0.0.0",
20        "port_value": {{.Ports.AdminPort}}
21      }
22    }
23  },
24  "dynamic_resources": {
25    "lds_config": {
26      "ads": {}
27     },
28    "cds_config": {
29      "ads": {}
30    },
31    "ads_config": {
32      "api_type": "GRPC",
33      "grpc_services": {
34        "envoy_grpc": {
35          "cluster_name": "xds-grpc"
36        }
37      },
38      "refresh_delay": {
39        "seconds": 30,
40        "nanos": 0
41      }
42    }
43  },
44  "static_resources": {
45    "listeners": [
46    {
47    "name": "http_0.0.0.0_{{.Ports.ServerProxyPort}}",
48    "address": {
49      "socket_address": {
50        "address": "0.0.0.0",
51        "port_value": {{.Ports.ServerProxyPort}}
52      }
53    },
54    "filter_chains": [
55      {
56        "filters": [
57          {
58            "name": "envoy.http_connection_manager",
59            "config": {
60              "stat_prefix": "http",
61              "route_config": {
62                  "name": "default",
63                  "virtual_hosts": [
64                      {
65                        "name": "backend",
66                        "domains": [
67                          "*"
68                        ],
69                        "routes": [
70                          {
71                            "match": {
72                              "prefix": "/"
73                            },
74                            "route": {
75                              "cluster": "service1"
76                            }
77                          }
78                        ]
79                      }
80
81                  ]
82               },
83               "http_filters": [
84              {
85              "name": "envoy.cors"
86              },
87              {
88              "name": "envoy.router"
89              }
90              ]
91            }
92          }
93        ]
94      }
95    ]
96  },
97    {
98    "name": "http_0.0.0.0_{{.Ports.ClientProxyPort}}",
99    "address": {
100      "socket_address": {
101        "address": "0.0.0.0",
102        "port_value": {{.Ports.ClientProxyPort}}
103      }
104    },
105    "filter_chains": [
106      {
107        "filters": [
108          {
109            "name": "envoy.http_connection_manager",
110            "config": {
111              "stat_prefix": "http",
112              "route_config": {
113                  "name": "default",
114                  "virtual_hosts": [
115                      {
116                        "name": "backend",
117                        "domains": [
118                          "*"
119                        ],
120                        "routes": [
121                          {
122                            "match": {
123                              "prefix": "/"
124                            },
125                            "route": {
126                              "cluster": "service2"
127                            }
128                          }
129                        ]
130                      }
131
132                  ]
133               },
134               "http_filters": [
135              {
136              "name": "envoy.cors"
137              },
138              {
139              "name": "envoy.router"
140              }
141              ]
142
143
144            }
145          }
146        ]
147      }
148    ]
149  },
150    {
151        "name": "mixertcpproxy",
152        "address": {
153          "socket_address": {
154            "address": "0.0.0.0",
155            "port_value": {{.Ports.TCPProxyPort}}
156          }
157        },
158        "filter_chains": [
159          {
160            "filters": [
161              {
162                "name": "envoy.tcp_proxy",
163                "typed_config": {
164                "@type": "type.googleapis.com/envoy.config.filter.network.tcp_proxy.v2.TcpProxy",
165                  "stat_prefix": "mixertcpproxy",
166                  "cluster": "service1"
167                }
168              }
169            ]
170          }
171        ]
172      },
173      {
174        "name": "http_proxy_80",
175        "address": {
176          "socket_address": {
177            "address": "0.0.0.0",
178            "port_value": 17002
179          }
180         },
181
182          "filter_chains": [
183          {
184            "filters": [
185              {
186                "name": "envoy.http_connection_manager",
187                "config": {
188                  "codec_type": "AUTO",
189                  "stat_prefix": "http_proxy",
190                  "http_filters": [
191                    {"name": "envoy.router"
192                    }
193                  ],
194                  "rds": {
195                      "route_config_name": "80",
196                       "config_source": {"ads": {}}
197                  },
198                  "http_protocol_options": {
199                    "allow_absolute_url": true
200                  },
201             "access_log": [
202                {
203                  "name": "envoy.file_access_log",
204                  "config": {
205                      "path":  "{{.AccessLogPath}}"
206                   }
207                }
208              ]
209
210                }
211              }
212            ]
213          }
214        ]
215      },
216      {
217        "name": "http_proxy_all",
218        "address": {
219          "socket_address": {
220            "address": "0.0.0.0",
221            "port_value": 17003
222          }
223         },
224
225          "filter_chains": [
226          {
227            "filters": [
228              {
229                "name": "envoy.http_connection_manager",
230                "config": {
231                  "codec_type": "AUTO",
232                  "stat_prefix": "http_proxy",
233                  "http_filters": [
234                    {"name": "envoy.router"
235                    }
236                  ],
237                  "rds": {
238                      "route_config_name": "http_proxy",
239                       "config_source": {"ads": {}}
240                  },
241                  "http_protocol_options": {
242                    "allow_absolute_url": true
243                  },
244             "access_log": [
245                {
246                  "name": "envoy.file_access_log",
247                  "config": {
248                      "path":  "{{.AccessLogPath}}"
249                   }
250                }
251              ]
252
253                }
254              }
255            ]
256          }
257        ]
258      },
259      {
260        "name": "grpc15011",
261        "address": {
262          "socket_address": {
263            "address": "0.0.0.0",
264            "port_value": 17011
265          }
266        },
267        "filter_chains": [
268          {
269            "tls_context": {
270              "common_tls_context": {
271                "tls_certificates": [
272                  {
273                    "certificate_chain": {
274                      "inline_string": "-----BEGIN CERTIFICATE-----\nMIIDTzCCAjegAwIBAgIQZX1drhMeXBTU+dhaKckP5TANBgkqhkiG9w0BAQsFADBZ\nMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJU3Vu\nbnl2YWxlMQ4wDAYDVQQKEwVJc3RpbzERMA8GA1UEAxMISXN0aW8gQ0EwHhcNMTgw\nMzEwMDUwMDE2WhcNMTkwMzEwMDUwMDE2WjATMREwDwYDVQQKEwhKdWp1IG9yZzCC\nASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIuHhv/cBdge+gH0VXJDgCF\n7NE8byK/0DlrWn5leewWBFDF7PsVOcEzXUd7qsGKcJ8qrK4o2Qy+myL8TEFjL/8c\nfCimVCcjxNa1nc0A+oA9fQBS8AHhKS1aCbQJIhpkoYKqeLlP+qXDhGU8R/EsYPKM\n/obist4bn6MTIPsVDO4eb1bGLdCpSswFppFvT0Yn6In0CH/srCqpJBd2Vp7I5KhD\n65MSHfE27zcb3fiGNIgzX74izZeBx9JRuGvTY3j7VyjA4ncfneG1m7DwriNtfFWq\n48HWolXcQVO2O0s2TzKkDtxZ3pNUvmidMK5ar/Q/7KHl7bEQMhVjpYiZoWTAQcsC\nAwEAAaNZMFcwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAwG\nA1UdEwEB/wQCMAAwIgYDVR0RBBswGYYXc3BpZmZlOi8vY29zdGluLmZvby5jb20w\nDQYJKoZIhvcNAQELBQADggEBAH1mjBRJBZrYktL+75ezbup5N9l32btscJ95iHfi\nsiA84ehrcmcc8kIbX6jCvsu73Ye8iGpfRZobDxo+ZqXXABhyuKO1SwvM2seovW3E\nE6UDk01IAXiZENR2jj2a53rDPWH6OzxCAfISGHaz4dBqdEMzsiEPsf12wewNxGpR\nY5uS2dnDkUQw0bZlAN2mtAGaFc/vaXejZlBFBreTF9+oT/zi0FWqPXf6ST0vuBVC\nMkMQA/m0Haq2Zhfo0Zr2pwtRPhMYHnhrrhRdwFjyb/9kygsgMmFHgD9f+bk6XMMq\nWk0TvcghAZWBVHOSFR6rTKCSFoU7Oop9Pac3BNtYTMSwJ8o=\n-----END CERTIFICATE-----\n"
275                    },
276                    "private_key": {
277                      "inline_string": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwi4eG/9wF2B76AfRVckOAIXs0TxvIr/QOWtafmV57BYEUMXs\n+xU5wTNdR3uqwYpwnyqsrijZDL6bIvxMQWMv/xx8KKZUJyPE1rWdzQD6gD19AFLw\nAeEpLVoJtAkiGmShgqp4uU/6pcOEZTxH8Sxg8oz+huKy3hufoxMg+xUM7h5vVsYt\n0KlKzAWmkW9PRifoifQIf+ysKqkkF3ZWnsjkqEPrkxId8TbvNxvd+IY0iDNfviLN\nl4HH0lG4a9NjePtXKMDidx+d4bWbsPCuI218VarjwdaiVdxBU7Y7SzZPMqQO3Fne\nk1S+aJ0wrlqv9D/soeXtsRAyFWOliJmhZMBBywIDAQABAoIBAF5znEW2HEnirqKQ\nmuyFXYA3pJeqM8zNTHWBmIT+yy1hEDxR6hG/o1Ysq+THbKmzs1BYq6ITUHB4jnGY\nE2eC3afTrTkAntJi/a4KrXU4UqDqR9FOhlwDr8nVj/64qpP3+u/aB9rr4lmbHt03\nUy8mjQmuN2hZAPQ0r5PdDB/Vf3KbFXNBIUccQUGOpfCFwPpBLF4blDRSloGGcHsA\nwe8cRYN/cBmjYjvYjoS25qD1lP4az9AYB5UXznii1QdaR93PFlli0ZWZC+dGeBnn\n9uSufeO8i4zDumHXKo1FMXx7diJQBGsDDM8ZG1DIPNz9DbVvK9kVQsL21sbsd/FS\ntl3JyCECgYEAy4Y2k92kpUn5XlNFzcuL0ezJIMbcPDFmEfhs8qmFf9RM34yPFu5O\nQ4BnZjWWFoOfKRbGXaEuWm8ch5sSttTMbI+wPQ2mzf9WhGp9La4DP0TdedxtUCCD\noycfFUhZGVxVnLYc3vjc8mPKokJkcFD3lSGw2QB/XB+s1wahEQvQ/sMCgYEA9D8j\nS9NVRV3xbo42ump7p9yHk3NNzPu+b+QlcSEb2Jll67/xYplEjdyZGtD1LUttN6yl\ngKQMkZHnQ6deTjuRnIU8b/T1a0pI3f9xpfj2IJZU/gS0WZmaoFrhhaBWPiieeSCz\nkFyydx67m5DnRh9lkB1Xb+IyvC72Xr0/aZZukFkCgYB63/HtfgBcZnfukdnv8Hbe\n69VWO5lVogFc0h58twpJbdRnlwYAsyl/KXPDypBt0VNzTDPA7YH9yV1xJZe72Gf/\nFxUxFx/g+Mq0MVKYFJoTRbFtVD6PBMJU61ah08cvP4bUkUKG/7rtgIAjTHA1Ozzu\nxaNusBU0ek8wlukBUKACXwKBgQDwK2GOvwk7Q4wTNR5Voj1jq3NZJ2laZjU1mzbC\nDlduXjCdZ8l5NdL2V/PpLY3Y8zE7LLY1T5rYTYsFuH8AGI0vRshOIqZs0MfkG7nq\nBWwoUQrUGVYqQOOOSK84EZicWJ6z5tcK3kvS3FKIPy1bg6X/1wpShy9yYg96y0ae\nkgC4SQKBgFoH6n+WPFUDpFJGAQ7NNQu1iZX/l8AFUltSGfdzPwzsJAlHxJpkeRWV\n4uFYyklRVIelhv+f5O6MhTyadYYyBvTgvSG/cK5D80eC3BVcUJSM7PWD63SAoytd\nvddliXeyrXMUTSTO/E8XUnRbsfDrTtO4o8NecEwSrZ9Ayr7g/e/z\n-----END RSA PRIVATE KEY-----\n"
278                    }
279                  }
280                ],
281                "validation_context": {
282                  "trusted_ca": {
283                    "filename": "{{.IstioSrc}}/security/samples/plugin_ca_certs/cert-chain.pem"
284                  }
285                }
286              },
287              "require_client_certificate": true
288            },
289            "filters": [
290              {
291                "name": "envoy.tcp_proxy",
292                "typed_config": {
293                  "@type": "type.googleapis.com/envoy.config.filter.network.tcp_proxy.v2.TcpProxy",
294                  "stat_prefix": "grpc15011",
295                  "cluster": "xds_grpc"
296                }
297              }
298            ]
299          }
300        ]
301      }
302
303    ],
304    "clusters": [
305      {
306        "name": "xds-grpc",
307        "type": "STRICT_DNS",
308        "connect_timeout": {
309          "seconds": 5,
310          "nanos": 0
311        },
312        "lb_policy": "ROUND_ROBIN",
313        "hosts": [
314          {
315            "socket_address": {
316              "address": "127.0.0.1",
317              "port_value": {{.Ports.PilotGrpcPort}}
318            }
319          }
320        ],
321        "http2_protocol_options": {}
322      },
323      {
324      "name": "service1",
325      "type": "STRICT_DNS",
326      "connect_timeout": {
327        "seconds": 5,
328        "nanos": 0
329      },
330      "lb_policy": "ROUND_ROBIN",
331      "hosts": [
332      {
333        "socket_address": {
334        "address": "127.0.0.1",
335        "port_value": {{.Ports.BackendPort}}
336        }
337        }
338      ],
339      "http2_protocol_options": {}
340      },
341      {
342      "name": "service2",
343      "type": "STRICT_DNS",
344      "connect_timeout": {
345        "seconds": 5,
346        "nanos": 0
347      },
348      "lb_policy": "ROUND_ROBIN",
349      "hosts": [
350      {
351        "socket_address": {
352        "address": "127.0.0.1",
353        "port_value": {{.Ports.ServerProxyPort}}
354        }
355      }
356      ],
357      "http2_protocol_options": {}
358      },
359      {
360        "name": "mixer_server",
361        "type": "STRICT_DNS",
362        "connect_timeout": {
363        "seconds": 5,
364        "nanos": 0
365        },
366        "lb_policy": "ROUND_ROBIN",
367        "hosts": [
368        {
369          "socket_address": {
370          "address": "127.0.0.1",
371          "port_value": {{.Ports.MixerPort}}
372        }
373        }
374        ],
375        "http2_protocol_options": {}
376      }
377
378    ]
379  }
380}
381