diff --git a/cmd/egctl/main.go b/cmd/egctl/main.go index 05145982dee..18457074df8 100644 --- a/cmd/egctl/main.go +++ b/cmd/egctl/main.go @@ -31,6 +31,7 @@ func rootCommand() *cobra.Command { rootCmd.AddCommand(egctl.NewVersionCommand()) rootCmd.AddCommand(egctl.NewExperimentalCommand()) + rootCmd.AddCommand(egctl.NewConfigCommand()) return rootCmd } diff --git a/go.mod b/go.mod index 086cd29039c..36776ebb03f 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/go-logr/zapr v1.2.3 github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.9 + github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.1 @@ -25,6 +26,7 @@ require ( k8s.io/apimachinery v0.26.1 k8s.io/cli-runtime v0.26.1 k8s.io/client-go v0.26.1 + k8s.io/kubectl v0.26.1 k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 sigs.k8s.io/controller-runtime v0.14.4 sigs.k8s.io/gateway-api v0.6.1 @@ -32,14 +34,18 @@ require ( ) require ( + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/chai2010/gettext-go v1.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/envoyproxy/protoc-gen-validate v0.9.1 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect + github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect github.com/go-errors/errors v1.0.1 // indirect @@ -64,18 +70,20 @@ require ( github.com/lyft/gostats v0.4.1 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2 // indirect + github.com/mitchellh/go-wordwrap v1.0.0 // indirect github.com/moby/spdystream v0.2.0 // indirect + github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.14.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sirupsen/logrus v1.8.1 // indirect github.com/tsaarni/x500dn v0.0.0-20210331182804-14283c7f5a16 // indirect github.com/xlab/treeprint v1.1.0 // indirect diff --git a/go.sum b/go.sum index 6ab279fb7e4..25a0d24e7b5 100644 --- a/go.sum +++ b/go.sum @@ -31,8 +31,12 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= +github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -52,6 +56,8 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= +github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -62,6 +68,8 @@ github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWH github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/datawire/dlib v1.3.0 h1:KkmyXU1kwm3oPBk1ypR70YbcOlEXWzEbx5RE0iRXTGk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -85,6 +93,8 @@ github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= @@ -236,8 +246,12 @@ github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09JkG9WeqChjprR5s9bBZ+OM= github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= +github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -290,6 +304,7 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -299,6 +314,7 @@ github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= @@ -485,6 +501,7 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -521,6 +538,7 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -666,6 +684,8 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -689,6 +709,8 @@ k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= +k8s.io/kubectl v0.26.1 h1:K8A0Jjlwg8GqrxOXxAbjY5xtmXYeYjLU96cHp2WMQ7s= +k8s.io/kubectl v0.26.1/go.mod h1:miYFVzldVbdIiXMrHZYmL/EDWwJKM+F0sSsdxsATFPo= k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/internal/cmd/egctl/config.go b/internal/cmd/egctl/config.go new file mode 100644 index 00000000000..3742a52279a --- /dev/null +++ b/internal/cmd/egctl/config.go @@ -0,0 +1,172 @@ +// Copyright Envoy Gateway Authors +// SPDX-License-Identifier: Apache-2.0 +// The full text of the Apache license is available in the LICENSE file at +// the root of the repo. + +package egctl + +import ( + "fmt" + "io" + "net/http" + + "github.com/spf13/cobra" + "k8s.io/apimachinery/pkg/types" + cmdutil "k8s.io/kubectl/pkg/cmd/util" + "sigs.k8s.io/yaml" + + "github.com/envoyproxy/gateway/internal/cmd/options" + kube "github.com/envoyproxy/gateway/internal/kubernetes" +) + +var ( + output string + podName string + podNamespace string +) + +const ( + adminPort = 19000 // TODO: make this configurable until EG support + containerName = "envoy" // TODO: make this configurable until EG support +) + +func NewConfigCommand() *cobra.Command { + cfgCommand := &cobra.Command{ + Use: "config", + Aliases: []string{"c"}, + Short: "Retrieve proxy configuration.", + Long: "Retrieve information about proxy configuration from envoy proxy and gateway.", + } + + cfgCommand.AddCommand(proxyCommand()) + + flags := cfgCommand.Flags() + options.AddKubeConfigFlags(flags) + + cfgCommand.PersistentFlags().StringVarP(&output, "output", "o", "json", "One of 'yaml' or 'json'") + cfgCommand.PersistentFlags().StringVarP(&podNamespace, "namespace", "n", "envoy-gateway", "Namespace where envoy proxy pod are installed.") + + return cfgCommand +} + +func proxyCommand() *cobra.Command { + c := &cobra.Command{ + Use: "envoy-proxy", + Aliases: []string{"proxy"}, + Long: "Retrieve information from envoy proxy.", + } + + c.AddCommand(allConfigCmd()) + + return c +} + +func allConfigCmd() *cobra.Command { + + allConfigCmd := &cobra.Command{ + Use: "all ", + Short: "Retrieves all Envoy xDS resources from the specified pod", + Long: `Retrieves information about all Envoy xDS resources from the Envoy instance in the specified pod.`, + Example: ` # Retrieve summary about all configuration for a given pod from Envoy. + egctl config envoy-proxy all -n + + # Retrieve full configuration dump as YAML + egctl config envoy-proxy all -n -o yaml + + # Retrieve full configuration dump with short syntax + egctl c proxy all -n +`, + Run: func(c *cobra.Command, args []string) { + cmdutil.CheckErr(runAllConfig(c, args)) + }, + } + + return allConfigCmd +} + +func runAllConfig(c *cobra.Command, args []string) error { + podName = args[0] + + if podName == "" { + return fmt.Errorf("pod name is required") + } + + if podNamespace == "" { + return fmt.Errorf("pod namespace is required") + } + + fw, err := portForwarder(types.NamespacedName{ + Namespace: podNamespace, + Name: podName, + }) + if err != nil { + return err + } + if err := fw.Start(); err != nil { + return err + } + defer fw.Stop() + + out, err := extractConfigDump(fw, output) + if err != nil { + return err + } + + _, err = fmt.Fprintln(c.OutOrStdout(), string(out)) + return err +} + +func portForwarder(nn types.NamespacedName) (kube.PortForwarder, error) { + c, err := kube.NewCLIClient(options.DefaultConfigFlags.ToRawKubeConfigLoader()) + if err != nil { + return nil, fmt.Errorf("build CLI client fail: %w", err) + } + + pod, err := c.Pod(nn) + if err != nil { + return nil, fmt.Errorf("get pod %s fail: %w", nn, err) + } + if pod.Status.Phase != "Running" { + return nil, fmt.Errorf("pod %s is not running", nn) + } + + fw, err := kube.NewLocalPortForwarder(c, nn, 0, int(adminPort)) + if err != nil { + return nil, err + } + + return fw, nil +} + +func extractConfigDump(fw kube.PortForwarder, output string) ([]byte, error) { + out, err := configDumpRequest(fw.Address()) + if err != nil { + return nil, err + } + + if output == "yaml" { + out, err = yaml.JSONToYAML(out) + if err != nil { + return nil, err + } + } + + return out, nil +} + +func configDumpRequest(address string) ([]byte, error) { + req, err := http.NewRequest("GET", fmt.Sprintf("http://%s/config_dump", address), nil) + if err != nil { + return nil, err + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, err + } + defer func() { + _ = resp.Body.Close() + }() + + return io.ReadAll(resp.Body) +} diff --git a/internal/cmd/egctl/config_test.go b/internal/cmd/egctl/config_test.go new file mode 100644 index 00000000000..ab60177321b --- /dev/null +++ b/internal/cmd/egctl/config_test.go @@ -0,0 +1,107 @@ +// Copyright Envoy Gateway Authors +// SPDX-License-Identifier: Apache-2.0 +// The full text of the Apache license is available in the LICENSE file at +// the root of the repo. + +package egctl + +import ( + "fmt" + "log" + "net" + "net/http" + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" + + kube "github.com/envoyproxy/gateway/internal/kubernetes" + netutil "github.com/envoyproxy/gateway/internal/utils/net" +) + +var _ kube.PortForwarder = &fakePortForwarder{} + +type fakePortForwarder struct { + responseBody []byte + localPort int + l net.Listener + mux *http.ServeMux +} + +func newFakePortForwarder(b []byte) (kube.PortForwarder, error) { + p, err := netutil.LocalAvailablePort() + if err != nil { + return nil, err + } + + fw := &fakePortForwarder{ + responseBody: b, + localPort: p, + mux: http.NewServeMux(), + } + fw.mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + _, _ = w.Write(fw.responseBody) + }) + + return fw, nil +} + +func (fw *fakePortForwarder) Start() error { + l, err := net.Listen("tcp", fw.Address()) + if err != nil { + return err + } + fw.l = l + + go func() { + // nolint: gosec + if err := http.Serve(l, fw.mux); err != nil { + log.Fatal(err) + } + }() + + return nil +} + +func (fw *fakePortForwarder) Stop() {} + +func (fw *fakePortForwarder) Address() string { + return fmt.Sprintf("localhost:%d", fw.localPort) +} + +func TestExtractConfigDump(t *testing.T) { + fw, err := newFakePortForwarder(readConfig("in.json")) + assert.NoError(t, err) + err = fw.Start() + assert.NoError(t, err) + + cases := []struct { + output string + expected string + }{ + { + output: "json", + expected: "out.json", + }, + { + output: "yaml", + expected: "out.yaml", + }, + } + + for _, tc := range cases { + t.Run(tc.output, func(t *testing.T) { + got, err := extractConfigDump(fw, tc.output) + assert.NoError(t, err) + assert.Equal(t, string(readConfig(tc.expected)), string(got)) + }) + } + + fw.Stop() +} + +func readConfig(filename string) []byte { + b, _ := os.ReadFile(path.Join("testdata", "config", filename)) + return b +} diff --git a/internal/cmd/egctl/testdata/config/in.json b/internal/cmd/egctl/testdata/config/in.json new file mode 100644 index 00000000000..d181287d69d --- /dev/null +++ b/internal/cmd/egctl/testdata/config/in.json @@ -0,0 +1,2276 @@ +{ + "configs": [ + { + "@type": "type.googleapis.com/envoy.admin.v3.BootstrapConfigDump", + "bootstrap": { + "node": { + "user_agent_name": "envoy", + "user_agent_build_version": { + "version": { + "major_number": 1, + "minor_number": 26 + }, + "metadata": { + "revision.status": "Clean", + "revision.sha": "14111e3c62d3d38b0c921cb7011fd0a94e880aed", + "ssl.version": "BoringSSL", + "build.label": "dev", + "build.type": "RELEASE" + } + }, + "extensions": [ + { + "name": "envoy.filters.connection_pools.tcp.generic", + "category": "envoy.upstreams", + "type_urls": [ + "envoy.extensions.upstreams.tcp.generic.v3.GenericConnectionPoolProto" + ] + }, + { + "name": "envoy.rate_limit_descriptors.expr", + "category": "envoy.rate_limit_descriptors", + "type_urls": [ + "envoy.extensions.rate_limit_descriptors.expr.v3.Descriptor" + ] + }, + { + "name": "envoy.matching.inputs.destination_ip", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationIPInput" + ] + }, + { + "name": "envoy.matching.inputs.destination_port", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationPortInput" + ] + }, + { + "name": "envoy.matching.inputs.direct_source_ip", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DirectSourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.dns_san", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.DnsSanInput" + ] + }, + { + "name": "envoy.matching.inputs.request_headers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpRequestHeaderMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.request_trailers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpRequestTrailerMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.response_headers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseHeaderMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.response_trailers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseTrailerMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.server_name", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.ServerNameInput" + ] + }, + { + "name": "envoy.matching.inputs.source_ip", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.source_port", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourcePortInput" + ] + }, + { + "name": "envoy.matching.inputs.source_type", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceTypeInput" + ] + }, + { + "name": "envoy.matching.inputs.status_code_class_input", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseStatusCodeClassMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.status_code_input", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseStatusCodeMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.subject", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.SubjectInput" + ] + }, + { + "name": "envoy.matching.inputs.uri_san", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.UriSanInput" + ] + }, + { + "name": "query_params", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpRequestQueryParamMatchInput" + ] + }, + { + "name": "envoy.tls.cert_validator.default", + "category": "envoy.tls.cert_validator" + }, + { + "name": "envoy.tls.cert_validator.spiffe", + "category": "envoy.tls.cert_validator" + }, + { + "name": "envoy.path.match.uri_template.uri_template_matcher", + "category": "envoy.path.match", + "type_urls": [ + "envoy.extensions.path.match.uri_template.v3.UriTemplateMatchConfig" + ] + }, + { + "name": "envoy.http.original_ip_detection.custom_header", + "category": "envoy.http.original_ip_detection", + "type_urls": [ + "envoy.extensions.http.original_ip_detection.custom_header.v3.CustomHeaderConfig" + ] + }, + { + "name": "envoy.http.original_ip_detection.xff", + "category": "envoy.http.original_ip_detection", + "type_urls": [ + "envoy.extensions.http.original_ip_detection.xff.v3.XffConfig" + ] + }, + { + "name": "envoy.buffer", + "category": "envoy.filters.http.upstream" + }, + { + "name": "envoy.filters.http.admission_control", + "category": "envoy.filters.http.upstream", + "type_urls": [ + "envoy.extensions.filters.http.admission_control.v3.AdmissionControl" + ] + }, + { + "name": "envoy.filters.http.buffer", + "category": "envoy.filters.http.upstream", + "type_urls": [ + "envoy.extensions.filters.http.buffer.v3.Buffer", + "envoy.extensions.filters.http.buffer.v3.BufferPerRoute" + ] + }, + { + "name": "envoy.filters.http.upstream_codec", + "category": "envoy.filters.http.upstream", + "type_urls": [ + "envoy.extensions.filters.http.upstream_codec.v3.UpstreamCodec" + ] + }, + { + "name": "envoy.route.early_data_policy.default", + "category": "envoy.route.early_data_policy", + "type_urls": [ + "envoy.extensions.early_data.v3.DefaultEarlyDataPolicy" + ] + }, + { + "name": "envoy.compression.brotli.compressor", + "category": "envoy.compression.compressor", + "type_urls": [ + "envoy.extensions.compression.brotli.compressor.v3.Brotli" + ] + }, + { + "name": "envoy.compression.gzip.compressor", + "category": "envoy.compression.compressor", + "type_urls": [ + "envoy.extensions.compression.gzip.compressor.v3.Gzip" + ] + }, + { + "name": "envoy.compression.zstd.compressor", + "category": "envoy.compression.compressor", + "type_urls": [ + "envoy.extensions.compression.zstd.compressor.v3.Zstd" + ] + }, + { + "name": "envoy.compression.brotli.decompressor", + "category": "envoy.compression.decompressor", + "type_urls": [ + "envoy.extensions.compression.brotli.decompressor.v3.Brotli" + ] + }, + { + "name": "envoy.compression.gzip.decompressor", + "category": "envoy.compression.decompressor", + "type_urls": [ + "envoy.extensions.compression.gzip.decompressor.v3.Gzip" + ] + }, + { + "name": "envoy.compression.zstd.decompressor", + "category": "envoy.compression.decompressor", + "type_urls": [ + "envoy.extensions.compression.zstd.decompressor.v3.Zstd" + ] + }, + { + "name": "envoy.wasm.runtime.null", + "category": "envoy.wasm.runtime" + }, + { + "name": "envoy.wasm.runtime.v8", + "category": "envoy.wasm.runtime" + }, + { + "name": "envoy.dog_statsd", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.graphite_statsd", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.metrics_service", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.stat_sinks.dog_statsd", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.DogStatsdSink" + ] + }, + { + "name": "envoy.stat_sinks.graphite_statsd", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.extensions.stat_sinks.graphite_statsd.v3.GraphiteStatsdSink" + ] + }, + { + "name": "envoy.stat_sinks.hystrix", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.HystrixSink" + ] + }, + { + "name": "envoy.stat_sinks.metrics_service", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.MetricsServiceConfig" + ] + }, + { + "name": "envoy.stat_sinks.statsd", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.StatsdSink" + ] + }, + { + "name": "envoy.stat_sinks.wasm", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.extensions.stat_sinks.wasm.v3.Wasm" + ] + }, + { + "name": "envoy.statsd", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.path.rewrite.uri_template.uri_template_rewriter", + "category": "envoy.path.rewrite", + "type_urls": [ + "envoy.extensions.path.rewrite.uri_template.v3.UriTemplateRewriteConfig" + ] + }, + { + "name": "envoy.extensions.http.custom_response.local_response_policy", + "category": "envoy.http.custom_response", + "type_urls": [ + "envoy.extensions.http.custom_response.local_response_policy.v3.LocalResponsePolicy" + ] + }, + { + "name": "envoy.extensions.http.custom_response.redirect_policy", + "category": "envoy.http.custom_response", + "type_urls": [ + "envoy.extensions.http.custom_response.redirect_policy.v3.RedirectPolicy" + ] + }, + { + "name": "envoy.matching.actions.format_string", + "category": "envoy.matching.action", + "type_urls": [ + "envoy.config.core.v3.SubstitutionFormatString" + ] + }, + { + "name": "filter-chain-name", + "category": "envoy.matching.action", + "type_urls": [ + "google.protobuf.StringValue" + ] + }, + { + "name": "envoy.quic.deterministic_connection_id_generator", + "category": "envoy.quic.connection_id_generator", + "type_urls": [ + "envoy.extensions.quic.connection_id_generator.v3.DeterministicConnectionIdGeneratorConfig" + ] + }, + { + "name": "envoy.network.dns_resolver.cares", + "category": "envoy.network.dns_resolver", + "type_urls": [ + "envoy.extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig" + ] + }, + { + "name": "envoy.network.dns_resolver.getaddrinfo", + "category": "envoy.network.dns_resolver", + "type_urls": [ + "envoy.extensions.network.dns_resolver.getaddrinfo.v3.GetAddrInfoDnsResolverConfig" + ] + }, + { + "name": "envoy.bootstrap.internal_listener", + "category": "envoy.bootstrap", + "type_urls": [ + "envoy.extensions.bootstrap.internal_listener.v3.InternalListener" + ] + }, + { + "name": "envoy.bootstrap.wasm", + "category": "envoy.bootstrap", + "type_urls": [ + "envoy.extensions.wasm.v3.WasmService" + ] + }, + { + "name": "envoy.extensions.network.socket_interface.default_socket_interface", + "category": "envoy.bootstrap", + "type_urls": [ + "envoy.extensions.network.socket_interface.v3.DefaultSocketInterface" + ] + }, + { + "name": "envoy.filters.listener.http_inspector", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.http_inspector.v3.HttpInspector" + ] + }, + { + "name": "envoy.filters.listener.original_dst", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.original_dst.v3.OriginalDst" + ] + }, + { + "name": "envoy.filters.listener.original_src", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.original_src.v3.OriginalSrc" + ] + }, + { + "name": "envoy.filters.listener.proxy_protocol", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol" + ] + }, + { + "name": "envoy.filters.listener.tls_inspector", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector" + ] + }, + { + "name": "envoy.listener.http_inspector", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.original_dst", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.original_src", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.proxy_protocol", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.tls_inspector", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.matching.common_inputs.environment_variable", + "category": "envoy.matching.common_inputs", + "type_urls": [ + "envoy.extensions.matching.common_inputs.environment_variable.v3.Config" + ] + }, + { + "name": "envoy.matching.matchers.consistent_hashing", + "category": "envoy.matching.input_matchers", + "type_urls": [ + "envoy.extensions.matching.input_matchers.consistent_hashing.v3.ConsistentHashing" + ] + }, + { + "name": "envoy.matching.matchers.ip", + "category": "envoy.matching.input_matchers", + "type_urls": [ + "envoy.extensions.matching.input_matchers.ip.v3.Ip" + ] + }, + { + "name": "envoy.grpc_credentials.aws_iam", + "category": "envoy.grpc_credentials" + }, + { + "name": "envoy.grpc_credentials.default", + "category": "envoy.grpc_credentials" + }, + { + "name": "envoy.grpc_credentials.file_based_metadata", + "category": "envoy.grpc_credentials" + }, + { + "name": "envoy.request_id.uuid", + "category": "envoy.request_id", + "type_urls": [ + "envoy.extensions.request_id.uuid.v3.UuidRequestIdConfig" + ] + }, + { + "name": "envoy.load_balancing_policies.least_request", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.least_request.v3.LeastRequest" + ] + }, + { + "name": "envoy.load_balancing_policies.maglev", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.maglev.v3.Maglev" + ] + }, + { + "name": "envoy.load_balancing_policies.random", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.random.v3.Random" + ] + }, + { + "name": "envoy.load_balancing_policies.ring_hash", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.ring_hash.v3.RingHash" + ] + }, + { + "name": "envoy.load_balancing_policies.round_robin", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.round_robin.v3.RoundRobin" + ] + }, + { + "name": "envoy.ip", + "category": "envoy.resolvers" + }, + { + "name": "envoy.bandwidth_limit", + "category": "envoy.filters.http" + }, + { + "name": "envoy.buffer", + "category": "envoy.filters.http" + }, + { + "name": "envoy.cors", + "category": "envoy.filters.http" + }, + { + "name": "envoy.csrf", + "category": "envoy.filters.http" + }, + { + "name": "envoy.ext_authz", + "category": "envoy.filters.http" + }, + { + "name": "envoy.ext_proc", + "category": "envoy.filters.http" + }, + { + "name": "envoy.fault", + "category": "envoy.filters.http" + }, + { + "name": "envoy.filters.http.adaptive_concurrency", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.adaptive_concurrency.v3.AdaptiveConcurrency" + ] + }, + { + "name": "envoy.filters.http.admission_control", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.admission_control.v3.AdmissionControl" + ] + }, + { + "name": "envoy.filters.http.alternate_protocols_cache", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.alternate_protocols_cache.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.http.aws_lambda", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.aws_lambda.v3.Config", + "envoy.extensions.filters.http.aws_lambda.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.aws_request_signing", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.aws_request_signing.v3.AwsRequestSigning" + ] + }, + { + "name": "envoy.filters.http.bandwidth_limit", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.bandwidth_limit.v3.BandwidthLimit" + ] + }, + { + "name": "envoy.filters.http.buffer", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.buffer.v3.Buffer", + "envoy.extensions.filters.http.buffer.v3.BufferPerRoute" + ] + }, + { + "name": "envoy.filters.http.cache", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.cache.v3.CacheConfig" + ] + }, + { + "name": "envoy.filters.http.cdn_loop", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.cdn_loop.v3.CdnLoopConfig" + ] + }, + { + "name": "envoy.filters.http.composite", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.composite.v3.Composite" + ] + }, + { + "name": "envoy.filters.http.compressor", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.compressor.v3.Compressor", + "envoy.extensions.filters.http.compressor.v3.CompressorPerRoute" + ] + }, + { + "name": "envoy.filters.http.connect_grpc_bridge", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.connect_grpc_bridge.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.http.cors", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.cors.v3.Cors", + "envoy.extensions.filters.http.cors.v3.CorsPolicy" + ] + }, + { + "name": "envoy.filters.http.csrf", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.csrf.v3.CsrfPolicy" + ] + }, + { + "name": "envoy.filters.http.custom_response", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.custom_response.v3.CustomResponse" + ] + }, + { + "name": "envoy.filters.http.decompressor", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.decompressor.v3.Decompressor" + ] + }, + { + "name": "envoy.filters.http.dynamic_forward_proxy", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.dynamic_forward_proxy.v3.FilterConfig", + "envoy.extensions.filters.http.dynamic_forward_proxy.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.ext_authz", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ext_authz.v3.ExtAuthz", + "envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute" + ] + }, + { + "name": "envoy.filters.http.ext_proc", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ext_proc.v3.ExtProcPerRoute", + "envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor" + ] + }, + { + "name": "envoy.filters.http.fault", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.fault.v3.HTTPFault" + ] + }, + { + "name": "envoy.filters.http.file_system_buffer", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.file_system_buffer.v3.FileSystemBufferFilterConfig" + ] + }, + { + "name": "envoy.filters.http.gcp_authn", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig" + ] + }, + { + "name": "envoy.filters.http.grpc_http1_bridge", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_http1_bridge.v3.Config" + ] + }, + { + "name": "envoy.filters.http.grpc_http1_reverse_bridge", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_http1_reverse_bridge.v3.FilterConfig", + "envoy.extensions.filters.http.grpc_http1_reverse_bridge.v3.FilterConfigPerRoute" + ] + }, + { + "name": "envoy.filters.http.grpc_json_transcoder", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder" + ] + }, + { + "name": "envoy.filters.http.grpc_stats", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_stats.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.http.grpc_web", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_web.v3.GrpcWeb" + ] + }, + { + "name": "envoy.filters.http.header_to_metadata", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.header_to_metadata.v3.Config" + ] + }, + { + "name": "envoy.filters.http.health_check", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.health_check.v3.HealthCheck" + ] + }, + { + "name": "envoy.filters.http.ip_tagging", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ip_tagging.v3.IPTagging" + ] + }, + { + "name": "envoy.filters.http.jwt_authn", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication", + "envoy.extensions.filters.http.jwt_authn.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.local_ratelimit", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit" + ] + }, + { + "name": "envoy.filters.http.lua", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.lua.v3.Lua", + "envoy.extensions.filters.http.lua.v3.LuaPerRoute" + ] + }, + { + "name": "envoy.filters.http.match_delegate", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.common.matching.v3.ExtensionWithMatcher" + ] + }, + { + "name": "envoy.filters.http.oauth2", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.oauth2.v3.OAuth2" + ] + }, + { + "name": "envoy.filters.http.on_demand", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.on_demand.v3.OnDemand", + "envoy.extensions.filters.http.on_demand.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.original_src", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.original_src.v3.OriginalSrc" + ] + }, + { + "name": "envoy.filters.http.rate_limit_quota", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig", + "envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaOverride" + ] + }, + { + "name": "envoy.filters.http.ratelimit", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ratelimit.v3.RateLimit", + "envoy.extensions.filters.http.ratelimit.v3.RateLimitPerRoute" + ] + }, + { + "name": "envoy.filters.http.rbac", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.rbac.v3.RBAC", + "envoy.extensions.filters.http.rbac.v3.RBACPerRoute" + ] + }, + { + "name": "envoy.filters.http.router", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.router.v3.Router" + ] + }, + { + "name": "envoy.filters.http.set_metadata", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.set_metadata.v3.Config" + ] + }, + { + "name": "envoy.filters.http.stateful_session", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.stateful_session.v3.StatefulSession", + "envoy.extensions.filters.http.stateful_session.v3.StatefulSessionPerRoute" + ] + }, + { + "name": "envoy.filters.http.tap", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.tap.v3.Tap" + ] + }, + { + "name": "envoy.filters.http.wasm", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.wasm.v3.Wasm" + ] + }, + { + "name": "envoy.grpc_http1_bridge", + "category": "envoy.filters.http" + }, + { + "name": "envoy.grpc_json_transcoder", + "category": "envoy.filters.http" + }, + { + "name": "envoy.grpc_web", + "category": "envoy.filters.http" + }, + { + "name": "envoy.health_check", + "category": "envoy.filters.http" + }, + { + "name": "envoy.ip_tagging", + "category": "envoy.filters.http" + }, + { + "name": "envoy.local_rate_limit", + "category": "envoy.filters.http" + }, + { + "name": "envoy.lua", + "category": "envoy.filters.http" + }, + { + "name": "envoy.rate_limit", + "category": "envoy.filters.http" + }, + { + "name": "envoy.router", + "category": "envoy.filters.http" + }, + { + "name": "envoy.access_loggers.file", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.file.v3.FileAccessLog" + ] + }, + { + "name": "envoy.access_loggers.http_grpc", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.grpc.v3.HttpGrpcAccessLogConfig" + ] + }, + { + "name": "envoy.access_loggers.open_telemetry", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.open_telemetry.v3.OpenTelemetryAccessLogConfig" + ] + }, + { + "name": "envoy.access_loggers.stderr", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.stream.v3.StderrAccessLog" + ] + }, + { + "name": "envoy.access_loggers.stdout", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.stream.v3.StdoutAccessLog" + ] + }, + { + "name": "envoy.access_loggers.tcp_grpc", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.grpc.v3.TcpGrpcAccessLogConfig" + ] + }, + { + "name": "envoy.access_loggers.wasm", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.wasm.v3.WasmAccessLog" + ] + }, + { + "name": "envoy.file_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.http_grpc_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.open_telemetry_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.stderr_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.stdout_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.tcp_grpc_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.wasm_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.config.validators.minimum_clusters", + "category": "envoy.config.validators" + }, + { + "name": "envoy.config.validators.minimum_clusters_validator", + "category": "envoy.config.validators", + "type_urls": [ + "envoy.extensions.config.validators.minimum_clusters.v3.MinimumClustersValidator" + ] + }, + { + "name": "envoy.http.header_validators.envoy_default", + "category": "envoy.http.header_validators", + "type_urls": [ + "envoy.extensions.http.header_validators.envoy_default.v3.HeaderValidatorConfig" + ] + }, + { + "name": "dubbo.hessian2", + "category": "envoy.dubbo_proxy.serializers" + }, + { + "name": "quic.http_server_connection.default", + "category": "quic.http_server_connection" + }, + { + "name": "envoy.transport_sockets.alts", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.alts.v3.Alts" + ] + }, + { + "name": "envoy.transport_sockets.quic", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.quic.v3.QuicDownstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.raw_buffer", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer" + ] + }, + { + "name": "envoy.transport_sockets.starttls", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.starttls.v3.StartTlsConfig" + ] + }, + { + "name": "envoy.transport_sockets.tap", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tap.v3.Tap" + ] + }, + { + "name": "envoy.transport_sockets.tcp_stats", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tcp_stats.v3.Config" + ] + }, + { + "name": "envoy.transport_sockets.tls", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext" + ] + }, + { + "name": "raw_buffer", + "category": "envoy.transport_sockets.downstream" + }, + { + "name": "starttls", + "category": "envoy.transport_sockets.downstream" + }, + { + "name": "tls", + "category": "envoy.transport_sockets.downstream" + }, + { + "name": "envoy.rbac.matchers.upstream_ip_port", + "category": "envoy.rbac.matchers", + "type_urls": [ + "envoy.extensions.rbac.matchers.upstream_ip_port.v3.UpstreamIpPortMatcher" + ] + }, + { + "name": "envoy.key_value.file_based", + "category": "envoy.common.key_value", + "type_urls": [ + "envoy.extensions.key_value.file_based.v3.FileBasedKeyValueStoreConfig" + ] + }, + { + "name": "envoy.matching.inputs.application_protocol", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.ApplicationProtocolInput" + ] + }, + { + "name": "envoy.matching.inputs.destination_ip", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationIPInput" + ] + }, + { + "name": "envoy.matching.inputs.destination_port", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationPortInput" + ] + }, + { + "name": "envoy.matching.inputs.direct_source_ip", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DirectSourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.dns_san", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.DnsSanInput" + ] + }, + { + "name": "envoy.matching.inputs.server_name", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.ServerNameInput" + ] + }, + { + "name": "envoy.matching.inputs.source_ip", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.source_port", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourcePortInput" + ] + }, + { + "name": "envoy.matching.inputs.source_type", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceTypeInput" + ] + }, + { + "name": "envoy.matching.inputs.subject", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.SubjectInput" + ] + }, + { + "name": "envoy.matching.inputs.transport_protocol", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.TransportProtocolInput" + ] + }, + { + "name": "envoy.matching.inputs.uri_san", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.UriSanInput" + ] + }, + { + "name": "dubbo", + "category": "envoy.dubbo_proxy.protocols" + }, + { + "name": "envoy.watchdog.abort_action", + "category": "envoy.guarddog_actions", + "type_urls": [ + "envoy.watchdog.v3.AbortActionConfig" + ] + }, + { + "name": "envoy.watchdog.profile_action", + "category": "envoy.guarddog_actions", + "type_urls": [ + "envoy.extensions.watchdog.profile_action.v3.ProfileActionConfig" + ] + }, + { + "name": "envoy.quic.crypto_stream.server.quiche", + "category": "envoy.quic.server.crypto_stream", + "type_urls": [ + "envoy.extensions.quic.crypto_stream.v3.CryptoServerStreamConfig" + ] + }, + { + "name": "envoy.regex_engines.google_re2", + "category": "envoy.regex_engines", + "type_urls": [ + "envoy.extensions.regex_engines.v3.GoogleRE2" + ] + }, + { + "name": "envoy.http.stateful_session.cookie", + "category": "envoy.http.stateful_session", + "type_urls": [ + "envoy.extensions.http.stateful_session.cookie.v3.CookieBasedSessionState" + ] + }, + { + "name": "envoy.http.stateful_session.header", + "category": "envoy.http.stateful_session", + "type_urls": [ + "envoy.extensions.http.stateful_session.header.v3.HeaderBasedSessionState" + ] + }, + { + "name": "envoy.matching.custom_matchers.trie_matcher", + "category": "envoy.matching.network.custom_matchers", + "type_urls": [ + "xds.type.matcher.v3.IPMatcher" + ] + }, + { + "name": "envoy.udp_packet_writer.default", + "category": "envoy.udp_packet_writer", + "type_urls": [ + "envoy.extensions.udp_packet_writer.v3.UdpDefaultWriterFactory" + ] + }, + { + "name": "envoy.udp_packet_writer.gso", + "category": "envoy.udp_packet_writer", + "type_urls": [ + "envoy.extensions.udp_packet_writer.v3.UdpGsoBatchWriterFactory" + ] + }, + { + "name": "envoy.quic.proof_source.filter_chain", + "category": "envoy.quic.proof_source", + "type_urls": [ + "envoy.extensions.quic.proof_source.v3.ProofSourceConfig" + ] + }, + { + "name": "envoy.resource_monitors.fixed_heap", + "category": "envoy.resource_monitors", + "type_urls": [ + "envoy.extensions.resource_monitors.fixed_heap.v3.FixedHeapConfig" + ] + }, + { + "name": "envoy.resource_monitors.injected_resource", + "category": "envoy.resource_monitors", + "type_urls": [ + "envoy.extensions.resource_monitors.injected_resource.v3.InjectedResourceConfig" + ] + }, + { + "name": "envoy.http.stateful_header_formatters.preserve_case", + "category": "envoy.http.stateful_header_formatters", + "type_urls": [ + "envoy.extensions.http.header_formatters.preserve_case.v3.PreserveCaseFormatterConfig" + ] + }, + { + "name": "preserve_case", + "category": "envoy.http.stateful_header_formatters" + }, + { + "name": "envoy.filters.thrift.header_to_metadata", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.filters.header_to_metadata.v3.HeaderToMetadata" + ] + }, + { + "name": "envoy.filters.thrift.payload_to_metadata", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.filters.payload_to_metadata.v3.PayloadToMetadata" + ] + }, + { + "name": "envoy.filters.thrift.rate_limit", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.filters.ratelimit.v3.RateLimit" + ] + }, + { + "name": "envoy.filters.thrift.router", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.router.v3.Router" + ] + }, + { + "name": "envoy.tracers.datadog", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.DatadogConfig" + ] + }, + { + "name": "envoy.tracers.dynamic_ot", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.DynamicOtConfig" + ] + }, + { + "name": "envoy.tracers.opencensus", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.OpenCensusConfig" + ] + }, + { + "name": "envoy.tracers.opentelemetry", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.OpenTelemetryConfig" + ] + }, + { + "name": "envoy.tracers.skywalking", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.SkyWalkingConfig" + ] + }, + { + "name": "envoy.tracers.xray", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.XRayConfig" + ] + }, + { + "name": "envoy.tracers.zipkin", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.ZipkinConfig" + ] + }, + { + "name": "envoy.zipkin", + "category": "envoy.tracers" + }, + { + "name": "envoy.retry_priorities.previous_priorities", + "category": "envoy.retry_priorities", + "type_urls": [ + "envoy.extensions.retry.priority.previous_priorities.v3.PreviousPrioritiesConfig" + ] + }, + { + "name": "envoy.http.early_header_mutation.header_mutation", + "category": "envoy.http.early_header_mutation", + "type_urls": [ + "envoy.extensions.http.early_header_mutation.header_mutation.v3.HeaderMutation" + ] + }, + { + "name": "envoy.connection_handler.default", + "category": "envoy.connection_handler" + }, + { + "name": "envoy.transport_sockets.alts", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.alts.v3.Alts" + ] + }, + { + "name": "envoy.transport_sockets.http_11_proxy", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.http_11_proxy.v3.Http11ProxyUpstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.internal_upstream", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.internal_upstream.v3.InternalUpstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.quic", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.quic.v3.QuicUpstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.raw_buffer", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer" + ] + }, + { + "name": "envoy.transport_sockets.starttls", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.starttls.v3.UpstreamStartTlsConfig" + ] + }, + { + "name": "envoy.transport_sockets.tap", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tap.v3.Tap" + ] + }, + { + "name": "envoy.transport_sockets.tcp_stats", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tcp_stats.v3.Config" + ] + }, + { + "name": "envoy.transport_sockets.tls", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext" + ] + }, + { + "name": "envoy.transport_sockets.upstream_proxy_protocol", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.proxy_protocol.v3.ProxyProtocolUpstreamTransport" + ] + }, + { + "name": "raw_buffer", + "category": "envoy.transport_sockets.upstream" + }, + { + "name": "starttls", + "category": "envoy.transport_sockets.upstream" + }, + { + "name": "tls", + "category": "envoy.transport_sockets.upstream" + }, + { + "name": "auto", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "framed", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "header", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "unframed", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "envoy.cluster.eds", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.logical_dns", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.original_dst", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.static", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.strict_dns", + "category": "envoy.clusters" + }, + { + "name": "envoy.clusters.aggregate", + "category": "envoy.clusters" + }, + { + "name": "envoy.clusters.dynamic_forward_proxy", + "category": "envoy.clusters" + }, + { + "name": "envoy.clusters.redis", + "category": "envoy.clusters" + }, + { + "name": "envoy.access_loggers.extension_filters.cel", + "category": "envoy.access_loggers.extension_filters", + "type_urls": [ + "envoy.extensions.access_loggers.filters.cel.v3.ExpressionFilter" + ] + }, + { + "name": "auto", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "binary", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "binary/non-strict", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "compact", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "twitter", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "envoy.extensions.upstreams.http.v3.HttpProtocolOptions", + "category": "envoy.upstream_options", + "type_urls": [ + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions" + ] + }, + { + "name": "envoy.extensions.upstreams.tcp.v3.TcpProtocolOptions", + "category": "envoy.upstream_options", + "type_urls": [ + "envoy.extensions.upstreams.tcp.v3.TcpProtocolOptions" + ] + }, + { + "name": "envoy.upstreams.http.http_protocol_options", + "category": "envoy.upstream_options" + }, + { + "name": "envoy.upstreams.tcp.tcp_protocol_options", + "category": "envoy.upstream_options" + }, + { + "name": "envoy.listener_manager_impl.default", + "category": "envoy.listener_manager_impl", + "type_urls": [ + "envoy.config.listener.v3.ListenerManager" + ] + }, + { + "name": "default", + "category": "network.connection.client" + }, + { + "name": "envoy_internal", + "category": "network.connection.client" + }, + { + "name": "envoy.filters.udp.dns_filter", + "category": "envoy.filters.udp_listener", + "type_urls": [ + "envoy.extensions.filters.udp.dns_filter.v3.DnsFilterConfig" + ] + }, + { + "name": "envoy.filters.udp_listener.udp_proxy", + "category": "envoy.filters.udp_listener", + "type_urls": [ + "envoy.extensions.filters.udp.udp_proxy.v3.UdpProxyConfig" + ] + }, + { + "name": "envoy.extensions.http.cache.file_system_http_cache", + "category": "envoy.http.cache", + "type_urls": [ + "envoy.extensions.http.cache.file_system_http_cache.v3.FileSystemHttpCacheConfig" + ] + }, + { + "name": "envoy.extensions.http.cache.simple", + "category": "envoy.http.cache", + "type_urls": [ + "envoy.extensions.http.cache.simple_http_cache.v3.SimpleHttpCacheConfig" + ] + }, + { + "name": "envoy.retry_host_predicates.omit_canary_hosts", + "category": "envoy.retry_host_predicates", + "type_urls": [ + "envoy.extensions.retry.host.omit_canary_hosts.v3.OmitCanaryHostsPredicate" + ] + }, + { + "name": "envoy.retry_host_predicates.omit_host_metadata", + "category": "envoy.retry_host_predicates", + "type_urls": [ + "envoy.extensions.retry.host.omit_host_metadata.v3.OmitHostMetadataConfig" + ] + }, + { + "name": "envoy.retry_host_predicates.previous_hosts", + "category": "envoy.retry_host_predicates", + "type_urls": [ + "envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" + ] + }, + { + "name": "envoy.formatter.metadata", + "category": "envoy.formatter", + "type_urls": [ + "envoy.extensions.formatter.metadata.v3.Metadata" + ] + }, + { + "name": "envoy.formatter.req_without_query", + "category": "envoy.formatter", + "type_urls": [ + "envoy.extensions.formatter.req_without_query.v3.ReqWithoutQuery" + ] + }, + { + "name": "envoy.internal_redirect_predicates.allow_listed_routes", + "category": "envoy.internal_redirect_predicates", + "type_urls": [ + "envoy.extensions.internal_redirect.allow_listed_routes.v3.AllowListedRoutesConfig" + ] + }, + { + "name": "envoy.internal_redirect_predicates.previous_routes", + "category": "envoy.internal_redirect_predicates", + "type_urls": [ + "envoy.extensions.internal_redirect.previous_routes.v3.PreviousRoutesConfig" + ] + }, + { + "name": "envoy.internal_redirect_predicates.safe_cross_scheme", + "category": "envoy.internal_redirect_predicates", + "type_urls": [ + "envoy.extensions.internal_redirect.safe_cross_scheme.v3.SafeCrossSchemeConfig" + ] + }, + { + "name": "envoy.matching.custom_matchers.trie_matcher", + "category": "envoy.matching.http.custom_matchers", + "type_urls": [ + "xds.type.matcher.v3.IPMatcher" + ] + }, + { + "name": "envoy.filters.dubbo.router", + "category": "envoy.dubbo_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.dubbo_proxy.router.v3.Router" + ] + }, + { + "name": "envoy.echo", + "category": "envoy.filters.network" + }, + { + "name": "envoy.ext_authz", + "category": "envoy.filters.network" + }, + { + "name": "envoy.filters.network.connection_limit", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.connection_limit.v3.ConnectionLimit" + ] + }, + { + "name": "envoy.filters.network.direct_response", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.direct_response.v3.Config" + ] + }, + { + "name": "envoy.filters.network.dubbo_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.dubbo_proxy.v3.DubboProxy" + ] + }, + { + "name": "envoy.filters.network.echo", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.echo.v3.Echo" + ] + }, + { + "name": "envoy.filters.network.ext_authz", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.ext_authz.v3.ExtAuthz" + ] + }, + { + "name": "envoy.filters.network.http_connection_manager", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager" + ] + }, + { + "name": "envoy.filters.network.local_ratelimit", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.local_ratelimit.v3.LocalRateLimit" + ] + }, + { + "name": "envoy.filters.network.mongo_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.mongo_proxy.v3.MongoProxy" + ] + }, + { + "name": "envoy.filters.network.ratelimit", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.ratelimit.v3.RateLimit" + ] + }, + { + "name": "envoy.filters.network.rbac", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.rbac.v3.RBAC" + ] + }, + { + "name": "envoy.filters.network.redis_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.redis_proxy.v3.RedisProxy" + ] + }, + { + "name": "envoy.filters.network.sni_cluster", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.sni_cluster.v3.SniCluster" + ] + }, + { + "name": "envoy.filters.network.sni_dynamic_forward_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.network.tcp_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy" + ] + }, + { + "name": "envoy.filters.network.thrift_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.v3.ThriftProxy" + ] + }, + { + "name": "envoy.filters.network.wasm", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.wasm.v3.Wasm" + ] + }, + { + "name": "envoy.filters.network.zookeeper_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.zookeeper_proxy.v3.ZooKeeperProxy" + ] + }, + { + "name": "envoy.http_connection_manager", + "category": "envoy.filters.network" + }, + { + "name": "envoy.mongo_proxy", + "category": "envoy.filters.network" + }, + { + "name": "envoy.ratelimit", + "category": "envoy.filters.network" + }, + { + "name": "envoy.redis_proxy", + "category": "envoy.filters.network" + }, + { + "name": "envoy.tcp_proxy", + "category": "envoy.filters.network" + }, + { + "name": "envoy.health_checkers.redis", + "category": "envoy.health_checkers", + "type_urls": [ + "envoy.extensions.health_checkers.redis.v3.Redis" + ] + }, + { + "name": "envoy.health_checkers.thrift", + "category": "envoy.health_checkers", + "type_urls": [ + "envoy.extensions.health_checkers.thrift.v3.Thrift" + ] + } + ] + }, + "static_resources": { + "clusters": [ + { + "name": "xds_cluster", + "type": "STRICT_DNS", + "connect_timeout": "1s", + "transport_socket": { + "name": "envoy.transport_sockets.tls", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext", + "common_tls_context": { + "tls_params": { + "tls_maximum_protocol_version": "TLSv1_3" + }, + "tls_certificate_sds_secret_configs": [ + { + "name": "xds_certificate", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-certificate.json" + } + } + } + ], + "validation_context_sds_secret_config": { + "name": "xds_trusted_ca", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-trusted-ca.json" + } + } + } + } + } + }, + "load_assignment": { + "cluster_name": "xds_cluster", + "endpoints": [ + { + "lb_endpoints": [ + { + "endpoint": { + "address": { + "socket_address": { + "address": "envoy-gateway", + "port_value": 18000 + } + } + } + } + ] + } + ] + }, + "typed_extension_protocol_options": { + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions": { + "@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions", + "explicit_http_config": { + "http2_protocol_options": {} + } + } + } + } + ] + }, + "dynamic_resources": { + "lds_config": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "set_node_on_first_message_only": true, + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + }, + "cds_config": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "set_node_on_first_message_only": true, + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + } + }, + "admin": { + "address": { + "socket_address": { + "address": "127.0.0.1", + "port_value": 19000 + } + }, + "access_log": [ + { + "name": "envoy.access_loggers.file", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog", + "path": "/dev/null" + } + } + ] + }, + "layered_runtime": { + "layers": [ + { + "name": "runtime-0", + "rtds_layer": { + "name": "runtime-0", + "rtds_config": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + } + } + } + ] + } + }, + "last_updated": "2023-02-23T09:05:23.422Z" + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.ClustersConfigDump", + "version_info": "2", + "static_clusters": [ + { + "cluster": { + "@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster", + "name": "xds_cluster", + "type": "STRICT_DNS", + "connect_timeout": "1s", + "transport_socket": { + "name": "envoy.transport_sockets.tls", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext", + "common_tls_context": { + "tls_params": { + "tls_maximum_protocol_version": "TLSv1_3" + }, + "tls_certificate_sds_secret_configs": [ + { + "name": "xds_certificate", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-certificate.json" + } + } + } + ], + "validation_context_sds_secret_config": { + "name": "xds_trusted_ca", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-trusted-ca.json" + } + } + } + } + } + }, + "load_assignment": { + "cluster_name": "xds_cluster", + "endpoints": [ + { + "lb_endpoints": [ + { + "endpoint": { + "address": { + "socket_address": { + "address": "envoy-gateway", + "port_value": 18000 + } + } + } + } + ] + } + ] + }, + "typed_extension_protocol_options": { + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions": { + "@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions", + "explicit_http_config": { + "http2_protocol_options": {} + } + } + } + }, + "last_updated": "2023-02-23T09:05:23.436Z" + } + ], + "dynamic_active_clusters": [ + { + "version_info": "2a0a1698a9d3e05b802047b0cd36b52a070afa49042e1ba267168c5265c7cabf", + "cluster": { + "@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster", + "name": "default-backend-rule-0-match-0-www.example.com", + "type": "STATIC", + "connect_timeout": "5s", + "dns_lookup_family": "V4_ONLY", + "outlier_detection": {}, + "common_lb_config": { + "locality_weighted_lb_config": {} + }, + "load_assignment": { + "cluster_name": "default-backend-rule-0-match-0-www.example.com", + "endpoints": [ + { + "locality": {}, + "lb_endpoints": [ + { + "endpoint": { + "address": { + "socket_address": { + "address": "10.96.159.190", + "port_value": 3000 + } + } + }, + "load_balancing_weight": 1 + } + ], + "load_balancing_weight": 1 + } + ] + } + }, + "last_updated": "2023-02-23T09:05:38.443Z" + } + ] + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.ListenersConfigDump", + "version_info": "2", + "dynamic_listeners": [ + { + "name": "default-eg-http", + "active_state": { + "version_info": "42c71fb50c315ee3a32b327da69f8cc0baf420bc84b747e82d9c38e1b0c33eb2", + "listener": { + "@type": "type.googleapis.com/envoy.config.listener.v3.Listener", + "name": "default-eg-http", + "address": { + "socket_address": { + "address": "0.0.0.0", + "port_value": 10080 + } + }, + "access_log": [ + { + "name": "envoy.access_loggers.file", + "filter": { + "response_flag_filter": { + "flags": [ + "NR" + ] + } + }, + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog", + "path": "/dev/stdout" + } + } + ], + "default_filter_chain": { + "filters": [ + { + "name": "envoy.filters.network.http_connection_manager", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager", + "stat_prefix": "http", + "rds": { + "config_source": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "set_node_on_first_message_only": true, + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + }, + "route_config_name": "default-eg-http" + }, + "http_filters": [ + { + "name": "envoy.filters.http.router", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router" + } + } + ], + "access_log": [ + { + "name": "envoy.access_loggers.file", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog", + "path": "/dev/stdout" + } + } + ], + "use_remote_address": true, + "upgrade_configs": [ + { + "upgrade_type": "websocket" + } + ] + } + } + ] + } + }, + "last_updated": "2023-02-23T09:05:38.446Z" + } + } + ] + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.ScopedRoutesConfigDump" + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.RoutesConfigDump", + "dynamic_route_configs": [ + { + "version_info": "cb1e51997a9c3aa6f4d920f39fd5bdbd966e9382b7b6bdf42efca8c22c6c3442", + "route_config": { + "@type": "type.googleapis.com/envoy.config.route.v3.RouteConfiguration", + "name": "default-eg-http", + "virtual_hosts": [ + { + "name": "default-eg-http", + "domains": [ + "*" + ], + "routes": [ + { + "match": { + "prefix": "/", + "headers": [ + { + "name": ":authority", + "string_match": { + "exact": "www.example.com" + } + } + ] + }, + "route": { + "cluster": "default-backend-rule-0-match-0-www.example.com" + } + } + ] + } + ] + }, + "last_updated": "2023-02-23T09:05:38.448Z" + } + ] + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.SecretsConfigDump", + "dynamic_active_secrets": [ + { + "name": "xds_certificate", + "last_updated": "2023-02-23T09:05:23.442Z", + "secret": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret", + "name": "xds_certificate", + "tls_certificate": { + "certificate_chain": { + "inline_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLekNDQWhPZ0F3SUJBZ0lFTnJRVi9qQU5CZ2txaGtpRzl3MEJBUXNGQURBc01SWXdGQVlEVlFRREV3MWwKYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEVlFRRkV3azFOalE0TXpRek9EVXdIaGNOTWpNd01qRTNNRE0wTVRJNApXaGNOTWpRd01qRTRNRE0wTVRJNFdqQU1NUW93Q0FZRFZRUUREQUVxTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGCkFBT0NBUThBTUlJQkNnS0NBUUVBNmdNSTJSNElEeE5mQ2o1YmZHU1hVUjF4YkVjRjE5VXlhVC9VUEZZcFltM0gKN2c4T3Z6YWRlelFyRkt3dG9PWWFDN0hjam8zVnVHSmhqSDQ1Z3lVbWFzSEg1Q1gzaWFlRlhxQXdVQjRqVTZQSgpBbElCZWlMRVdZVjN1VjMwcGlKK09DWFhrUEQzSFFVb0ZYbnljcHM3OE9PbjZoS0wwNUY0YkJsT2UrMFdIUHdECll2dFQ4TEdpVmcrSkxhR2lxaGgxOXY5endwQUd2akI2Z09kN1BjdkNQNFExUHdkMWdMSnNXVFNweGhDUEVPb2kKV2ZSOG56RERVUHU5aXc2QTJObW1XQ1FxSVNYcDlZUmJMTEdjZnV4VURjcFVYMHpqY0xvcE1sajBnM0RkYVpWRwpzNm9JcW9BSjZ6MFhvdWwrM0ZZdUtJYy8rT1V3VkR1VkI4K0ZRZzlYdlFJREFRQUJvM1V3Y3pBT0JnTlZIUThCCkFmOEVCQU1DQlBBd0hRWURWUjBPQkJZRUZKaUJ3cytVaFRlT2p1L1ZXT29LQWNTSmZBeXVNQjhHQTFVZEl3UVkKTUJhQUZCT3kvOGkxeVMxRWxpN0tNK0gyeXZEM1BJMG1NQ0VHQTFVZEVRUWFNQmlDRmlvdVpXNTJiM2t0WjJGMApaWGRoZVMxemVYTjBaVzB3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZraHdIakZtQWxqdEpheU54WitodURGCm5UdWd0REZvSTBFT2J0cUhLYnloWU9sdlNFdkhxbFNQSHNRUUhmQnQwbHpOOEtGUTd2YWxTSHRBZStlNzBETHkKaGY3TDQ3eklST3NLcmtmb0tjMjRqaUhNQkVwbCtJdjllU1RWVG9WemxzazVZUGxET2lrMzZpRUY3WDVVZ0RheApsVllZZnpSYzRUb0poODMwT285Wm9pai9LM295dVNXcTVGRzVFWExmeW9tQzZPQ3dxRm5GNzRSM21FTjVheDRlCnppVm5QVDNxVmFZdytzNngwSVhHU282U2M3Q2lUbmMrckFNa3FJNVNsK2p5RHhKTkZBQlIvRllCcTQzK1B1UGkKN0YxOEw0N2l3aVFFYU82NUJzU2hlYmg1Qk1VbytDdzIyM3JsMGRpTldwY3FrdVhtT1BWNDlrWkZkdHpFNytVPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "private_key": { + "inline_bytes": "W3JlZGFjdGVkXQ==" + } + } + } + }, + { + "name": "xds_trusted_ca", + "last_updated": "2023-02-23T09:05:23.447Z", + "secret": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret", + "name": "xds_trusted_ca", + "validation_context": { + "trusted_ca": { + "inline_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURHRENDQWdDZ0F3SUJBZ0lFSWFxd1VUQU5CZ2txaGtpRzl3MEJBUXNGQURBc01SWXdGQVlEVlFRREV3MWwKYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEVlFRRkV3azFOalE0TXpRek9EVXdIaGNOTWpNd01qRTNNRE0wTVRJNApXaGNOTWpRd01qRTRNRE0wTVRJNFdqQXNNUll3RkFZRFZRUURFdzFsYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEClZRUUZFd2sxTmpRNE16UXpPRFV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRDIKeFMrNkRWY2FvbHFkVVBzTHZwNUtQMEQyV0hrTkVEY0tPeml3bzZNYm9wczFLYWJnNXVYSVl5T21JRWNTTXNKNwpHbVAxMlJjK0J3V1dFWXRrTHVPU3BwQm1lSjN3aDRrUlVRVTRTemRFU1dDcU40RTNpcTJib3FFVm53SkFGQ1ZpCldldGVjZkZsODZFalliQUxxSnRCbGJCbFFQM1ZMZ1hva0VVamJ4QmFobE1wZitUWkVJNFBuam1zUWN5a21LeXIKaDJwdmM3cnZYb29HTlhTM0Q0eFc1VDY3dmxLYi94UlM3c2gwTkJEU0dtTE1jY2pxWFZXazVOR2lBWVB3dXBWSwpTWG02dnZXUFZCdEd1bkZhS0JSRGx4TlJrb0wzRUN6UkNtenoxR2ZYMGJkSm1leElOM2VIUFBRdkd0M0txeUlnCkgrYnc0OXpqdlVUb2dNcXFpTlcvQWdNQkFBR2pRakJBTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQQmdOVkhSTUIKQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRVHN2L0l0Y2t0UkpZdXlqUGg5c3J3OXp5TkpqQU5CZ2txaGtpRwo5dzBCQVFzRkFBT0NBUUVBd2dvZEsxalhVWFZDVXBTSjE0cEo3S3ZobWZPT1hkaVNISmNSSzlIUzI1c2xwOWN2CkJDSndmWUZmanJ4Rmc5TnV4aVpiM01oVXk5MDBqenBPdk1QWStEeUxFWFVxTGd5ZlBMUzYveVliem8yZHdwdzMKOCtrTXlsQUFlZmtaSW9oT0VhYSsvNFFBVVVGZVp1a1B6bmF6RzZIWnZKQkNxWVdRNXBaSSt3WTI1dzhEU0VOMgpkOCswVkpzWU5IdUk4aXhneGZhUkRycW5LRHBMUGJ3Z3VaRDl6ZkV3dVFaNG1oeEd0Vk1wR0NLSndscWFhdXJ0CkF5aGhzOXBHNERndkpSY1BLeFY4bndRdzZtSm55dkIxcExxTW1aQTVqZWhxbFNvUGVpWUlBMk1neU83cTVPYmMKL040bzBNTVdvZ1piRWR6aTBnTXJRT2lpNE41Q0ZlakVrYStIMmc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "match_typed_subject_alt_names": [ + { + "san_type": "DNS", + "matcher": { + "exact": "envoy-gateway" + } + } + ] + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/internal/cmd/egctl/testdata/config/out.json b/internal/cmd/egctl/testdata/config/out.json new file mode 100644 index 00000000000..d181287d69d --- /dev/null +++ b/internal/cmd/egctl/testdata/config/out.json @@ -0,0 +1,2276 @@ +{ + "configs": [ + { + "@type": "type.googleapis.com/envoy.admin.v3.BootstrapConfigDump", + "bootstrap": { + "node": { + "user_agent_name": "envoy", + "user_agent_build_version": { + "version": { + "major_number": 1, + "minor_number": 26 + }, + "metadata": { + "revision.status": "Clean", + "revision.sha": "14111e3c62d3d38b0c921cb7011fd0a94e880aed", + "ssl.version": "BoringSSL", + "build.label": "dev", + "build.type": "RELEASE" + } + }, + "extensions": [ + { + "name": "envoy.filters.connection_pools.tcp.generic", + "category": "envoy.upstreams", + "type_urls": [ + "envoy.extensions.upstreams.tcp.generic.v3.GenericConnectionPoolProto" + ] + }, + { + "name": "envoy.rate_limit_descriptors.expr", + "category": "envoy.rate_limit_descriptors", + "type_urls": [ + "envoy.extensions.rate_limit_descriptors.expr.v3.Descriptor" + ] + }, + { + "name": "envoy.matching.inputs.destination_ip", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationIPInput" + ] + }, + { + "name": "envoy.matching.inputs.destination_port", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationPortInput" + ] + }, + { + "name": "envoy.matching.inputs.direct_source_ip", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DirectSourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.dns_san", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.DnsSanInput" + ] + }, + { + "name": "envoy.matching.inputs.request_headers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpRequestHeaderMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.request_trailers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpRequestTrailerMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.response_headers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseHeaderMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.response_trailers", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseTrailerMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.server_name", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.ServerNameInput" + ] + }, + { + "name": "envoy.matching.inputs.source_ip", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.source_port", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourcePortInput" + ] + }, + { + "name": "envoy.matching.inputs.source_type", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceTypeInput" + ] + }, + { + "name": "envoy.matching.inputs.status_code_class_input", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseStatusCodeClassMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.status_code_input", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpResponseStatusCodeMatchInput" + ] + }, + { + "name": "envoy.matching.inputs.subject", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.SubjectInput" + ] + }, + { + "name": "envoy.matching.inputs.uri_san", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.UriSanInput" + ] + }, + { + "name": "query_params", + "category": "envoy.matching.http.input", + "type_urls": [ + "envoy.type.matcher.v3.HttpRequestQueryParamMatchInput" + ] + }, + { + "name": "envoy.tls.cert_validator.default", + "category": "envoy.tls.cert_validator" + }, + { + "name": "envoy.tls.cert_validator.spiffe", + "category": "envoy.tls.cert_validator" + }, + { + "name": "envoy.path.match.uri_template.uri_template_matcher", + "category": "envoy.path.match", + "type_urls": [ + "envoy.extensions.path.match.uri_template.v3.UriTemplateMatchConfig" + ] + }, + { + "name": "envoy.http.original_ip_detection.custom_header", + "category": "envoy.http.original_ip_detection", + "type_urls": [ + "envoy.extensions.http.original_ip_detection.custom_header.v3.CustomHeaderConfig" + ] + }, + { + "name": "envoy.http.original_ip_detection.xff", + "category": "envoy.http.original_ip_detection", + "type_urls": [ + "envoy.extensions.http.original_ip_detection.xff.v3.XffConfig" + ] + }, + { + "name": "envoy.buffer", + "category": "envoy.filters.http.upstream" + }, + { + "name": "envoy.filters.http.admission_control", + "category": "envoy.filters.http.upstream", + "type_urls": [ + "envoy.extensions.filters.http.admission_control.v3.AdmissionControl" + ] + }, + { + "name": "envoy.filters.http.buffer", + "category": "envoy.filters.http.upstream", + "type_urls": [ + "envoy.extensions.filters.http.buffer.v3.Buffer", + "envoy.extensions.filters.http.buffer.v3.BufferPerRoute" + ] + }, + { + "name": "envoy.filters.http.upstream_codec", + "category": "envoy.filters.http.upstream", + "type_urls": [ + "envoy.extensions.filters.http.upstream_codec.v3.UpstreamCodec" + ] + }, + { + "name": "envoy.route.early_data_policy.default", + "category": "envoy.route.early_data_policy", + "type_urls": [ + "envoy.extensions.early_data.v3.DefaultEarlyDataPolicy" + ] + }, + { + "name": "envoy.compression.brotli.compressor", + "category": "envoy.compression.compressor", + "type_urls": [ + "envoy.extensions.compression.brotli.compressor.v3.Brotli" + ] + }, + { + "name": "envoy.compression.gzip.compressor", + "category": "envoy.compression.compressor", + "type_urls": [ + "envoy.extensions.compression.gzip.compressor.v3.Gzip" + ] + }, + { + "name": "envoy.compression.zstd.compressor", + "category": "envoy.compression.compressor", + "type_urls": [ + "envoy.extensions.compression.zstd.compressor.v3.Zstd" + ] + }, + { + "name": "envoy.compression.brotli.decompressor", + "category": "envoy.compression.decompressor", + "type_urls": [ + "envoy.extensions.compression.brotli.decompressor.v3.Brotli" + ] + }, + { + "name": "envoy.compression.gzip.decompressor", + "category": "envoy.compression.decompressor", + "type_urls": [ + "envoy.extensions.compression.gzip.decompressor.v3.Gzip" + ] + }, + { + "name": "envoy.compression.zstd.decompressor", + "category": "envoy.compression.decompressor", + "type_urls": [ + "envoy.extensions.compression.zstd.decompressor.v3.Zstd" + ] + }, + { + "name": "envoy.wasm.runtime.null", + "category": "envoy.wasm.runtime" + }, + { + "name": "envoy.wasm.runtime.v8", + "category": "envoy.wasm.runtime" + }, + { + "name": "envoy.dog_statsd", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.graphite_statsd", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.metrics_service", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.stat_sinks.dog_statsd", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.DogStatsdSink" + ] + }, + { + "name": "envoy.stat_sinks.graphite_statsd", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.extensions.stat_sinks.graphite_statsd.v3.GraphiteStatsdSink" + ] + }, + { + "name": "envoy.stat_sinks.hystrix", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.HystrixSink" + ] + }, + { + "name": "envoy.stat_sinks.metrics_service", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.MetricsServiceConfig" + ] + }, + { + "name": "envoy.stat_sinks.statsd", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.config.metrics.v3.StatsdSink" + ] + }, + { + "name": "envoy.stat_sinks.wasm", + "category": "envoy.stats_sinks", + "type_urls": [ + "envoy.extensions.stat_sinks.wasm.v3.Wasm" + ] + }, + { + "name": "envoy.statsd", + "category": "envoy.stats_sinks" + }, + { + "name": "envoy.path.rewrite.uri_template.uri_template_rewriter", + "category": "envoy.path.rewrite", + "type_urls": [ + "envoy.extensions.path.rewrite.uri_template.v3.UriTemplateRewriteConfig" + ] + }, + { + "name": "envoy.extensions.http.custom_response.local_response_policy", + "category": "envoy.http.custom_response", + "type_urls": [ + "envoy.extensions.http.custom_response.local_response_policy.v3.LocalResponsePolicy" + ] + }, + { + "name": "envoy.extensions.http.custom_response.redirect_policy", + "category": "envoy.http.custom_response", + "type_urls": [ + "envoy.extensions.http.custom_response.redirect_policy.v3.RedirectPolicy" + ] + }, + { + "name": "envoy.matching.actions.format_string", + "category": "envoy.matching.action", + "type_urls": [ + "envoy.config.core.v3.SubstitutionFormatString" + ] + }, + { + "name": "filter-chain-name", + "category": "envoy.matching.action", + "type_urls": [ + "google.protobuf.StringValue" + ] + }, + { + "name": "envoy.quic.deterministic_connection_id_generator", + "category": "envoy.quic.connection_id_generator", + "type_urls": [ + "envoy.extensions.quic.connection_id_generator.v3.DeterministicConnectionIdGeneratorConfig" + ] + }, + { + "name": "envoy.network.dns_resolver.cares", + "category": "envoy.network.dns_resolver", + "type_urls": [ + "envoy.extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig" + ] + }, + { + "name": "envoy.network.dns_resolver.getaddrinfo", + "category": "envoy.network.dns_resolver", + "type_urls": [ + "envoy.extensions.network.dns_resolver.getaddrinfo.v3.GetAddrInfoDnsResolverConfig" + ] + }, + { + "name": "envoy.bootstrap.internal_listener", + "category": "envoy.bootstrap", + "type_urls": [ + "envoy.extensions.bootstrap.internal_listener.v3.InternalListener" + ] + }, + { + "name": "envoy.bootstrap.wasm", + "category": "envoy.bootstrap", + "type_urls": [ + "envoy.extensions.wasm.v3.WasmService" + ] + }, + { + "name": "envoy.extensions.network.socket_interface.default_socket_interface", + "category": "envoy.bootstrap", + "type_urls": [ + "envoy.extensions.network.socket_interface.v3.DefaultSocketInterface" + ] + }, + { + "name": "envoy.filters.listener.http_inspector", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.http_inspector.v3.HttpInspector" + ] + }, + { + "name": "envoy.filters.listener.original_dst", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.original_dst.v3.OriginalDst" + ] + }, + { + "name": "envoy.filters.listener.original_src", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.original_src.v3.OriginalSrc" + ] + }, + { + "name": "envoy.filters.listener.proxy_protocol", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol" + ] + }, + { + "name": "envoy.filters.listener.tls_inspector", + "category": "envoy.filters.listener", + "type_urls": [ + "envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector" + ] + }, + { + "name": "envoy.listener.http_inspector", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.original_dst", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.original_src", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.proxy_protocol", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.listener.tls_inspector", + "category": "envoy.filters.listener" + }, + { + "name": "envoy.matching.common_inputs.environment_variable", + "category": "envoy.matching.common_inputs", + "type_urls": [ + "envoy.extensions.matching.common_inputs.environment_variable.v3.Config" + ] + }, + { + "name": "envoy.matching.matchers.consistent_hashing", + "category": "envoy.matching.input_matchers", + "type_urls": [ + "envoy.extensions.matching.input_matchers.consistent_hashing.v3.ConsistentHashing" + ] + }, + { + "name": "envoy.matching.matchers.ip", + "category": "envoy.matching.input_matchers", + "type_urls": [ + "envoy.extensions.matching.input_matchers.ip.v3.Ip" + ] + }, + { + "name": "envoy.grpc_credentials.aws_iam", + "category": "envoy.grpc_credentials" + }, + { + "name": "envoy.grpc_credentials.default", + "category": "envoy.grpc_credentials" + }, + { + "name": "envoy.grpc_credentials.file_based_metadata", + "category": "envoy.grpc_credentials" + }, + { + "name": "envoy.request_id.uuid", + "category": "envoy.request_id", + "type_urls": [ + "envoy.extensions.request_id.uuid.v3.UuidRequestIdConfig" + ] + }, + { + "name": "envoy.load_balancing_policies.least_request", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.least_request.v3.LeastRequest" + ] + }, + { + "name": "envoy.load_balancing_policies.maglev", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.maglev.v3.Maglev" + ] + }, + { + "name": "envoy.load_balancing_policies.random", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.random.v3.Random" + ] + }, + { + "name": "envoy.load_balancing_policies.ring_hash", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.ring_hash.v3.RingHash" + ] + }, + { + "name": "envoy.load_balancing_policies.round_robin", + "category": "envoy.load_balancing_policies", + "type_urls": [ + "envoy.extensions.load_balancing_policies.round_robin.v3.RoundRobin" + ] + }, + { + "name": "envoy.ip", + "category": "envoy.resolvers" + }, + { + "name": "envoy.bandwidth_limit", + "category": "envoy.filters.http" + }, + { + "name": "envoy.buffer", + "category": "envoy.filters.http" + }, + { + "name": "envoy.cors", + "category": "envoy.filters.http" + }, + { + "name": "envoy.csrf", + "category": "envoy.filters.http" + }, + { + "name": "envoy.ext_authz", + "category": "envoy.filters.http" + }, + { + "name": "envoy.ext_proc", + "category": "envoy.filters.http" + }, + { + "name": "envoy.fault", + "category": "envoy.filters.http" + }, + { + "name": "envoy.filters.http.adaptive_concurrency", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.adaptive_concurrency.v3.AdaptiveConcurrency" + ] + }, + { + "name": "envoy.filters.http.admission_control", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.admission_control.v3.AdmissionControl" + ] + }, + { + "name": "envoy.filters.http.alternate_protocols_cache", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.alternate_protocols_cache.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.http.aws_lambda", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.aws_lambda.v3.Config", + "envoy.extensions.filters.http.aws_lambda.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.aws_request_signing", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.aws_request_signing.v3.AwsRequestSigning" + ] + }, + { + "name": "envoy.filters.http.bandwidth_limit", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.bandwidth_limit.v3.BandwidthLimit" + ] + }, + { + "name": "envoy.filters.http.buffer", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.buffer.v3.Buffer", + "envoy.extensions.filters.http.buffer.v3.BufferPerRoute" + ] + }, + { + "name": "envoy.filters.http.cache", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.cache.v3.CacheConfig" + ] + }, + { + "name": "envoy.filters.http.cdn_loop", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.cdn_loop.v3.CdnLoopConfig" + ] + }, + { + "name": "envoy.filters.http.composite", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.composite.v3.Composite" + ] + }, + { + "name": "envoy.filters.http.compressor", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.compressor.v3.Compressor", + "envoy.extensions.filters.http.compressor.v3.CompressorPerRoute" + ] + }, + { + "name": "envoy.filters.http.connect_grpc_bridge", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.connect_grpc_bridge.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.http.cors", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.cors.v3.Cors", + "envoy.extensions.filters.http.cors.v3.CorsPolicy" + ] + }, + { + "name": "envoy.filters.http.csrf", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.csrf.v3.CsrfPolicy" + ] + }, + { + "name": "envoy.filters.http.custom_response", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.custom_response.v3.CustomResponse" + ] + }, + { + "name": "envoy.filters.http.decompressor", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.decompressor.v3.Decompressor" + ] + }, + { + "name": "envoy.filters.http.dynamic_forward_proxy", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.dynamic_forward_proxy.v3.FilterConfig", + "envoy.extensions.filters.http.dynamic_forward_proxy.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.ext_authz", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ext_authz.v3.ExtAuthz", + "envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute" + ] + }, + { + "name": "envoy.filters.http.ext_proc", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ext_proc.v3.ExtProcPerRoute", + "envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor" + ] + }, + { + "name": "envoy.filters.http.fault", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.fault.v3.HTTPFault" + ] + }, + { + "name": "envoy.filters.http.file_system_buffer", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.file_system_buffer.v3.FileSystemBufferFilterConfig" + ] + }, + { + "name": "envoy.filters.http.gcp_authn", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig" + ] + }, + { + "name": "envoy.filters.http.grpc_http1_bridge", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_http1_bridge.v3.Config" + ] + }, + { + "name": "envoy.filters.http.grpc_http1_reverse_bridge", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_http1_reverse_bridge.v3.FilterConfig", + "envoy.extensions.filters.http.grpc_http1_reverse_bridge.v3.FilterConfigPerRoute" + ] + }, + { + "name": "envoy.filters.http.grpc_json_transcoder", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder" + ] + }, + { + "name": "envoy.filters.http.grpc_stats", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_stats.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.http.grpc_web", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.grpc_web.v3.GrpcWeb" + ] + }, + { + "name": "envoy.filters.http.header_to_metadata", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.header_to_metadata.v3.Config" + ] + }, + { + "name": "envoy.filters.http.health_check", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.health_check.v3.HealthCheck" + ] + }, + { + "name": "envoy.filters.http.ip_tagging", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ip_tagging.v3.IPTagging" + ] + }, + { + "name": "envoy.filters.http.jwt_authn", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication", + "envoy.extensions.filters.http.jwt_authn.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.local_ratelimit", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit" + ] + }, + { + "name": "envoy.filters.http.lua", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.lua.v3.Lua", + "envoy.extensions.filters.http.lua.v3.LuaPerRoute" + ] + }, + { + "name": "envoy.filters.http.match_delegate", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.common.matching.v3.ExtensionWithMatcher" + ] + }, + { + "name": "envoy.filters.http.oauth2", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.oauth2.v3.OAuth2" + ] + }, + { + "name": "envoy.filters.http.on_demand", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.on_demand.v3.OnDemand", + "envoy.extensions.filters.http.on_demand.v3.PerRouteConfig" + ] + }, + { + "name": "envoy.filters.http.original_src", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.original_src.v3.OriginalSrc" + ] + }, + { + "name": "envoy.filters.http.rate_limit_quota", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig", + "envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaOverride" + ] + }, + { + "name": "envoy.filters.http.ratelimit", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.ratelimit.v3.RateLimit", + "envoy.extensions.filters.http.ratelimit.v3.RateLimitPerRoute" + ] + }, + { + "name": "envoy.filters.http.rbac", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.rbac.v3.RBAC", + "envoy.extensions.filters.http.rbac.v3.RBACPerRoute" + ] + }, + { + "name": "envoy.filters.http.router", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.router.v3.Router" + ] + }, + { + "name": "envoy.filters.http.set_metadata", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.set_metadata.v3.Config" + ] + }, + { + "name": "envoy.filters.http.stateful_session", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.stateful_session.v3.StatefulSession", + "envoy.extensions.filters.http.stateful_session.v3.StatefulSessionPerRoute" + ] + }, + { + "name": "envoy.filters.http.tap", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.tap.v3.Tap" + ] + }, + { + "name": "envoy.filters.http.wasm", + "category": "envoy.filters.http", + "type_urls": [ + "envoy.extensions.filters.http.wasm.v3.Wasm" + ] + }, + { + "name": "envoy.grpc_http1_bridge", + "category": "envoy.filters.http" + }, + { + "name": "envoy.grpc_json_transcoder", + "category": "envoy.filters.http" + }, + { + "name": "envoy.grpc_web", + "category": "envoy.filters.http" + }, + { + "name": "envoy.health_check", + "category": "envoy.filters.http" + }, + { + "name": "envoy.ip_tagging", + "category": "envoy.filters.http" + }, + { + "name": "envoy.local_rate_limit", + "category": "envoy.filters.http" + }, + { + "name": "envoy.lua", + "category": "envoy.filters.http" + }, + { + "name": "envoy.rate_limit", + "category": "envoy.filters.http" + }, + { + "name": "envoy.router", + "category": "envoy.filters.http" + }, + { + "name": "envoy.access_loggers.file", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.file.v3.FileAccessLog" + ] + }, + { + "name": "envoy.access_loggers.http_grpc", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.grpc.v3.HttpGrpcAccessLogConfig" + ] + }, + { + "name": "envoy.access_loggers.open_telemetry", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.open_telemetry.v3.OpenTelemetryAccessLogConfig" + ] + }, + { + "name": "envoy.access_loggers.stderr", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.stream.v3.StderrAccessLog" + ] + }, + { + "name": "envoy.access_loggers.stdout", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.stream.v3.StdoutAccessLog" + ] + }, + { + "name": "envoy.access_loggers.tcp_grpc", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.grpc.v3.TcpGrpcAccessLogConfig" + ] + }, + { + "name": "envoy.access_loggers.wasm", + "category": "envoy.access_loggers", + "type_urls": [ + "envoy.extensions.access_loggers.wasm.v3.WasmAccessLog" + ] + }, + { + "name": "envoy.file_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.http_grpc_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.open_telemetry_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.stderr_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.stdout_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.tcp_grpc_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.wasm_access_log", + "category": "envoy.access_loggers" + }, + { + "name": "envoy.config.validators.minimum_clusters", + "category": "envoy.config.validators" + }, + { + "name": "envoy.config.validators.minimum_clusters_validator", + "category": "envoy.config.validators", + "type_urls": [ + "envoy.extensions.config.validators.minimum_clusters.v3.MinimumClustersValidator" + ] + }, + { + "name": "envoy.http.header_validators.envoy_default", + "category": "envoy.http.header_validators", + "type_urls": [ + "envoy.extensions.http.header_validators.envoy_default.v3.HeaderValidatorConfig" + ] + }, + { + "name": "dubbo.hessian2", + "category": "envoy.dubbo_proxy.serializers" + }, + { + "name": "quic.http_server_connection.default", + "category": "quic.http_server_connection" + }, + { + "name": "envoy.transport_sockets.alts", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.alts.v3.Alts" + ] + }, + { + "name": "envoy.transport_sockets.quic", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.quic.v3.QuicDownstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.raw_buffer", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer" + ] + }, + { + "name": "envoy.transport_sockets.starttls", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.starttls.v3.StartTlsConfig" + ] + }, + { + "name": "envoy.transport_sockets.tap", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tap.v3.Tap" + ] + }, + { + "name": "envoy.transport_sockets.tcp_stats", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tcp_stats.v3.Config" + ] + }, + { + "name": "envoy.transport_sockets.tls", + "category": "envoy.transport_sockets.downstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext" + ] + }, + { + "name": "raw_buffer", + "category": "envoy.transport_sockets.downstream" + }, + { + "name": "starttls", + "category": "envoy.transport_sockets.downstream" + }, + { + "name": "tls", + "category": "envoy.transport_sockets.downstream" + }, + { + "name": "envoy.rbac.matchers.upstream_ip_port", + "category": "envoy.rbac.matchers", + "type_urls": [ + "envoy.extensions.rbac.matchers.upstream_ip_port.v3.UpstreamIpPortMatcher" + ] + }, + { + "name": "envoy.key_value.file_based", + "category": "envoy.common.key_value", + "type_urls": [ + "envoy.extensions.key_value.file_based.v3.FileBasedKeyValueStoreConfig" + ] + }, + { + "name": "envoy.matching.inputs.application_protocol", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.ApplicationProtocolInput" + ] + }, + { + "name": "envoy.matching.inputs.destination_ip", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationIPInput" + ] + }, + { + "name": "envoy.matching.inputs.destination_port", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DestinationPortInput" + ] + }, + { + "name": "envoy.matching.inputs.direct_source_ip", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.DirectSourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.dns_san", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.DnsSanInput" + ] + }, + { + "name": "envoy.matching.inputs.server_name", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.ServerNameInput" + ] + }, + { + "name": "envoy.matching.inputs.source_ip", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceIPInput" + ] + }, + { + "name": "envoy.matching.inputs.source_port", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourcePortInput" + ] + }, + { + "name": "envoy.matching.inputs.source_type", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.SourceTypeInput" + ] + }, + { + "name": "envoy.matching.inputs.subject", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.SubjectInput" + ] + }, + { + "name": "envoy.matching.inputs.transport_protocol", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.network.v3.TransportProtocolInput" + ] + }, + { + "name": "envoy.matching.inputs.uri_san", + "category": "envoy.matching.network.input", + "type_urls": [ + "envoy.extensions.matching.common_inputs.ssl.v3.UriSanInput" + ] + }, + { + "name": "dubbo", + "category": "envoy.dubbo_proxy.protocols" + }, + { + "name": "envoy.watchdog.abort_action", + "category": "envoy.guarddog_actions", + "type_urls": [ + "envoy.watchdog.v3.AbortActionConfig" + ] + }, + { + "name": "envoy.watchdog.profile_action", + "category": "envoy.guarddog_actions", + "type_urls": [ + "envoy.extensions.watchdog.profile_action.v3.ProfileActionConfig" + ] + }, + { + "name": "envoy.quic.crypto_stream.server.quiche", + "category": "envoy.quic.server.crypto_stream", + "type_urls": [ + "envoy.extensions.quic.crypto_stream.v3.CryptoServerStreamConfig" + ] + }, + { + "name": "envoy.regex_engines.google_re2", + "category": "envoy.regex_engines", + "type_urls": [ + "envoy.extensions.regex_engines.v3.GoogleRE2" + ] + }, + { + "name": "envoy.http.stateful_session.cookie", + "category": "envoy.http.stateful_session", + "type_urls": [ + "envoy.extensions.http.stateful_session.cookie.v3.CookieBasedSessionState" + ] + }, + { + "name": "envoy.http.stateful_session.header", + "category": "envoy.http.stateful_session", + "type_urls": [ + "envoy.extensions.http.stateful_session.header.v3.HeaderBasedSessionState" + ] + }, + { + "name": "envoy.matching.custom_matchers.trie_matcher", + "category": "envoy.matching.network.custom_matchers", + "type_urls": [ + "xds.type.matcher.v3.IPMatcher" + ] + }, + { + "name": "envoy.udp_packet_writer.default", + "category": "envoy.udp_packet_writer", + "type_urls": [ + "envoy.extensions.udp_packet_writer.v3.UdpDefaultWriterFactory" + ] + }, + { + "name": "envoy.udp_packet_writer.gso", + "category": "envoy.udp_packet_writer", + "type_urls": [ + "envoy.extensions.udp_packet_writer.v3.UdpGsoBatchWriterFactory" + ] + }, + { + "name": "envoy.quic.proof_source.filter_chain", + "category": "envoy.quic.proof_source", + "type_urls": [ + "envoy.extensions.quic.proof_source.v3.ProofSourceConfig" + ] + }, + { + "name": "envoy.resource_monitors.fixed_heap", + "category": "envoy.resource_monitors", + "type_urls": [ + "envoy.extensions.resource_monitors.fixed_heap.v3.FixedHeapConfig" + ] + }, + { + "name": "envoy.resource_monitors.injected_resource", + "category": "envoy.resource_monitors", + "type_urls": [ + "envoy.extensions.resource_monitors.injected_resource.v3.InjectedResourceConfig" + ] + }, + { + "name": "envoy.http.stateful_header_formatters.preserve_case", + "category": "envoy.http.stateful_header_formatters", + "type_urls": [ + "envoy.extensions.http.header_formatters.preserve_case.v3.PreserveCaseFormatterConfig" + ] + }, + { + "name": "preserve_case", + "category": "envoy.http.stateful_header_formatters" + }, + { + "name": "envoy.filters.thrift.header_to_metadata", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.filters.header_to_metadata.v3.HeaderToMetadata" + ] + }, + { + "name": "envoy.filters.thrift.payload_to_metadata", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.filters.payload_to_metadata.v3.PayloadToMetadata" + ] + }, + { + "name": "envoy.filters.thrift.rate_limit", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.filters.ratelimit.v3.RateLimit" + ] + }, + { + "name": "envoy.filters.thrift.router", + "category": "envoy.thrift_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.router.v3.Router" + ] + }, + { + "name": "envoy.tracers.datadog", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.DatadogConfig" + ] + }, + { + "name": "envoy.tracers.dynamic_ot", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.DynamicOtConfig" + ] + }, + { + "name": "envoy.tracers.opencensus", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.OpenCensusConfig" + ] + }, + { + "name": "envoy.tracers.opentelemetry", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.OpenTelemetryConfig" + ] + }, + { + "name": "envoy.tracers.skywalking", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.SkyWalkingConfig" + ] + }, + { + "name": "envoy.tracers.xray", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.XRayConfig" + ] + }, + { + "name": "envoy.tracers.zipkin", + "category": "envoy.tracers", + "type_urls": [ + "envoy.config.trace.v3.ZipkinConfig" + ] + }, + { + "name": "envoy.zipkin", + "category": "envoy.tracers" + }, + { + "name": "envoy.retry_priorities.previous_priorities", + "category": "envoy.retry_priorities", + "type_urls": [ + "envoy.extensions.retry.priority.previous_priorities.v3.PreviousPrioritiesConfig" + ] + }, + { + "name": "envoy.http.early_header_mutation.header_mutation", + "category": "envoy.http.early_header_mutation", + "type_urls": [ + "envoy.extensions.http.early_header_mutation.header_mutation.v3.HeaderMutation" + ] + }, + { + "name": "envoy.connection_handler.default", + "category": "envoy.connection_handler" + }, + { + "name": "envoy.transport_sockets.alts", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.alts.v3.Alts" + ] + }, + { + "name": "envoy.transport_sockets.http_11_proxy", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.http_11_proxy.v3.Http11ProxyUpstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.internal_upstream", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.internal_upstream.v3.InternalUpstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.quic", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.quic.v3.QuicUpstreamTransport" + ] + }, + { + "name": "envoy.transport_sockets.raw_buffer", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer" + ] + }, + { + "name": "envoy.transport_sockets.starttls", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.starttls.v3.UpstreamStartTlsConfig" + ] + }, + { + "name": "envoy.transport_sockets.tap", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tap.v3.Tap" + ] + }, + { + "name": "envoy.transport_sockets.tcp_stats", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tcp_stats.v3.Config" + ] + }, + { + "name": "envoy.transport_sockets.tls", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext" + ] + }, + { + "name": "envoy.transport_sockets.upstream_proxy_protocol", + "category": "envoy.transport_sockets.upstream", + "type_urls": [ + "envoy.extensions.transport_sockets.proxy_protocol.v3.ProxyProtocolUpstreamTransport" + ] + }, + { + "name": "raw_buffer", + "category": "envoy.transport_sockets.upstream" + }, + { + "name": "starttls", + "category": "envoy.transport_sockets.upstream" + }, + { + "name": "tls", + "category": "envoy.transport_sockets.upstream" + }, + { + "name": "auto", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "framed", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "header", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "unframed", + "category": "envoy.thrift_proxy.transports" + }, + { + "name": "envoy.cluster.eds", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.logical_dns", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.original_dst", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.static", + "category": "envoy.clusters" + }, + { + "name": "envoy.cluster.strict_dns", + "category": "envoy.clusters" + }, + { + "name": "envoy.clusters.aggregate", + "category": "envoy.clusters" + }, + { + "name": "envoy.clusters.dynamic_forward_proxy", + "category": "envoy.clusters" + }, + { + "name": "envoy.clusters.redis", + "category": "envoy.clusters" + }, + { + "name": "envoy.access_loggers.extension_filters.cel", + "category": "envoy.access_loggers.extension_filters", + "type_urls": [ + "envoy.extensions.access_loggers.filters.cel.v3.ExpressionFilter" + ] + }, + { + "name": "auto", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "binary", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "binary/non-strict", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "compact", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "twitter", + "category": "envoy.thrift_proxy.protocols" + }, + { + "name": "envoy.extensions.upstreams.http.v3.HttpProtocolOptions", + "category": "envoy.upstream_options", + "type_urls": [ + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions" + ] + }, + { + "name": "envoy.extensions.upstreams.tcp.v3.TcpProtocolOptions", + "category": "envoy.upstream_options", + "type_urls": [ + "envoy.extensions.upstreams.tcp.v3.TcpProtocolOptions" + ] + }, + { + "name": "envoy.upstreams.http.http_protocol_options", + "category": "envoy.upstream_options" + }, + { + "name": "envoy.upstreams.tcp.tcp_protocol_options", + "category": "envoy.upstream_options" + }, + { + "name": "envoy.listener_manager_impl.default", + "category": "envoy.listener_manager_impl", + "type_urls": [ + "envoy.config.listener.v3.ListenerManager" + ] + }, + { + "name": "default", + "category": "network.connection.client" + }, + { + "name": "envoy_internal", + "category": "network.connection.client" + }, + { + "name": "envoy.filters.udp.dns_filter", + "category": "envoy.filters.udp_listener", + "type_urls": [ + "envoy.extensions.filters.udp.dns_filter.v3.DnsFilterConfig" + ] + }, + { + "name": "envoy.filters.udp_listener.udp_proxy", + "category": "envoy.filters.udp_listener", + "type_urls": [ + "envoy.extensions.filters.udp.udp_proxy.v3.UdpProxyConfig" + ] + }, + { + "name": "envoy.extensions.http.cache.file_system_http_cache", + "category": "envoy.http.cache", + "type_urls": [ + "envoy.extensions.http.cache.file_system_http_cache.v3.FileSystemHttpCacheConfig" + ] + }, + { + "name": "envoy.extensions.http.cache.simple", + "category": "envoy.http.cache", + "type_urls": [ + "envoy.extensions.http.cache.simple_http_cache.v3.SimpleHttpCacheConfig" + ] + }, + { + "name": "envoy.retry_host_predicates.omit_canary_hosts", + "category": "envoy.retry_host_predicates", + "type_urls": [ + "envoy.extensions.retry.host.omit_canary_hosts.v3.OmitCanaryHostsPredicate" + ] + }, + { + "name": "envoy.retry_host_predicates.omit_host_metadata", + "category": "envoy.retry_host_predicates", + "type_urls": [ + "envoy.extensions.retry.host.omit_host_metadata.v3.OmitHostMetadataConfig" + ] + }, + { + "name": "envoy.retry_host_predicates.previous_hosts", + "category": "envoy.retry_host_predicates", + "type_urls": [ + "envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" + ] + }, + { + "name": "envoy.formatter.metadata", + "category": "envoy.formatter", + "type_urls": [ + "envoy.extensions.formatter.metadata.v3.Metadata" + ] + }, + { + "name": "envoy.formatter.req_without_query", + "category": "envoy.formatter", + "type_urls": [ + "envoy.extensions.formatter.req_without_query.v3.ReqWithoutQuery" + ] + }, + { + "name": "envoy.internal_redirect_predicates.allow_listed_routes", + "category": "envoy.internal_redirect_predicates", + "type_urls": [ + "envoy.extensions.internal_redirect.allow_listed_routes.v3.AllowListedRoutesConfig" + ] + }, + { + "name": "envoy.internal_redirect_predicates.previous_routes", + "category": "envoy.internal_redirect_predicates", + "type_urls": [ + "envoy.extensions.internal_redirect.previous_routes.v3.PreviousRoutesConfig" + ] + }, + { + "name": "envoy.internal_redirect_predicates.safe_cross_scheme", + "category": "envoy.internal_redirect_predicates", + "type_urls": [ + "envoy.extensions.internal_redirect.safe_cross_scheme.v3.SafeCrossSchemeConfig" + ] + }, + { + "name": "envoy.matching.custom_matchers.trie_matcher", + "category": "envoy.matching.http.custom_matchers", + "type_urls": [ + "xds.type.matcher.v3.IPMatcher" + ] + }, + { + "name": "envoy.filters.dubbo.router", + "category": "envoy.dubbo_proxy.filters", + "type_urls": [ + "envoy.extensions.filters.network.dubbo_proxy.router.v3.Router" + ] + }, + { + "name": "envoy.echo", + "category": "envoy.filters.network" + }, + { + "name": "envoy.ext_authz", + "category": "envoy.filters.network" + }, + { + "name": "envoy.filters.network.connection_limit", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.connection_limit.v3.ConnectionLimit" + ] + }, + { + "name": "envoy.filters.network.direct_response", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.direct_response.v3.Config" + ] + }, + { + "name": "envoy.filters.network.dubbo_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.dubbo_proxy.v3.DubboProxy" + ] + }, + { + "name": "envoy.filters.network.echo", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.echo.v3.Echo" + ] + }, + { + "name": "envoy.filters.network.ext_authz", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.ext_authz.v3.ExtAuthz" + ] + }, + { + "name": "envoy.filters.network.http_connection_manager", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager" + ] + }, + { + "name": "envoy.filters.network.local_ratelimit", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.local_ratelimit.v3.LocalRateLimit" + ] + }, + { + "name": "envoy.filters.network.mongo_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.mongo_proxy.v3.MongoProxy" + ] + }, + { + "name": "envoy.filters.network.ratelimit", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.ratelimit.v3.RateLimit" + ] + }, + { + "name": "envoy.filters.network.rbac", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.rbac.v3.RBAC" + ] + }, + { + "name": "envoy.filters.network.redis_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.redis_proxy.v3.RedisProxy" + ] + }, + { + "name": "envoy.filters.network.sni_cluster", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.sni_cluster.v3.SniCluster" + ] + }, + { + "name": "envoy.filters.network.sni_dynamic_forward_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3.FilterConfig" + ] + }, + { + "name": "envoy.filters.network.tcp_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy" + ] + }, + { + "name": "envoy.filters.network.thrift_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.thrift_proxy.v3.ThriftProxy" + ] + }, + { + "name": "envoy.filters.network.wasm", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.wasm.v3.Wasm" + ] + }, + { + "name": "envoy.filters.network.zookeeper_proxy", + "category": "envoy.filters.network", + "type_urls": [ + "envoy.extensions.filters.network.zookeeper_proxy.v3.ZooKeeperProxy" + ] + }, + { + "name": "envoy.http_connection_manager", + "category": "envoy.filters.network" + }, + { + "name": "envoy.mongo_proxy", + "category": "envoy.filters.network" + }, + { + "name": "envoy.ratelimit", + "category": "envoy.filters.network" + }, + { + "name": "envoy.redis_proxy", + "category": "envoy.filters.network" + }, + { + "name": "envoy.tcp_proxy", + "category": "envoy.filters.network" + }, + { + "name": "envoy.health_checkers.redis", + "category": "envoy.health_checkers", + "type_urls": [ + "envoy.extensions.health_checkers.redis.v3.Redis" + ] + }, + { + "name": "envoy.health_checkers.thrift", + "category": "envoy.health_checkers", + "type_urls": [ + "envoy.extensions.health_checkers.thrift.v3.Thrift" + ] + } + ] + }, + "static_resources": { + "clusters": [ + { + "name": "xds_cluster", + "type": "STRICT_DNS", + "connect_timeout": "1s", + "transport_socket": { + "name": "envoy.transport_sockets.tls", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext", + "common_tls_context": { + "tls_params": { + "tls_maximum_protocol_version": "TLSv1_3" + }, + "tls_certificate_sds_secret_configs": [ + { + "name": "xds_certificate", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-certificate.json" + } + } + } + ], + "validation_context_sds_secret_config": { + "name": "xds_trusted_ca", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-trusted-ca.json" + } + } + } + } + } + }, + "load_assignment": { + "cluster_name": "xds_cluster", + "endpoints": [ + { + "lb_endpoints": [ + { + "endpoint": { + "address": { + "socket_address": { + "address": "envoy-gateway", + "port_value": 18000 + } + } + } + } + ] + } + ] + }, + "typed_extension_protocol_options": { + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions": { + "@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions", + "explicit_http_config": { + "http2_protocol_options": {} + } + } + } + } + ] + }, + "dynamic_resources": { + "lds_config": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "set_node_on_first_message_only": true, + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + }, + "cds_config": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "set_node_on_first_message_only": true, + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + } + }, + "admin": { + "address": { + "socket_address": { + "address": "127.0.0.1", + "port_value": 19000 + } + }, + "access_log": [ + { + "name": "envoy.access_loggers.file", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog", + "path": "/dev/null" + } + } + ] + }, + "layered_runtime": { + "layers": [ + { + "name": "runtime-0", + "rtds_layer": { + "name": "runtime-0", + "rtds_config": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + } + } + } + ] + } + }, + "last_updated": "2023-02-23T09:05:23.422Z" + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.ClustersConfigDump", + "version_info": "2", + "static_clusters": [ + { + "cluster": { + "@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster", + "name": "xds_cluster", + "type": "STRICT_DNS", + "connect_timeout": "1s", + "transport_socket": { + "name": "envoy.transport_sockets.tls", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext", + "common_tls_context": { + "tls_params": { + "tls_maximum_protocol_version": "TLSv1_3" + }, + "tls_certificate_sds_secret_configs": [ + { + "name": "xds_certificate", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-certificate.json" + } + } + } + ], + "validation_context_sds_secret_config": { + "name": "xds_trusted_ca", + "sds_config": { + "resource_api_version": "V3", + "path_config_source": { + "path": "/sds/xds-trusted-ca.json" + } + } + } + } + } + }, + "load_assignment": { + "cluster_name": "xds_cluster", + "endpoints": [ + { + "lb_endpoints": [ + { + "endpoint": { + "address": { + "socket_address": { + "address": "envoy-gateway", + "port_value": 18000 + } + } + } + } + ] + } + ] + }, + "typed_extension_protocol_options": { + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions": { + "@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions", + "explicit_http_config": { + "http2_protocol_options": {} + } + } + } + }, + "last_updated": "2023-02-23T09:05:23.436Z" + } + ], + "dynamic_active_clusters": [ + { + "version_info": "2a0a1698a9d3e05b802047b0cd36b52a070afa49042e1ba267168c5265c7cabf", + "cluster": { + "@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster", + "name": "default-backend-rule-0-match-0-www.example.com", + "type": "STATIC", + "connect_timeout": "5s", + "dns_lookup_family": "V4_ONLY", + "outlier_detection": {}, + "common_lb_config": { + "locality_weighted_lb_config": {} + }, + "load_assignment": { + "cluster_name": "default-backend-rule-0-match-0-www.example.com", + "endpoints": [ + { + "locality": {}, + "lb_endpoints": [ + { + "endpoint": { + "address": { + "socket_address": { + "address": "10.96.159.190", + "port_value": 3000 + } + } + }, + "load_balancing_weight": 1 + } + ], + "load_balancing_weight": 1 + } + ] + } + }, + "last_updated": "2023-02-23T09:05:38.443Z" + } + ] + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.ListenersConfigDump", + "version_info": "2", + "dynamic_listeners": [ + { + "name": "default-eg-http", + "active_state": { + "version_info": "42c71fb50c315ee3a32b327da69f8cc0baf420bc84b747e82d9c38e1b0c33eb2", + "listener": { + "@type": "type.googleapis.com/envoy.config.listener.v3.Listener", + "name": "default-eg-http", + "address": { + "socket_address": { + "address": "0.0.0.0", + "port_value": 10080 + } + }, + "access_log": [ + { + "name": "envoy.access_loggers.file", + "filter": { + "response_flag_filter": { + "flags": [ + "NR" + ] + } + }, + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog", + "path": "/dev/stdout" + } + } + ], + "default_filter_chain": { + "filters": [ + { + "name": "envoy.filters.network.http_connection_manager", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager", + "stat_prefix": "http", + "rds": { + "config_source": { + "api_config_source": { + "api_type": "DELTA_GRPC", + "grpc_services": [ + { + "envoy_grpc": { + "cluster_name": "xds_cluster" + } + } + ], + "set_node_on_first_message_only": true, + "transport_api_version": "V3" + }, + "resource_api_version": "V3" + }, + "route_config_name": "default-eg-http" + }, + "http_filters": [ + { + "name": "envoy.filters.http.router", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router" + } + } + ], + "access_log": [ + { + "name": "envoy.access_loggers.file", + "typed_config": { + "@type": "type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog", + "path": "/dev/stdout" + } + } + ], + "use_remote_address": true, + "upgrade_configs": [ + { + "upgrade_type": "websocket" + } + ] + } + } + ] + } + }, + "last_updated": "2023-02-23T09:05:38.446Z" + } + } + ] + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.ScopedRoutesConfigDump" + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.RoutesConfigDump", + "dynamic_route_configs": [ + { + "version_info": "cb1e51997a9c3aa6f4d920f39fd5bdbd966e9382b7b6bdf42efca8c22c6c3442", + "route_config": { + "@type": "type.googleapis.com/envoy.config.route.v3.RouteConfiguration", + "name": "default-eg-http", + "virtual_hosts": [ + { + "name": "default-eg-http", + "domains": [ + "*" + ], + "routes": [ + { + "match": { + "prefix": "/", + "headers": [ + { + "name": ":authority", + "string_match": { + "exact": "www.example.com" + } + } + ] + }, + "route": { + "cluster": "default-backend-rule-0-match-0-www.example.com" + } + } + ] + } + ] + }, + "last_updated": "2023-02-23T09:05:38.448Z" + } + ] + }, + { + "@type": "type.googleapis.com/envoy.admin.v3.SecretsConfigDump", + "dynamic_active_secrets": [ + { + "name": "xds_certificate", + "last_updated": "2023-02-23T09:05:23.442Z", + "secret": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret", + "name": "xds_certificate", + "tls_certificate": { + "certificate_chain": { + "inline_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLekNDQWhPZ0F3SUJBZ0lFTnJRVi9qQU5CZ2txaGtpRzl3MEJBUXNGQURBc01SWXdGQVlEVlFRREV3MWwKYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEVlFRRkV3azFOalE0TXpRek9EVXdIaGNOTWpNd01qRTNNRE0wTVRJNApXaGNOTWpRd01qRTRNRE0wTVRJNFdqQU1NUW93Q0FZRFZRUUREQUVxTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGCkFBT0NBUThBTUlJQkNnS0NBUUVBNmdNSTJSNElEeE5mQ2o1YmZHU1hVUjF4YkVjRjE5VXlhVC9VUEZZcFltM0gKN2c4T3Z6YWRlelFyRkt3dG9PWWFDN0hjam8zVnVHSmhqSDQ1Z3lVbWFzSEg1Q1gzaWFlRlhxQXdVQjRqVTZQSgpBbElCZWlMRVdZVjN1VjMwcGlKK09DWFhrUEQzSFFVb0ZYbnljcHM3OE9PbjZoS0wwNUY0YkJsT2UrMFdIUHdECll2dFQ4TEdpVmcrSkxhR2lxaGgxOXY5endwQUd2akI2Z09kN1BjdkNQNFExUHdkMWdMSnNXVFNweGhDUEVPb2kKV2ZSOG56RERVUHU5aXc2QTJObW1XQ1FxSVNYcDlZUmJMTEdjZnV4VURjcFVYMHpqY0xvcE1sajBnM0RkYVpWRwpzNm9JcW9BSjZ6MFhvdWwrM0ZZdUtJYy8rT1V3VkR1VkI4K0ZRZzlYdlFJREFRQUJvM1V3Y3pBT0JnTlZIUThCCkFmOEVCQU1DQlBBd0hRWURWUjBPQkJZRUZKaUJ3cytVaFRlT2p1L1ZXT29LQWNTSmZBeXVNQjhHQTFVZEl3UVkKTUJhQUZCT3kvOGkxeVMxRWxpN0tNK0gyeXZEM1BJMG1NQ0VHQTFVZEVRUWFNQmlDRmlvdVpXNTJiM2t0WjJGMApaWGRoZVMxemVYTjBaVzB3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZraHdIakZtQWxqdEpheU54WitodURGCm5UdWd0REZvSTBFT2J0cUhLYnloWU9sdlNFdkhxbFNQSHNRUUhmQnQwbHpOOEtGUTd2YWxTSHRBZStlNzBETHkKaGY3TDQ3eklST3NLcmtmb0tjMjRqaUhNQkVwbCtJdjllU1RWVG9WemxzazVZUGxET2lrMzZpRUY3WDVVZ0RheApsVllZZnpSYzRUb0poODMwT285Wm9pai9LM295dVNXcTVGRzVFWExmeW9tQzZPQ3dxRm5GNzRSM21FTjVheDRlCnppVm5QVDNxVmFZdytzNngwSVhHU282U2M3Q2lUbmMrckFNa3FJNVNsK2p5RHhKTkZBQlIvRllCcTQzK1B1UGkKN0YxOEw0N2l3aVFFYU82NUJzU2hlYmg1Qk1VbytDdzIyM3JsMGRpTldwY3FrdVhtT1BWNDlrWkZkdHpFNytVPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "private_key": { + "inline_bytes": "W3JlZGFjdGVkXQ==" + } + } + } + }, + { + "name": "xds_trusted_ca", + "last_updated": "2023-02-23T09:05:23.447Z", + "secret": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret", + "name": "xds_trusted_ca", + "validation_context": { + "trusted_ca": { + "inline_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURHRENDQWdDZ0F3SUJBZ0lFSWFxd1VUQU5CZ2txaGtpRzl3MEJBUXNGQURBc01SWXdGQVlEVlFRREV3MWwKYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEVlFRRkV3azFOalE0TXpRek9EVXdIaGNOTWpNd01qRTNNRE0wTVRJNApXaGNOTWpRd01qRTRNRE0wTVRJNFdqQXNNUll3RkFZRFZRUURFdzFsYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEClZRUUZFd2sxTmpRNE16UXpPRFV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRDIKeFMrNkRWY2FvbHFkVVBzTHZwNUtQMEQyV0hrTkVEY0tPeml3bzZNYm9wczFLYWJnNXVYSVl5T21JRWNTTXNKNwpHbVAxMlJjK0J3V1dFWXRrTHVPU3BwQm1lSjN3aDRrUlVRVTRTemRFU1dDcU40RTNpcTJib3FFVm53SkFGQ1ZpCldldGVjZkZsODZFalliQUxxSnRCbGJCbFFQM1ZMZ1hva0VVamJ4QmFobE1wZitUWkVJNFBuam1zUWN5a21LeXIKaDJwdmM3cnZYb29HTlhTM0Q0eFc1VDY3dmxLYi94UlM3c2gwTkJEU0dtTE1jY2pxWFZXazVOR2lBWVB3dXBWSwpTWG02dnZXUFZCdEd1bkZhS0JSRGx4TlJrb0wzRUN6UkNtenoxR2ZYMGJkSm1leElOM2VIUFBRdkd0M0txeUlnCkgrYnc0OXpqdlVUb2dNcXFpTlcvQWdNQkFBR2pRakJBTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQQmdOVkhSTUIKQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRVHN2L0l0Y2t0UkpZdXlqUGg5c3J3OXp5TkpqQU5CZ2txaGtpRwo5dzBCQVFzRkFBT0NBUUVBd2dvZEsxalhVWFZDVXBTSjE0cEo3S3ZobWZPT1hkaVNISmNSSzlIUzI1c2xwOWN2CkJDSndmWUZmanJ4Rmc5TnV4aVpiM01oVXk5MDBqenBPdk1QWStEeUxFWFVxTGd5ZlBMUzYveVliem8yZHdwdzMKOCtrTXlsQUFlZmtaSW9oT0VhYSsvNFFBVVVGZVp1a1B6bmF6RzZIWnZKQkNxWVdRNXBaSSt3WTI1dzhEU0VOMgpkOCswVkpzWU5IdUk4aXhneGZhUkRycW5LRHBMUGJ3Z3VaRDl6ZkV3dVFaNG1oeEd0Vk1wR0NLSndscWFhdXJ0CkF5aGhzOXBHNERndkpSY1BLeFY4bndRdzZtSm55dkIxcExxTW1aQTVqZWhxbFNvUGVpWUlBMk1neU83cTVPYmMKL040bzBNTVdvZ1piRWR6aTBnTXJRT2lpNE41Q0ZlakVrYStIMmc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "match_typed_subject_alt_names": [ + { + "san_type": "DNS", + "matcher": { + "exact": "envoy-gateway" + } + } + ] + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/internal/cmd/egctl/testdata/config/out.yaml b/internal/cmd/egctl/testdata/config/out.yaml new file mode 100644 index 00000000000..1e5fe701185 --- /dev/null +++ b/internal/cmd/egctl/testdata/config/out.yaml @@ -0,0 +1,1284 @@ +configs: +- '@type': type.googleapis.com/envoy.admin.v3.BootstrapConfigDump + bootstrap: + admin: + access_log: + - name: envoy.access_loggers.file + typed_config: + '@type': type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog + path: /dev/null + address: + socket_address: + address: 127.0.0.1 + port_value: 19000 + dynamic_resources: + cds_config: + api_config_source: + api_type: DELTA_GRPC + grpc_services: + - envoy_grpc: + cluster_name: xds_cluster + set_node_on_first_message_only: true + transport_api_version: V3 + resource_api_version: V3 + lds_config: + api_config_source: + api_type: DELTA_GRPC + grpc_services: + - envoy_grpc: + cluster_name: xds_cluster + set_node_on_first_message_only: true + transport_api_version: V3 + resource_api_version: V3 + layered_runtime: + layers: + - name: runtime-0 + rtds_layer: + name: runtime-0 + rtds_config: + api_config_source: + api_type: DELTA_GRPC + grpc_services: + - envoy_grpc: + cluster_name: xds_cluster + transport_api_version: V3 + resource_api_version: V3 + node: + extensions: + - category: envoy.upstreams + name: envoy.filters.connection_pools.tcp.generic + type_urls: + - envoy.extensions.upstreams.tcp.generic.v3.GenericConnectionPoolProto + - category: envoy.rate_limit_descriptors + name: envoy.rate_limit_descriptors.expr + type_urls: + - envoy.extensions.rate_limit_descriptors.expr.v3.Descriptor + - category: envoy.matching.http.input + name: envoy.matching.inputs.destination_ip + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.DestinationIPInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.destination_port + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.DestinationPortInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.direct_source_ip + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.DirectSourceIPInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.dns_san + type_urls: + - envoy.extensions.matching.common_inputs.ssl.v3.DnsSanInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.request_headers + type_urls: + - envoy.type.matcher.v3.HttpRequestHeaderMatchInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.request_trailers + type_urls: + - envoy.type.matcher.v3.HttpRequestTrailerMatchInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.response_headers + type_urls: + - envoy.type.matcher.v3.HttpResponseHeaderMatchInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.response_trailers + type_urls: + - envoy.type.matcher.v3.HttpResponseTrailerMatchInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.server_name + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.ServerNameInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.source_ip + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.SourceIPInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.source_port + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.SourcePortInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.source_type + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.SourceTypeInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.status_code_class_input + type_urls: + - envoy.type.matcher.v3.HttpResponseStatusCodeClassMatchInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.status_code_input + type_urls: + - envoy.type.matcher.v3.HttpResponseStatusCodeMatchInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.subject + type_urls: + - envoy.extensions.matching.common_inputs.ssl.v3.SubjectInput + - category: envoy.matching.http.input + name: envoy.matching.inputs.uri_san + type_urls: + - envoy.extensions.matching.common_inputs.ssl.v3.UriSanInput + - category: envoy.matching.http.input + name: query_params + type_urls: + - envoy.type.matcher.v3.HttpRequestQueryParamMatchInput + - category: envoy.tls.cert_validator + name: envoy.tls.cert_validator.default + - category: envoy.tls.cert_validator + name: envoy.tls.cert_validator.spiffe + - category: envoy.path.match + name: envoy.path.match.uri_template.uri_template_matcher + type_urls: + - envoy.extensions.path.match.uri_template.v3.UriTemplateMatchConfig + - category: envoy.http.original_ip_detection + name: envoy.http.original_ip_detection.custom_header + type_urls: + - envoy.extensions.http.original_ip_detection.custom_header.v3.CustomHeaderConfig + - category: envoy.http.original_ip_detection + name: envoy.http.original_ip_detection.xff + type_urls: + - envoy.extensions.http.original_ip_detection.xff.v3.XffConfig + - category: envoy.filters.http.upstream + name: envoy.buffer + - category: envoy.filters.http.upstream + name: envoy.filters.http.admission_control + type_urls: + - envoy.extensions.filters.http.admission_control.v3.AdmissionControl + - category: envoy.filters.http.upstream + name: envoy.filters.http.buffer + type_urls: + - envoy.extensions.filters.http.buffer.v3.Buffer + - envoy.extensions.filters.http.buffer.v3.BufferPerRoute + - category: envoy.filters.http.upstream + name: envoy.filters.http.upstream_codec + type_urls: + - envoy.extensions.filters.http.upstream_codec.v3.UpstreamCodec + - category: envoy.route.early_data_policy + name: envoy.route.early_data_policy.default + type_urls: + - envoy.extensions.early_data.v3.DefaultEarlyDataPolicy + - category: envoy.compression.compressor + name: envoy.compression.brotli.compressor + type_urls: + - envoy.extensions.compression.brotli.compressor.v3.Brotli + - category: envoy.compression.compressor + name: envoy.compression.gzip.compressor + type_urls: + - envoy.extensions.compression.gzip.compressor.v3.Gzip + - category: envoy.compression.compressor + name: envoy.compression.zstd.compressor + type_urls: + - envoy.extensions.compression.zstd.compressor.v3.Zstd + - category: envoy.compression.decompressor + name: envoy.compression.brotli.decompressor + type_urls: + - envoy.extensions.compression.brotli.decompressor.v3.Brotli + - category: envoy.compression.decompressor + name: envoy.compression.gzip.decompressor + type_urls: + - envoy.extensions.compression.gzip.decompressor.v3.Gzip + - category: envoy.compression.decompressor + name: envoy.compression.zstd.decompressor + type_urls: + - envoy.extensions.compression.zstd.decompressor.v3.Zstd + - category: envoy.wasm.runtime + name: envoy.wasm.runtime.null + - category: envoy.wasm.runtime + name: envoy.wasm.runtime.v8 + - category: envoy.stats_sinks + name: envoy.dog_statsd + - category: envoy.stats_sinks + name: envoy.graphite_statsd + - category: envoy.stats_sinks + name: envoy.metrics_service + - category: envoy.stats_sinks + name: envoy.stat_sinks.dog_statsd + type_urls: + - envoy.config.metrics.v3.DogStatsdSink + - category: envoy.stats_sinks + name: envoy.stat_sinks.graphite_statsd + type_urls: + - envoy.extensions.stat_sinks.graphite_statsd.v3.GraphiteStatsdSink + - category: envoy.stats_sinks + name: envoy.stat_sinks.hystrix + type_urls: + - envoy.config.metrics.v3.HystrixSink + - category: envoy.stats_sinks + name: envoy.stat_sinks.metrics_service + type_urls: + - envoy.config.metrics.v3.MetricsServiceConfig + - category: envoy.stats_sinks + name: envoy.stat_sinks.statsd + type_urls: + - envoy.config.metrics.v3.StatsdSink + - category: envoy.stats_sinks + name: envoy.stat_sinks.wasm + type_urls: + - envoy.extensions.stat_sinks.wasm.v3.Wasm + - category: envoy.stats_sinks + name: envoy.statsd + - category: envoy.path.rewrite + name: envoy.path.rewrite.uri_template.uri_template_rewriter + type_urls: + - envoy.extensions.path.rewrite.uri_template.v3.UriTemplateRewriteConfig + - category: envoy.http.custom_response + name: envoy.extensions.http.custom_response.local_response_policy + type_urls: + - envoy.extensions.http.custom_response.local_response_policy.v3.LocalResponsePolicy + - category: envoy.http.custom_response + name: envoy.extensions.http.custom_response.redirect_policy + type_urls: + - envoy.extensions.http.custom_response.redirect_policy.v3.RedirectPolicy + - category: envoy.matching.action + name: envoy.matching.actions.format_string + type_urls: + - envoy.config.core.v3.SubstitutionFormatString + - category: envoy.matching.action + name: filter-chain-name + type_urls: + - google.protobuf.StringValue + - category: envoy.quic.connection_id_generator + name: envoy.quic.deterministic_connection_id_generator + type_urls: + - envoy.extensions.quic.connection_id_generator.v3.DeterministicConnectionIdGeneratorConfig + - category: envoy.network.dns_resolver + name: envoy.network.dns_resolver.cares + type_urls: + - envoy.extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig + - category: envoy.network.dns_resolver + name: envoy.network.dns_resolver.getaddrinfo + type_urls: + - envoy.extensions.network.dns_resolver.getaddrinfo.v3.GetAddrInfoDnsResolverConfig + - category: envoy.bootstrap + name: envoy.bootstrap.internal_listener + type_urls: + - envoy.extensions.bootstrap.internal_listener.v3.InternalListener + - category: envoy.bootstrap + name: envoy.bootstrap.wasm + type_urls: + - envoy.extensions.wasm.v3.WasmService + - category: envoy.bootstrap + name: envoy.extensions.network.socket_interface.default_socket_interface + type_urls: + - envoy.extensions.network.socket_interface.v3.DefaultSocketInterface + - category: envoy.filters.listener + name: envoy.filters.listener.http_inspector + type_urls: + - envoy.extensions.filters.listener.http_inspector.v3.HttpInspector + - category: envoy.filters.listener + name: envoy.filters.listener.original_dst + type_urls: + - envoy.extensions.filters.listener.original_dst.v3.OriginalDst + - category: envoy.filters.listener + name: envoy.filters.listener.original_src + type_urls: + - envoy.extensions.filters.listener.original_src.v3.OriginalSrc + - category: envoy.filters.listener + name: envoy.filters.listener.proxy_protocol + type_urls: + - envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol + - category: envoy.filters.listener + name: envoy.filters.listener.tls_inspector + type_urls: + - envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector + - category: envoy.filters.listener + name: envoy.listener.http_inspector + - category: envoy.filters.listener + name: envoy.listener.original_dst + - category: envoy.filters.listener + name: envoy.listener.original_src + - category: envoy.filters.listener + name: envoy.listener.proxy_protocol + - category: envoy.filters.listener + name: envoy.listener.tls_inspector + - category: envoy.matching.common_inputs + name: envoy.matching.common_inputs.environment_variable + type_urls: + - envoy.extensions.matching.common_inputs.environment_variable.v3.Config + - category: envoy.matching.input_matchers + name: envoy.matching.matchers.consistent_hashing + type_urls: + - envoy.extensions.matching.input_matchers.consistent_hashing.v3.ConsistentHashing + - category: envoy.matching.input_matchers + name: envoy.matching.matchers.ip + type_urls: + - envoy.extensions.matching.input_matchers.ip.v3.Ip + - category: envoy.grpc_credentials + name: envoy.grpc_credentials.aws_iam + - category: envoy.grpc_credentials + name: envoy.grpc_credentials.default + - category: envoy.grpc_credentials + name: envoy.grpc_credentials.file_based_metadata + - category: envoy.request_id + name: envoy.request_id.uuid + type_urls: + - envoy.extensions.request_id.uuid.v3.UuidRequestIdConfig + - category: envoy.load_balancing_policies + name: envoy.load_balancing_policies.least_request + type_urls: + - envoy.extensions.load_balancing_policies.least_request.v3.LeastRequest + - category: envoy.load_balancing_policies + name: envoy.load_balancing_policies.maglev + type_urls: + - envoy.extensions.load_balancing_policies.maglev.v3.Maglev + - category: envoy.load_balancing_policies + name: envoy.load_balancing_policies.random + type_urls: + - envoy.extensions.load_balancing_policies.random.v3.Random + - category: envoy.load_balancing_policies + name: envoy.load_balancing_policies.ring_hash + type_urls: + - envoy.extensions.load_balancing_policies.ring_hash.v3.RingHash + - category: envoy.load_balancing_policies + name: envoy.load_balancing_policies.round_robin + type_urls: + - envoy.extensions.load_balancing_policies.round_robin.v3.RoundRobin + - category: envoy.resolvers + name: envoy.ip + - category: envoy.filters.http + name: envoy.bandwidth_limit + - category: envoy.filters.http + name: envoy.buffer + - category: envoy.filters.http + name: envoy.cors + - category: envoy.filters.http + name: envoy.csrf + - category: envoy.filters.http + name: envoy.ext_authz + - category: envoy.filters.http + name: envoy.ext_proc + - category: envoy.filters.http + name: envoy.fault + - category: envoy.filters.http + name: envoy.filters.http.adaptive_concurrency + type_urls: + - envoy.extensions.filters.http.adaptive_concurrency.v3.AdaptiveConcurrency + - category: envoy.filters.http + name: envoy.filters.http.admission_control + type_urls: + - envoy.extensions.filters.http.admission_control.v3.AdmissionControl + - category: envoy.filters.http + name: envoy.filters.http.alternate_protocols_cache + type_urls: + - envoy.extensions.filters.http.alternate_protocols_cache.v3.FilterConfig + - category: envoy.filters.http + name: envoy.filters.http.aws_lambda + type_urls: + - envoy.extensions.filters.http.aws_lambda.v3.Config + - envoy.extensions.filters.http.aws_lambda.v3.PerRouteConfig + - category: envoy.filters.http + name: envoy.filters.http.aws_request_signing + type_urls: + - envoy.extensions.filters.http.aws_request_signing.v3.AwsRequestSigning + - category: envoy.filters.http + name: envoy.filters.http.bandwidth_limit + type_urls: + - envoy.extensions.filters.http.bandwidth_limit.v3.BandwidthLimit + - category: envoy.filters.http + name: envoy.filters.http.buffer + type_urls: + - envoy.extensions.filters.http.buffer.v3.Buffer + - envoy.extensions.filters.http.buffer.v3.BufferPerRoute + - category: envoy.filters.http + name: envoy.filters.http.cache + type_urls: + - envoy.extensions.filters.http.cache.v3.CacheConfig + - category: envoy.filters.http + name: envoy.filters.http.cdn_loop + type_urls: + - envoy.extensions.filters.http.cdn_loop.v3.CdnLoopConfig + - category: envoy.filters.http + name: envoy.filters.http.composite + type_urls: + - envoy.extensions.filters.http.composite.v3.Composite + - category: envoy.filters.http + name: envoy.filters.http.compressor + type_urls: + - envoy.extensions.filters.http.compressor.v3.Compressor + - envoy.extensions.filters.http.compressor.v3.CompressorPerRoute + - category: envoy.filters.http + name: envoy.filters.http.connect_grpc_bridge + type_urls: + - envoy.extensions.filters.http.connect_grpc_bridge.v3.FilterConfig + - category: envoy.filters.http + name: envoy.filters.http.cors + type_urls: + - envoy.extensions.filters.http.cors.v3.Cors + - envoy.extensions.filters.http.cors.v3.CorsPolicy + - category: envoy.filters.http + name: envoy.filters.http.csrf + type_urls: + - envoy.extensions.filters.http.csrf.v3.CsrfPolicy + - category: envoy.filters.http + name: envoy.filters.http.custom_response + type_urls: + - envoy.extensions.filters.http.custom_response.v3.CustomResponse + - category: envoy.filters.http + name: envoy.filters.http.decompressor + type_urls: + - envoy.extensions.filters.http.decompressor.v3.Decompressor + - category: envoy.filters.http + name: envoy.filters.http.dynamic_forward_proxy + type_urls: + - envoy.extensions.filters.http.dynamic_forward_proxy.v3.FilterConfig + - envoy.extensions.filters.http.dynamic_forward_proxy.v3.PerRouteConfig + - category: envoy.filters.http + name: envoy.filters.http.ext_authz + type_urls: + - envoy.extensions.filters.http.ext_authz.v3.ExtAuthz + - envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute + - category: envoy.filters.http + name: envoy.filters.http.ext_proc + type_urls: + - envoy.extensions.filters.http.ext_proc.v3.ExtProcPerRoute + - envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor + - category: envoy.filters.http + name: envoy.filters.http.fault + type_urls: + - envoy.extensions.filters.http.fault.v3.HTTPFault + - category: envoy.filters.http + name: envoy.filters.http.file_system_buffer + type_urls: + - envoy.extensions.filters.http.file_system_buffer.v3.FileSystemBufferFilterConfig + - category: envoy.filters.http + name: envoy.filters.http.gcp_authn + type_urls: + - envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig + - category: envoy.filters.http + name: envoy.filters.http.grpc_http1_bridge + type_urls: + - envoy.extensions.filters.http.grpc_http1_bridge.v3.Config + - category: envoy.filters.http + name: envoy.filters.http.grpc_http1_reverse_bridge + type_urls: + - envoy.extensions.filters.http.grpc_http1_reverse_bridge.v3.FilterConfig + - envoy.extensions.filters.http.grpc_http1_reverse_bridge.v3.FilterConfigPerRoute + - category: envoy.filters.http + name: envoy.filters.http.grpc_json_transcoder + type_urls: + - envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder + - category: envoy.filters.http + name: envoy.filters.http.grpc_stats + type_urls: + - envoy.extensions.filters.http.grpc_stats.v3.FilterConfig + - category: envoy.filters.http + name: envoy.filters.http.grpc_web + type_urls: + - envoy.extensions.filters.http.grpc_web.v3.GrpcWeb + - category: envoy.filters.http + name: envoy.filters.http.header_to_metadata + type_urls: + - envoy.extensions.filters.http.header_to_metadata.v3.Config + - category: envoy.filters.http + name: envoy.filters.http.health_check + type_urls: + - envoy.extensions.filters.http.health_check.v3.HealthCheck + - category: envoy.filters.http + name: envoy.filters.http.ip_tagging + type_urls: + - envoy.extensions.filters.http.ip_tagging.v3.IPTagging + - category: envoy.filters.http + name: envoy.filters.http.jwt_authn + type_urls: + - envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication + - envoy.extensions.filters.http.jwt_authn.v3.PerRouteConfig + - category: envoy.filters.http + name: envoy.filters.http.local_ratelimit + type_urls: + - envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit + - category: envoy.filters.http + name: envoy.filters.http.lua + type_urls: + - envoy.extensions.filters.http.lua.v3.Lua + - envoy.extensions.filters.http.lua.v3.LuaPerRoute + - category: envoy.filters.http + name: envoy.filters.http.match_delegate + type_urls: + - envoy.extensions.common.matching.v3.ExtensionWithMatcher + - category: envoy.filters.http + name: envoy.filters.http.oauth2 + type_urls: + - envoy.extensions.filters.http.oauth2.v3.OAuth2 + - category: envoy.filters.http + name: envoy.filters.http.on_demand + type_urls: + - envoy.extensions.filters.http.on_demand.v3.OnDemand + - envoy.extensions.filters.http.on_demand.v3.PerRouteConfig + - category: envoy.filters.http + name: envoy.filters.http.original_src + type_urls: + - envoy.extensions.filters.http.original_src.v3.OriginalSrc + - category: envoy.filters.http + name: envoy.filters.http.rate_limit_quota + type_urls: + - envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig + - envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaOverride + - category: envoy.filters.http + name: envoy.filters.http.ratelimit + type_urls: + - envoy.extensions.filters.http.ratelimit.v3.RateLimit + - envoy.extensions.filters.http.ratelimit.v3.RateLimitPerRoute + - category: envoy.filters.http + name: envoy.filters.http.rbac + type_urls: + - envoy.extensions.filters.http.rbac.v3.RBAC + - envoy.extensions.filters.http.rbac.v3.RBACPerRoute + - category: envoy.filters.http + name: envoy.filters.http.router + type_urls: + - envoy.extensions.filters.http.router.v3.Router + - category: envoy.filters.http + name: envoy.filters.http.set_metadata + type_urls: + - envoy.extensions.filters.http.set_metadata.v3.Config + - category: envoy.filters.http + name: envoy.filters.http.stateful_session + type_urls: + - envoy.extensions.filters.http.stateful_session.v3.StatefulSession + - envoy.extensions.filters.http.stateful_session.v3.StatefulSessionPerRoute + - category: envoy.filters.http + name: envoy.filters.http.tap + type_urls: + - envoy.extensions.filters.http.tap.v3.Tap + - category: envoy.filters.http + name: envoy.filters.http.wasm + type_urls: + - envoy.extensions.filters.http.wasm.v3.Wasm + - category: envoy.filters.http + name: envoy.grpc_http1_bridge + - category: envoy.filters.http + name: envoy.grpc_json_transcoder + - category: envoy.filters.http + name: envoy.grpc_web + - category: envoy.filters.http + name: envoy.health_check + - category: envoy.filters.http + name: envoy.ip_tagging + - category: envoy.filters.http + name: envoy.local_rate_limit + - category: envoy.filters.http + name: envoy.lua + - category: envoy.filters.http + name: envoy.rate_limit + - category: envoy.filters.http + name: envoy.router + - category: envoy.access_loggers + name: envoy.access_loggers.file + type_urls: + - envoy.extensions.access_loggers.file.v3.FileAccessLog + - category: envoy.access_loggers + name: envoy.access_loggers.http_grpc + type_urls: + - envoy.extensions.access_loggers.grpc.v3.HttpGrpcAccessLogConfig + - category: envoy.access_loggers + name: envoy.access_loggers.open_telemetry + type_urls: + - envoy.extensions.access_loggers.open_telemetry.v3.OpenTelemetryAccessLogConfig + - category: envoy.access_loggers + name: envoy.access_loggers.stderr + type_urls: + - envoy.extensions.access_loggers.stream.v3.StderrAccessLog + - category: envoy.access_loggers + name: envoy.access_loggers.stdout + type_urls: + - envoy.extensions.access_loggers.stream.v3.StdoutAccessLog + - category: envoy.access_loggers + name: envoy.access_loggers.tcp_grpc + type_urls: + - envoy.extensions.access_loggers.grpc.v3.TcpGrpcAccessLogConfig + - category: envoy.access_loggers + name: envoy.access_loggers.wasm + type_urls: + - envoy.extensions.access_loggers.wasm.v3.WasmAccessLog + - category: envoy.access_loggers + name: envoy.file_access_log + - category: envoy.access_loggers + name: envoy.http_grpc_access_log + - category: envoy.access_loggers + name: envoy.open_telemetry_access_log + - category: envoy.access_loggers + name: envoy.stderr_access_log + - category: envoy.access_loggers + name: envoy.stdout_access_log + - category: envoy.access_loggers + name: envoy.tcp_grpc_access_log + - category: envoy.access_loggers + name: envoy.wasm_access_log + - category: envoy.config.validators + name: envoy.config.validators.minimum_clusters + - category: envoy.config.validators + name: envoy.config.validators.minimum_clusters_validator + type_urls: + - envoy.extensions.config.validators.minimum_clusters.v3.MinimumClustersValidator + - category: envoy.http.header_validators + name: envoy.http.header_validators.envoy_default + type_urls: + - envoy.extensions.http.header_validators.envoy_default.v3.HeaderValidatorConfig + - category: envoy.dubbo_proxy.serializers + name: dubbo.hessian2 + - category: quic.http_server_connection + name: quic.http_server_connection.default + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.alts + type_urls: + - envoy.extensions.transport_sockets.alts.v3.Alts + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.quic + type_urls: + - envoy.extensions.transport_sockets.quic.v3.QuicDownstreamTransport + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.raw_buffer + type_urls: + - envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.starttls + type_urls: + - envoy.extensions.transport_sockets.starttls.v3.StartTlsConfig + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.tap + type_urls: + - envoy.extensions.transport_sockets.tap.v3.Tap + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.tcp_stats + type_urls: + - envoy.extensions.transport_sockets.tcp_stats.v3.Config + - category: envoy.transport_sockets.downstream + name: envoy.transport_sockets.tls + type_urls: + - envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext + - category: envoy.transport_sockets.downstream + name: raw_buffer + - category: envoy.transport_sockets.downstream + name: starttls + - category: envoy.transport_sockets.downstream + name: tls + - category: envoy.rbac.matchers + name: envoy.rbac.matchers.upstream_ip_port + type_urls: + - envoy.extensions.rbac.matchers.upstream_ip_port.v3.UpstreamIpPortMatcher + - category: envoy.common.key_value + name: envoy.key_value.file_based + type_urls: + - envoy.extensions.key_value.file_based.v3.FileBasedKeyValueStoreConfig + - category: envoy.matching.network.input + name: envoy.matching.inputs.application_protocol + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.ApplicationProtocolInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.destination_ip + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.DestinationIPInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.destination_port + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.DestinationPortInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.direct_source_ip + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.DirectSourceIPInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.dns_san + type_urls: + - envoy.extensions.matching.common_inputs.ssl.v3.DnsSanInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.server_name + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.ServerNameInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.source_ip + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.SourceIPInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.source_port + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.SourcePortInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.source_type + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.SourceTypeInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.subject + type_urls: + - envoy.extensions.matching.common_inputs.ssl.v3.SubjectInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.transport_protocol + type_urls: + - envoy.extensions.matching.common_inputs.network.v3.TransportProtocolInput + - category: envoy.matching.network.input + name: envoy.matching.inputs.uri_san + type_urls: + - envoy.extensions.matching.common_inputs.ssl.v3.UriSanInput + - category: envoy.dubbo_proxy.protocols + name: dubbo + - category: envoy.guarddog_actions + name: envoy.watchdog.abort_action + type_urls: + - envoy.watchdog.v3.AbortActionConfig + - category: envoy.guarddog_actions + name: envoy.watchdog.profile_action + type_urls: + - envoy.extensions.watchdog.profile_action.v3.ProfileActionConfig + - category: envoy.quic.server.crypto_stream + name: envoy.quic.crypto_stream.server.quiche + type_urls: + - envoy.extensions.quic.crypto_stream.v3.CryptoServerStreamConfig + - category: envoy.regex_engines + name: envoy.regex_engines.google_re2 + type_urls: + - envoy.extensions.regex_engines.v3.GoogleRE2 + - category: envoy.http.stateful_session + name: envoy.http.stateful_session.cookie + type_urls: + - envoy.extensions.http.stateful_session.cookie.v3.CookieBasedSessionState + - category: envoy.http.stateful_session + name: envoy.http.stateful_session.header + type_urls: + - envoy.extensions.http.stateful_session.header.v3.HeaderBasedSessionState + - category: envoy.matching.network.custom_matchers + name: envoy.matching.custom_matchers.trie_matcher + type_urls: + - xds.type.matcher.v3.IPMatcher + - category: envoy.udp_packet_writer + name: envoy.udp_packet_writer.default + type_urls: + - envoy.extensions.udp_packet_writer.v3.UdpDefaultWriterFactory + - category: envoy.udp_packet_writer + name: envoy.udp_packet_writer.gso + type_urls: + - envoy.extensions.udp_packet_writer.v3.UdpGsoBatchWriterFactory + - category: envoy.quic.proof_source + name: envoy.quic.proof_source.filter_chain + type_urls: + - envoy.extensions.quic.proof_source.v3.ProofSourceConfig + - category: envoy.resource_monitors + name: envoy.resource_monitors.fixed_heap + type_urls: + - envoy.extensions.resource_monitors.fixed_heap.v3.FixedHeapConfig + - category: envoy.resource_monitors + name: envoy.resource_monitors.injected_resource + type_urls: + - envoy.extensions.resource_monitors.injected_resource.v3.InjectedResourceConfig + - category: envoy.http.stateful_header_formatters + name: envoy.http.stateful_header_formatters.preserve_case + type_urls: + - envoy.extensions.http.header_formatters.preserve_case.v3.PreserveCaseFormatterConfig + - category: envoy.http.stateful_header_formatters + name: preserve_case + - category: envoy.thrift_proxy.filters + name: envoy.filters.thrift.header_to_metadata + type_urls: + - envoy.extensions.filters.network.thrift_proxy.filters.header_to_metadata.v3.HeaderToMetadata + - category: envoy.thrift_proxy.filters + name: envoy.filters.thrift.payload_to_metadata + type_urls: + - envoy.extensions.filters.network.thrift_proxy.filters.payload_to_metadata.v3.PayloadToMetadata + - category: envoy.thrift_proxy.filters + name: envoy.filters.thrift.rate_limit + type_urls: + - envoy.extensions.filters.network.thrift_proxy.filters.ratelimit.v3.RateLimit + - category: envoy.thrift_proxy.filters + name: envoy.filters.thrift.router + type_urls: + - envoy.extensions.filters.network.thrift_proxy.router.v3.Router + - category: envoy.tracers + name: envoy.tracers.datadog + type_urls: + - envoy.config.trace.v3.DatadogConfig + - category: envoy.tracers + name: envoy.tracers.dynamic_ot + type_urls: + - envoy.config.trace.v3.DynamicOtConfig + - category: envoy.tracers + name: envoy.tracers.opencensus + type_urls: + - envoy.config.trace.v3.OpenCensusConfig + - category: envoy.tracers + name: envoy.tracers.opentelemetry + type_urls: + - envoy.config.trace.v3.OpenTelemetryConfig + - category: envoy.tracers + name: envoy.tracers.skywalking + type_urls: + - envoy.config.trace.v3.SkyWalkingConfig + - category: envoy.tracers + name: envoy.tracers.xray + type_urls: + - envoy.config.trace.v3.XRayConfig + - category: envoy.tracers + name: envoy.tracers.zipkin + type_urls: + - envoy.config.trace.v3.ZipkinConfig + - category: envoy.tracers + name: envoy.zipkin + - category: envoy.retry_priorities + name: envoy.retry_priorities.previous_priorities + type_urls: + - envoy.extensions.retry.priority.previous_priorities.v3.PreviousPrioritiesConfig + - category: envoy.http.early_header_mutation + name: envoy.http.early_header_mutation.header_mutation + type_urls: + - envoy.extensions.http.early_header_mutation.header_mutation.v3.HeaderMutation + - category: envoy.connection_handler + name: envoy.connection_handler.default + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.alts + type_urls: + - envoy.extensions.transport_sockets.alts.v3.Alts + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.http_11_proxy + type_urls: + - envoy.extensions.transport_sockets.http_11_proxy.v3.Http11ProxyUpstreamTransport + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.internal_upstream + type_urls: + - envoy.extensions.transport_sockets.internal_upstream.v3.InternalUpstreamTransport + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.quic + type_urls: + - envoy.extensions.transport_sockets.quic.v3.QuicUpstreamTransport + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.raw_buffer + type_urls: + - envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.starttls + type_urls: + - envoy.extensions.transport_sockets.starttls.v3.UpstreamStartTlsConfig + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.tap + type_urls: + - envoy.extensions.transport_sockets.tap.v3.Tap + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.tcp_stats + type_urls: + - envoy.extensions.transport_sockets.tcp_stats.v3.Config + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.tls + type_urls: + - envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext + - category: envoy.transport_sockets.upstream + name: envoy.transport_sockets.upstream_proxy_protocol + type_urls: + - envoy.extensions.transport_sockets.proxy_protocol.v3.ProxyProtocolUpstreamTransport + - category: envoy.transport_sockets.upstream + name: raw_buffer + - category: envoy.transport_sockets.upstream + name: starttls + - category: envoy.transport_sockets.upstream + name: tls + - category: envoy.thrift_proxy.transports + name: auto + - category: envoy.thrift_proxy.transports + name: framed + - category: envoy.thrift_proxy.transports + name: header + - category: envoy.thrift_proxy.transports + name: unframed + - category: envoy.clusters + name: envoy.cluster.eds + - category: envoy.clusters + name: envoy.cluster.logical_dns + - category: envoy.clusters + name: envoy.cluster.original_dst + - category: envoy.clusters + name: envoy.cluster.static + - category: envoy.clusters + name: envoy.cluster.strict_dns + - category: envoy.clusters + name: envoy.clusters.aggregate + - category: envoy.clusters + name: envoy.clusters.dynamic_forward_proxy + - category: envoy.clusters + name: envoy.clusters.redis + - category: envoy.access_loggers.extension_filters + name: envoy.access_loggers.extension_filters.cel + type_urls: + - envoy.extensions.access_loggers.filters.cel.v3.ExpressionFilter + - category: envoy.thrift_proxy.protocols + name: auto + - category: envoy.thrift_proxy.protocols + name: binary + - category: envoy.thrift_proxy.protocols + name: binary/non-strict + - category: envoy.thrift_proxy.protocols + name: compact + - category: envoy.thrift_proxy.protocols + name: twitter + - category: envoy.upstream_options + name: envoy.extensions.upstreams.http.v3.HttpProtocolOptions + type_urls: + - envoy.extensions.upstreams.http.v3.HttpProtocolOptions + - category: envoy.upstream_options + name: envoy.extensions.upstreams.tcp.v3.TcpProtocolOptions + type_urls: + - envoy.extensions.upstreams.tcp.v3.TcpProtocolOptions + - category: envoy.upstream_options + name: envoy.upstreams.http.http_protocol_options + - category: envoy.upstream_options + name: envoy.upstreams.tcp.tcp_protocol_options + - category: envoy.listener_manager_impl + name: envoy.listener_manager_impl.default + type_urls: + - envoy.config.listener.v3.ListenerManager + - category: network.connection.client + name: default + - category: network.connection.client + name: envoy_internal + - category: envoy.filters.udp_listener + name: envoy.filters.udp.dns_filter + type_urls: + - envoy.extensions.filters.udp.dns_filter.v3.DnsFilterConfig + - category: envoy.filters.udp_listener + name: envoy.filters.udp_listener.udp_proxy + type_urls: + - envoy.extensions.filters.udp.udp_proxy.v3.UdpProxyConfig + - category: envoy.http.cache + name: envoy.extensions.http.cache.file_system_http_cache + type_urls: + - envoy.extensions.http.cache.file_system_http_cache.v3.FileSystemHttpCacheConfig + - category: envoy.http.cache + name: envoy.extensions.http.cache.simple + type_urls: + - envoy.extensions.http.cache.simple_http_cache.v3.SimpleHttpCacheConfig + - category: envoy.retry_host_predicates + name: envoy.retry_host_predicates.omit_canary_hosts + type_urls: + - envoy.extensions.retry.host.omit_canary_hosts.v3.OmitCanaryHostsPredicate + - category: envoy.retry_host_predicates + name: envoy.retry_host_predicates.omit_host_metadata + type_urls: + - envoy.extensions.retry.host.omit_host_metadata.v3.OmitHostMetadataConfig + - category: envoy.retry_host_predicates + name: envoy.retry_host_predicates.previous_hosts + type_urls: + - envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate + - category: envoy.formatter + name: envoy.formatter.metadata + type_urls: + - envoy.extensions.formatter.metadata.v3.Metadata + - category: envoy.formatter + name: envoy.formatter.req_without_query + type_urls: + - envoy.extensions.formatter.req_without_query.v3.ReqWithoutQuery + - category: envoy.internal_redirect_predicates + name: envoy.internal_redirect_predicates.allow_listed_routes + type_urls: + - envoy.extensions.internal_redirect.allow_listed_routes.v3.AllowListedRoutesConfig + - category: envoy.internal_redirect_predicates + name: envoy.internal_redirect_predicates.previous_routes + type_urls: + - envoy.extensions.internal_redirect.previous_routes.v3.PreviousRoutesConfig + - category: envoy.internal_redirect_predicates + name: envoy.internal_redirect_predicates.safe_cross_scheme + type_urls: + - envoy.extensions.internal_redirect.safe_cross_scheme.v3.SafeCrossSchemeConfig + - category: envoy.matching.http.custom_matchers + name: envoy.matching.custom_matchers.trie_matcher + type_urls: + - xds.type.matcher.v3.IPMatcher + - category: envoy.dubbo_proxy.filters + name: envoy.filters.dubbo.router + type_urls: + - envoy.extensions.filters.network.dubbo_proxy.router.v3.Router + - category: envoy.filters.network + name: envoy.echo + - category: envoy.filters.network + name: envoy.ext_authz + - category: envoy.filters.network + name: envoy.filters.network.connection_limit + type_urls: + - envoy.extensions.filters.network.connection_limit.v3.ConnectionLimit + - category: envoy.filters.network + name: envoy.filters.network.direct_response + type_urls: + - envoy.extensions.filters.network.direct_response.v3.Config + - category: envoy.filters.network + name: envoy.filters.network.dubbo_proxy + type_urls: + - envoy.extensions.filters.network.dubbo_proxy.v3.DubboProxy + - category: envoy.filters.network + name: envoy.filters.network.echo + type_urls: + - envoy.extensions.filters.network.echo.v3.Echo + - category: envoy.filters.network + name: envoy.filters.network.ext_authz + type_urls: + - envoy.extensions.filters.network.ext_authz.v3.ExtAuthz + - category: envoy.filters.network + name: envoy.filters.network.http_connection_manager + type_urls: + - envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + - category: envoy.filters.network + name: envoy.filters.network.local_ratelimit + type_urls: + - envoy.extensions.filters.network.local_ratelimit.v3.LocalRateLimit + - category: envoy.filters.network + name: envoy.filters.network.mongo_proxy + type_urls: + - envoy.extensions.filters.network.mongo_proxy.v3.MongoProxy + - category: envoy.filters.network + name: envoy.filters.network.ratelimit + type_urls: + - envoy.extensions.filters.network.ratelimit.v3.RateLimit + - category: envoy.filters.network + name: envoy.filters.network.rbac + type_urls: + - envoy.extensions.filters.network.rbac.v3.RBAC + - category: envoy.filters.network + name: envoy.filters.network.redis_proxy + type_urls: + - envoy.extensions.filters.network.redis_proxy.v3.RedisProxy + - category: envoy.filters.network + name: envoy.filters.network.sni_cluster + type_urls: + - envoy.extensions.filters.network.sni_cluster.v3.SniCluster + - category: envoy.filters.network + name: envoy.filters.network.sni_dynamic_forward_proxy + type_urls: + - envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3.FilterConfig + - category: envoy.filters.network + name: envoy.filters.network.tcp_proxy + type_urls: + - envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy + - category: envoy.filters.network + name: envoy.filters.network.thrift_proxy + type_urls: + - envoy.extensions.filters.network.thrift_proxy.v3.ThriftProxy + - category: envoy.filters.network + name: envoy.filters.network.wasm + type_urls: + - envoy.extensions.filters.network.wasm.v3.Wasm + - category: envoy.filters.network + name: envoy.filters.network.zookeeper_proxy + type_urls: + - envoy.extensions.filters.network.zookeeper_proxy.v3.ZooKeeperProxy + - category: envoy.filters.network + name: envoy.http_connection_manager + - category: envoy.filters.network + name: envoy.mongo_proxy + - category: envoy.filters.network + name: envoy.ratelimit + - category: envoy.filters.network + name: envoy.redis_proxy + - category: envoy.filters.network + name: envoy.tcp_proxy + - category: envoy.health_checkers + name: envoy.health_checkers.redis + type_urls: + - envoy.extensions.health_checkers.redis.v3.Redis + - category: envoy.health_checkers + name: envoy.health_checkers.thrift + type_urls: + - envoy.extensions.health_checkers.thrift.v3.Thrift + user_agent_build_version: + metadata: + build.label: dev + build.type: RELEASE + revision.sha: 14111e3c62d3d38b0c921cb7011fd0a94e880aed + revision.status: Clean + ssl.version: BoringSSL + version: + major_number: 1 + minor_number: 26 + user_agent_name: envoy + static_resources: + clusters: + - connect_timeout: 1s + load_assignment: + cluster_name: xds_cluster + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: envoy-gateway + port_value: 18000 + name: xds_cluster + transport_socket: + name: envoy.transport_sockets.tls + typed_config: + '@type': type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext + common_tls_context: + tls_certificate_sds_secret_configs: + - name: xds_certificate + sds_config: + path_config_source: + path: /sds/xds-certificate.json + resource_api_version: V3 + tls_params: + tls_maximum_protocol_version: TLSv1_3 + validation_context_sds_secret_config: + name: xds_trusted_ca + sds_config: + path_config_source: + path: /sds/xds-trusted-ca.json + resource_api_version: V3 + type: STRICT_DNS + typed_extension_protocol_options: + envoy.extensions.upstreams.http.v3.HttpProtocolOptions: + '@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions + explicit_http_config: + http2_protocol_options: {} + last_updated: "2023-02-23T09:05:23.422Z" +- '@type': type.googleapis.com/envoy.admin.v3.ClustersConfigDump + dynamic_active_clusters: + - cluster: + '@type': type.googleapis.com/envoy.config.cluster.v3.Cluster + common_lb_config: + locality_weighted_lb_config: {} + connect_timeout: 5s + dns_lookup_family: V4_ONLY + load_assignment: + cluster_name: default-backend-rule-0-match-0-www.example.com + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: 10.96.159.190 + port_value: 3000 + load_balancing_weight: 1 + load_balancing_weight: 1 + locality: {} + name: default-backend-rule-0-match-0-www.example.com + outlier_detection: {} + type: STATIC + last_updated: "2023-02-23T09:05:38.443Z" + version_info: 2a0a1698a9d3e05b802047b0cd36b52a070afa49042e1ba267168c5265c7cabf + static_clusters: + - cluster: + '@type': type.googleapis.com/envoy.config.cluster.v3.Cluster + connect_timeout: 1s + load_assignment: + cluster_name: xds_cluster + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: envoy-gateway + port_value: 18000 + name: xds_cluster + transport_socket: + name: envoy.transport_sockets.tls + typed_config: + '@type': type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext + common_tls_context: + tls_certificate_sds_secret_configs: + - name: xds_certificate + sds_config: + path_config_source: + path: /sds/xds-certificate.json + resource_api_version: V3 + tls_params: + tls_maximum_protocol_version: TLSv1_3 + validation_context_sds_secret_config: + name: xds_trusted_ca + sds_config: + path_config_source: + path: /sds/xds-trusted-ca.json + resource_api_version: V3 + type: STRICT_DNS + typed_extension_protocol_options: + envoy.extensions.upstreams.http.v3.HttpProtocolOptions: + '@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions + explicit_http_config: + http2_protocol_options: {} + last_updated: "2023-02-23T09:05:23.436Z" + version_info: "2" +- '@type': type.googleapis.com/envoy.admin.v3.ListenersConfigDump + dynamic_listeners: + - active_state: + last_updated: "2023-02-23T09:05:38.446Z" + listener: + '@type': type.googleapis.com/envoy.config.listener.v3.Listener + access_log: + - filter: + response_flag_filter: + flags: + - NR + name: envoy.access_loggers.file + typed_config: + '@type': type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog + path: /dev/stdout + address: + socket_address: + address: 0.0.0.0 + port_value: 10080 + default_filter_chain: + filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + '@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + access_log: + - name: envoy.access_loggers.file + typed_config: + '@type': type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog + path: /dev/stdout + http_filters: + - name: envoy.filters.http.router + typed_config: + '@type': type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + rds: + config_source: + api_config_source: + api_type: DELTA_GRPC + grpc_services: + - envoy_grpc: + cluster_name: xds_cluster + set_node_on_first_message_only: true + transport_api_version: V3 + resource_api_version: V3 + route_config_name: default-eg-http + stat_prefix: http + upgrade_configs: + - upgrade_type: websocket + use_remote_address: true + name: default-eg-http + version_info: 42c71fb50c315ee3a32b327da69f8cc0baf420bc84b747e82d9c38e1b0c33eb2 + name: default-eg-http + version_info: "2" +- '@type': type.googleapis.com/envoy.admin.v3.ScopedRoutesConfigDump +- '@type': type.googleapis.com/envoy.admin.v3.RoutesConfigDump + dynamic_route_configs: + - last_updated: "2023-02-23T09:05:38.448Z" + route_config: + '@type': type.googleapis.com/envoy.config.route.v3.RouteConfiguration + name: default-eg-http + virtual_hosts: + - domains: + - '*' + name: default-eg-http + routes: + - match: + headers: + - name: :authority + string_match: + exact: www.example.com + prefix: / + route: + cluster: default-backend-rule-0-match-0-www.example.com + version_info: cb1e51997a9c3aa6f4d920f39fd5bdbd966e9382b7b6bdf42efca8c22c6c3442 +- '@type': type.googleapis.com/envoy.admin.v3.SecretsConfigDump + dynamic_active_secrets: + - last_updated: "2023-02-23T09:05:23.442Z" + name: xds_certificate + secret: + '@type': type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret + name: xds_certificate + tls_certificate: + certificate_chain: + inline_bytes: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLekNDQWhPZ0F3SUJBZ0lFTnJRVi9qQU5CZ2txaGtpRzl3MEJBUXNGQURBc01SWXdGQVlEVlFRREV3MWwKYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEVlFRRkV3azFOalE0TXpRek9EVXdIaGNOTWpNd01qRTNNRE0wTVRJNApXaGNOTWpRd01qRTRNRE0wTVRJNFdqQU1NUW93Q0FZRFZRUUREQUVxTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGCkFBT0NBUThBTUlJQkNnS0NBUUVBNmdNSTJSNElEeE5mQ2o1YmZHU1hVUjF4YkVjRjE5VXlhVC9VUEZZcFltM0gKN2c4T3Z6YWRlelFyRkt3dG9PWWFDN0hjam8zVnVHSmhqSDQ1Z3lVbWFzSEg1Q1gzaWFlRlhxQXdVQjRqVTZQSgpBbElCZWlMRVdZVjN1VjMwcGlKK09DWFhrUEQzSFFVb0ZYbnljcHM3OE9PbjZoS0wwNUY0YkJsT2UrMFdIUHdECll2dFQ4TEdpVmcrSkxhR2lxaGgxOXY5endwQUd2akI2Z09kN1BjdkNQNFExUHdkMWdMSnNXVFNweGhDUEVPb2kKV2ZSOG56RERVUHU5aXc2QTJObW1XQ1FxSVNYcDlZUmJMTEdjZnV4VURjcFVYMHpqY0xvcE1sajBnM0RkYVpWRwpzNm9JcW9BSjZ6MFhvdWwrM0ZZdUtJYy8rT1V3VkR1VkI4K0ZRZzlYdlFJREFRQUJvM1V3Y3pBT0JnTlZIUThCCkFmOEVCQU1DQlBBd0hRWURWUjBPQkJZRUZKaUJ3cytVaFRlT2p1L1ZXT29LQWNTSmZBeXVNQjhHQTFVZEl3UVkKTUJhQUZCT3kvOGkxeVMxRWxpN0tNK0gyeXZEM1BJMG1NQ0VHQTFVZEVRUWFNQmlDRmlvdVpXNTJiM2t0WjJGMApaWGRoZVMxemVYTjBaVzB3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZraHdIakZtQWxqdEpheU54WitodURGCm5UdWd0REZvSTBFT2J0cUhLYnloWU9sdlNFdkhxbFNQSHNRUUhmQnQwbHpOOEtGUTd2YWxTSHRBZStlNzBETHkKaGY3TDQ3eklST3NLcmtmb0tjMjRqaUhNQkVwbCtJdjllU1RWVG9WemxzazVZUGxET2lrMzZpRUY3WDVVZ0RheApsVllZZnpSYzRUb0poODMwT285Wm9pai9LM295dVNXcTVGRzVFWExmeW9tQzZPQ3dxRm5GNzRSM21FTjVheDRlCnppVm5QVDNxVmFZdytzNngwSVhHU282U2M3Q2lUbmMrckFNa3FJNVNsK2p5RHhKTkZBQlIvRllCcTQzK1B1UGkKN0YxOEw0N2l3aVFFYU82NUJzU2hlYmg1Qk1VbytDdzIyM3JsMGRpTldwY3FrdVhtT1BWNDlrWkZkdHpFNytVPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + private_key: + inline_bytes: W3JlZGFjdGVkXQ== + - last_updated: "2023-02-23T09:05:23.447Z" + name: xds_trusted_ca + secret: + '@type': type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret + name: xds_trusted_ca + validation_context: + match_typed_subject_alt_names: + - matcher: + exact: envoy-gateway + san_type: DNS + trusted_ca: + inline_bytes: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURHRENDQWdDZ0F3SUJBZ0lFSWFxd1VUQU5CZ2txaGtpRzl3MEJBUXNGQURBc01SWXdGQVlEVlFRREV3MWwKYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEVlFRRkV3azFOalE0TXpRek9EVXdIaGNOTWpNd01qRTNNRE0wTVRJNApXaGNOTWpRd01qRTRNRE0wTVRJNFdqQXNNUll3RkFZRFZRUURFdzFsYm5admVTMW5ZWFJsZDJGNU1SSXdFQVlEClZRUUZFd2sxTmpRNE16UXpPRFV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRDIKeFMrNkRWY2FvbHFkVVBzTHZwNUtQMEQyV0hrTkVEY0tPeml3bzZNYm9wczFLYWJnNXVYSVl5T21JRWNTTXNKNwpHbVAxMlJjK0J3V1dFWXRrTHVPU3BwQm1lSjN3aDRrUlVRVTRTemRFU1dDcU40RTNpcTJib3FFVm53SkFGQ1ZpCldldGVjZkZsODZFalliQUxxSnRCbGJCbFFQM1ZMZ1hva0VVamJ4QmFobE1wZitUWkVJNFBuam1zUWN5a21LeXIKaDJwdmM3cnZYb29HTlhTM0Q0eFc1VDY3dmxLYi94UlM3c2gwTkJEU0dtTE1jY2pxWFZXazVOR2lBWVB3dXBWSwpTWG02dnZXUFZCdEd1bkZhS0JSRGx4TlJrb0wzRUN6UkNtenoxR2ZYMGJkSm1leElOM2VIUFBRdkd0M0txeUlnCkgrYnc0OXpqdlVUb2dNcXFpTlcvQWdNQkFBR2pRakJBTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQQmdOVkhSTUIKQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRVHN2L0l0Y2t0UkpZdXlqUGg5c3J3OXp5TkpqQU5CZ2txaGtpRwo5dzBCQVFzRkFBT0NBUUVBd2dvZEsxalhVWFZDVXBTSjE0cEo3S3ZobWZPT1hkaVNISmNSSzlIUzI1c2xwOWN2CkJDSndmWUZmanJ4Rmc5TnV4aVpiM01oVXk5MDBqenBPdk1QWStEeUxFWFVxTGd5ZlBMUzYveVliem8yZHdwdzMKOCtrTXlsQUFlZmtaSW9oT0VhYSsvNFFBVVVGZVp1a1B6bmF6RzZIWnZKQkNxWVdRNXBaSSt3WTI1dzhEU0VOMgpkOCswVkpzWU5IdUk4aXhneGZhUkRycW5LRHBMUGJ3Z3VaRDl6ZkV3dVFaNG1oeEd0Vk1wR0NLSndscWFhdXJ0CkF5aGhzOXBHNERndkpSY1BLeFY4bndRdzZtSm55dkIxcExxTW1aQTVqZWhxbFNvUGVpWUlBMk1neU83cTVPYmMKL040bzBNTVdvZ1piRWR6aTBnTXJRT2lpNE41Q0ZlakVrYStIMmc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== diff --git a/internal/kubernetes/client.go b/internal/kubernetes/client.go index e3929bc6f71..20ec8b747f9 100644 --- a/internal/kubernetes/client.go +++ b/internal/kubernetes/client.go @@ -29,6 +29,9 @@ type CLIClient interface { // RESTConfig returns the Kubernetes rest.Config used to configure the clients. RESTConfig() *rest.Config + // Pod returns the pod for the given namespaced name. + Pod(namespacedName types.NamespacedName) (*corev1.Pod, error) + // PodsForSelector finds pods matching selector. PodsForSelector(namespace string, labelSelectors ...string) (*corev1.PodList, error) @@ -111,6 +114,10 @@ func (c *client) PodsForSelector(namespace string, podSelectors ...string) (*cor }) } +func (c *client) Pod(namespacedName types.NamespacedName) (*corev1.Pod, error) { + return c.kube.CoreV1().Pods(namespacedName.Namespace).Get(context.TODO(), namespacedName.Name, metav1.GetOptions{}) +} + func (c *client) PodExec(namespacedName types.NamespacedName, container string, command string) (stdout string, stderr string, err error) { defer func() { if err != nil { diff --git a/internal/kubernetes/port-forwarder.go b/internal/kubernetes/port-forwarder.go new file mode 100644 index 00000000000..2f72fc4b928 --- /dev/null +++ b/internal/kubernetes/port-forwarder.go @@ -0,0 +1,134 @@ +// Copyright Envoy Gateway Authors +// SPDX-License-Identifier: Apache-2.0 +// The full text of the Apache license is available in the LICENSE file at +// the root of the repo. + +package kubernetes + +import ( + "fmt" + "io" + "net/http" + "os" + + "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/portforward" + "k8s.io/client-go/transport/spdy" + + netutil "github.com/envoyproxy/gateway/internal/utils/net" +) + +type PortForwarder interface { + Start() error + + Stop() + + // Address returns the address of the local forwarded address. + Address() string +} + +var _ PortForwarder = &localForwarder{} + +type localForwarder struct { + types.NamespacedName + CLIClient + + localPort int + podPort int + + stopCh chan struct{} +} + +func NewLocalPortForwarder(client CLIClient, namespacedName types.NamespacedName, localPort, podPort int) (PortForwarder, error) { + f := &localForwarder{ + stopCh: make(chan struct{}), + CLIClient: client, + NamespacedName: namespacedName, + localPort: localPort, + podPort: podPort, + } + if f.localPort == 0 { + // get a random port + p, err := netutil.LocalAvailablePort() + if err != nil { + return nil, errors.Wrapf(err, "failed to get a local available port") + } + f.localPort = p + } + + return f, nil +} + +func (f *localForwarder) Start() error { + errCh := make(chan error, 1) + readyCh := make(chan struct{}, 1) + go func() { + for { + select { + case <-f.stopCh: + return + default: + } + + fw, err := f.buildKubernetesPortForwarder(readyCh) + if err != nil { + errCh <- err + return + } + + if err := fw.ForwardPorts(); err != nil { + errCh <- err + return + } + + readyCh = nil + } + + }() + + select { + case err := <-errCh: + return errors.Wrap(err, "failed to start port forwarder") + case <-readyCh: + return nil + } +} + +func (f *localForwarder) buildKubernetesPortForwarder(readyCh chan struct{}) (*portforward.PortForwarder, error) { + restClient, err := rest.RESTClientFor(f.RESTConfig()) + if err != nil { + return nil, err + } + + req := restClient.Post().Resource("pods").Namespace(f.Namespace).Name(f.Name).SubResource("portforward") + serverURL := req.URL() + + roundTripper, upgrader, err := spdy.RoundTripperFor(f.RESTConfig()) + if err != nil { + return nil, fmt.Errorf("failure creating roundtripper: %v", err) + } + + dialer := spdy.NewDialer(upgrader, &http.Client{Transport: roundTripper}, http.MethodPost, serverURL) + fw, err := portforward.NewOnAddresses(dialer, + []string{netutil.DefaultLocalAddress}, + []string{fmt.Sprintf("%d:%d", f.localPort, f.podPort)}, + f.stopCh, + readyCh, + io.Discard, + os.Stderr) + if err != nil { + return nil, fmt.Errorf("failed establishing portforward: %v", err) + } + + return fw, nil +} + +func (f *localForwarder) Stop() { + close(f.stopCh) +} + +func (f *localForwarder) Address() string { + return fmt.Sprintf("%s:%d", netutil.DefaultLocalAddress, f.localPort) +} diff --git a/internal/utils/net/port.go b/internal/utils/net/port.go new file mode 100644 index 00000000000..518e18643b0 --- /dev/null +++ b/internal/utils/net/port.go @@ -0,0 +1,24 @@ +// Copyright Envoy Gateway Authors +// SPDX-License-Identifier: Apache-2.0 +// The full text of the Apache license is available in the LICENSE file at +// the root of the repo. + +package net + +import ( + "fmt" + "net" +) + +const ( + DefaultLocalAddress = "localhost" +) + +func LocalAvailablePort() (int, error) { + l, err := net.Listen("tcp", fmt.Sprintf("%s:0", DefaultLocalAddress)) + if err != nil { + return 0, err + } + + return l.Addr().(*net.TCPAddr).Port, l.Close() +}