From 12e7c9c6f45f9847519215904212e4a55615ad22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Verhofst=C3=A9?= <25819942+JonasVerhofste@users.noreply.github.com> Date: Sat, 6 Apr 2019 01:03:45 +0200 Subject: [PATCH 1/5] Add CORS handling for Zipkin collector service, fixes #703 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jonas Verhofsté <25819942+JonasVerhofste@users.noreply.github.com> --- cmd/collector/app/builder/builder_flags.go | 28 +++++++++++++++------- cmd/collector/main.go | 13 ++++++++-- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/cmd/collector/app/builder/builder_flags.go b/cmd/collector/app/builder/builder_flags.go index 91bbe226bd6..cf45404ee44 100644 --- a/cmd/collector/app/builder/builder_flags.go +++ b/cmd/collector/app/builder/builder_flags.go @@ -24,15 +24,17 @@ import ( ) const ( - collectorQueueSize = "collector.queue-size" - collectorNumWorkers = "collector.num-workers" - collectorPort = "collector.port" - collectorHTTPPort = "collector.http-port" - collectorGRPCPort = "collector.grpc-port" - collectorGRPCTLS = "collector.grpc.tls" - collectorGRPCCert = "collector.grpc.tls.cert" - collectorGRPCKey = "collector.grpc.tls.key" - collectorZipkinHTTPort = "collector.zipkin.http-port" + collectorQueueSize = "collector.queue-size" + collectorNumWorkers = "collector.num-workers" + collectorPort = "collector.port" + collectorHTTPPort = "collector.http-port" + collectorGRPCPort = "collector.grpc-port" + collectorGRPCTLS = "collector.grpc.tls" + collectorGRPCCert = "collector.grpc.tls.cert" + collectorGRPCKey = "collector.grpc.tls.key" + collectorZipkinHTTPort = "collector.zipkin.http-port" + collectorZipkinAllowedOrigins = "collector.zipkin.allowed-origins" + collectorZipkinAllowedHeaders = "collector.zipkin.allowed-headers" ) // CollectorOptions holds configuration for collector @@ -55,6 +57,10 @@ type CollectorOptions struct { CollectorGRPCKey string // CollectorZipkinHTTPPort is the port that the Zipkin collector service listens in on for http requests CollectorZipkinHTTPPort int + // CollectorZipkinAllowedOrigins is a list of origins a cross-domain request to the Zipkin collector service can be executed from + CollectorZipkinAllowedOrigins string + // CollectorZipkinAllowedHeaders is a list of headers that the Zipkin collector service allowes the client to use with cross-domain requests + CollectorZipkinAllowedHeaders string } // AddFlags adds flags for CollectorOptions @@ -68,6 +74,8 @@ func AddFlags(flags *flag.FlagSet) { flags.Bool(collectorGRPCTLS, false, "Enable TLS") flags.String(collectorGRPCCert, "", "Path to TLS certificate file") flags.String(collectorGRPCKey, "", "Path to TLS key file") + flags.String(collectorZipkinAllowedOrigins, "*", "Allowed origins for the Zipkin collector service, default accepts all") + flags.String(collectorZipkinAllowedHeaders, "content-type", "Allowed headers for the Zipkin collector service, default content-type") } // InitFromViper initializes CollectorOptions with properties from viper @@ -81,5 +89,7 @@ func (cOpts *CollectorOptions) InitFromViper(v *viper.Viper) *CollectorOptions { cOpts.CollectorGRPCCert = v.GetString(collectorGRPCCert) cOpts.CollectorGRPCKey = v.GetString(collectorGRPCKey) cOpts.CollectorZipkinHTTPPort = v.GetInt(collectorZipkinHTTPort) + cOpts.CollectorZipkinAllowedOrigins = v.GetString(collectorZipkinAllowedOrigins) + cOpts.CollectorZipkinAllowedHeaders = v.GetString(collectorZipkinAllowedHeaders) return cOpts } diff --git a/cmd/collector/main.go b/cmd/collector/main.go index e1d20784e42..8986dcabdcd 100644 --- a/cmd/collector/main.go +++ b/cmd/collector/main.go @@ -24,6 +24,7 @@ import ( "strconv" "github.com/gorilla/mux" + "github.com/rs/cors" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/uber/jaeger-lib/metrics" @@ -137,7 +138,7 @@ func main() { recoveryHandler := recoveryhandler.NewRecoveryHandler(logger, true) httpHandler := recoveryHandler(r) - go startZipkinHTTPAPI(logger, builderOpts.CollectorZipkinHTTPPort, zipkinSpansHandler, recoveryHandler) + go startZipkinHTTPAPI(logger, builderOpts.CollectorZipkinHTTPPort, builderOpts.CollectorZipkinAllowedOrigins, builderOpts.CollectorZipkinAllowedHeaders, zipkinSpansHandler, recoveryHandler) logger.Info("Starting jaeger-collector HTTP server", zap.Int("http-port", builderOpts.CollectorHTTPPort)) go func() { @@ -214,6 +215,8 @@ func startGRPCServer( func startZipkinHTTPAPI( logger *zap.Logger, zipkinPort int, + allowedOrigins string, + allowedHeaders string, zipkinSpansHandler app.ZipkinSpansHandler, recoveryHandler func(http.Handler) http.Handler, ) { @@ -222,10 +225,16 @@ func startZipkinHTTPAPI( r := mux.NewRouter() zHandler.RegisterRoutes(r) + c := cors.New(cors.Options{ + AllowedOrigins: []string{allowedOrigins}, + AllowedMethods: []string{"POST"}, // Allowing only POST, because that's the only handled one + AllowedHeaders: []string{allowedHeaders}, + }) + httpPortStr := ":" + strconv.Itoa(zipkinPort) logger.Info("Listening for Zipkin HTTP traffic", zap.Int("zipkin.http-port", zipkinPort)) - if err := http.ListenAndServe(httpPortStr, recoveryHandler(r)); err != nil { + if err := http.ListenAndServe(httpPortStr, c.Handler(recoveryHandler(r))); err != nil { logger.Fatal("Could not launch service", zap.Error(err)) } } From 11bdec6b18ddd87817e8801d3be1c2c16a03e6a2 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Tue, 16 Apr 2019 00:29:02 -0400 Subject: [PATCH 2/5] Show status of lock file Signed-off-by: Yuri Shkuro --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 41a46bb2cfc..fccac613a4a 100644 --- a/Makefile +++ b/Makefile @@ -152,7 +152,9 @@ install-glide: .PHONY: install install: @which dep > /dev/null || curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh + git status dep ensure + git status .PHONE: elasticsearch-mappings elasticsearch-mappings: From 5b5a9747390a22ab4fe590c63dbc703911755e84 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Tue, 16 Apr 2019 00:36:29 -0400 Subject: [PATCH 3/5] fix dep-ensure command Signed-off-by: Yuri Shkuro --- Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index fccac613a4a..91f1a78f91c 100644 --- a/Makefile +++ b/Makefile @@ -152,9 +152,7 @@ install-glide: .PHONY: install install: @which dep > /dev/null || curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - git status - dep ensure - git status + dep ensure -vendor-only .PHONE: elasticsearch-mappings elasticsearch-mappings: From 1f5f70a2504cd035547e399da21620ce038f0b21 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Tue, 16 Apr 2019 00:48:26 -0400 Subject: [PATCH 4/5] add deps Signed-off-by: Yuri Shkuro --- Gopkg.lock | 78 +++++++++++++++++++++++++++++++----------------------- Gopkg.toml | 5 ++++ 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index b4a3dcbd663..0113bcea796 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -10,12 +10,12 @@ revision = "e2d15f34fcf99d5dbb871c820ec73f710fca9815" [[projects]] - digest = "1:ed77032e4241e3b8329c9304d66452ed196e795876e14be677a546f36b94e67a" + digest = "1:fa6d2866c3f2426871e3a3adb4ab1b9885801558559b15a8a05698f0a82c1c7d" name = "github.com/DataDog/zstd" packages = ["."] pruneopts = "UT" - revision = "c7161f8c63c045cbc7ca051dcc969dd0e4054de2" - version = "v1.3.5" + revision = "69c5189b6513b1503c9c5332fb2e96362e51d547" + version = "v1.3.8" [[projects]] digest = "1:a2682518d905d662d984ef9959984ef87cecb777d379bfa9d9fe40e78069b3e4" @@ -34,15 +34,15 @@ revision = "de5bf2ad457846296e2031421a34e2568e304e35" [[projects]] - digest = "1:348a764166732453e2efc6ff255cfc3162fa9b3a99ed89b517dcc81b0e819003" + digest = "1:d84c59b2a2d87f185d91a1cc426a1f4d4e9365109fe0d96cbd2404c3a57c365a" name = "github.com/Shopify/sarama" packages = [ ".", "mocks", ] pruneopts = "UT" - revision = "4602b5a8c6e826f9e0737865818dd43b2339a092" - version = "v1.21.0" + revision = "5d2af84cf5e2dd36f2daecaaafa13c4e286f20fd" + version = "v1.22.0" [[projects]] digest = "1:8515c0ca4381246cf332cee05fc84070bbbb07bd679b639161506ba532f47128" @@ -69,12 +69,12 @@ version = "v9" [[projects]] - branch = "master" digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d" name = "github.com/beorn7/perks" packages = ["quantile"] pruneopts = "UT" - revision = "3a771d992973f24aa725d07868b467d1ddfceafb" + revision = "4b2b341e8d7715fae06375aa633dbb6e91b3fb46" + version = "v1.0.0" [[projects]] digest = "1:4fdffd1724c105db8c394019cfc2444fd23466be04812850506437361ee5de55" @@ -395,12 +395,12 @@ version = "v1.4.0" [[projects]] - digest = "1:ca59b1175189b3f0e9f1793d2c350114be36eaabbe5b9f554b35edee1de50aea" + digest = "1:d5f97fc268267ec1b61c3453058c738246fc3e746f14b1ae25161513b7367b0c" name = "github.com/gorilla/mux" packages = ["."] pruneopts = "UT" - revision = "a7962380ca08b5a188038c69871b8d3fbdf31e89" - version = "v1.7.0" + revision = "c5c6c98bc25355028a63748a498942a6398ccd22" + version = "v1.7.1" [[projects]] digest = "1:d84c274ffdfd7ce6b4efd64ee776648459009d1f542440b1faa32cb7ed9aba84" @@ -525,7 +525,7 @@ [[projects]] branch = "master" - digest = "1:4e3b113f547147da4f7fcdd5d36fdc01e36d7416f87a51651642b4ae3451b1cf" + digest = "1:ae08d850ba158ea3ba4a7bb90f8372608172d8920644e5a6693b940a1f4e5d01" name = "github.com/mmcloughlin/avo" packages = [ "attr", @@ -543,7 +543,7 @@ "x86", ] pruneopts = "UT" - revision = "138eaf8dc34d1c265aab931e3541149d667426ca" + revision = "2e7d06bc7ada2979f17ccf8ebf486dba23b84fc7" [[projects]] branch = "master" @@ -574,15 +574,15 @@ version = "v1.3.0" [[projects]] - digest = "1:d886a3c32c8c1a770d07e36340f061d3afc948d065ffc3c9a19b01b34d4f0b65" + digest = "1:cf9272ab0a637cb1ffa40e2b6220108d7016a36b3eb357e4b57aacb7a8f725c0" name = "github.com/pierrec/lz4" packages = [ ".", "internal/xxh32", ] pruneopts = "UT" - revision = "315a67e90e415bcdaff33057da191569bf4d8479" - version = "v2.1.1" + revision = "9419d2361c8ae111073ffe3337ecc364fb590921" + version = "v2.1.2" [[projects]] digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b" @@ -628,16 +628,16 @@ "model", ] pruneopts = "UT" - revision = "cfeb6f9992ffa54aaa4f2170ade4067ee478b250" - version = "v0.2.0" + revision = "a82f4c12f983cc2649298185f296632953e50d3e" + version = "v0.3.0" [[projects]] branch = "master" - digest = "1:f806b417865e83457c3659232926203f5b0d39aa741b71d9e3e4c0c774e71a5c" + digest = "1:5e412e2a03bd0cfdb102db97212be2e625df74fa8b2d4a8a51f107b1456e256b" name = "github.com/prometheus/procfs" packages = ["."] pruneopts = "UT" - revision = "ea9eea63887261e4d8ed8315f4078e88d540c725" + revision = "e22ddced71425e65e388b17b7d0289c5ea77d06e" [[projects]] branch = "master" @@ -647,6 +647,14 @@ pruneopts = "UT" revision = "3113b8401b8a98917cde58f8bbd42a1b1c03b1fd" +[[projects]] + digest = "1:b0c25f00bad20d783d259af2af8666969e2fc343fa0dc9efe52936bbd67fb758" + name = "github.com/rs/cors" + packages = ["."] + pruneopts = "UT" + revision = "9a47f48565a795472d43519dd49aac781f3034fb" + version = "v1.6.0" + [[projects]] digest = "1:bb495ec276ab82d3dd08504bbc0594a65de8c3b22c6f2aaa92d05b73fbf3a82e" name = "github.com/spf13/afero" @@ -771,7 +779,7 @@ version = "v2.0.0" [[projects]] - digest = "1:37bca5e5ac0765002e2f5fa2770fec98e4b5a2f345751b480c5b3aeefa090ccd" + digest = "1:992341833a2041170ef76a24fbabc2b44667056816add68ff6fdb6e835ab3d38" name = "github.com/uber/tchannel-go" packages = [ ".", @@ -789,8 +797,8 @@ "typed", ] pruneopts = "UT" - revision = "162ecb0dc97845a0c42aae3899651dba111085e5" - version = "v1.12.0" + revision = "4e23485fd5de65e8676619a55e711eea7437041e" + version = "v1.13.0" [[projects]] digest = "1:3c1a69cdae3501bf75e76d0d86dc6f2b0a7421bc205c0cb7b96b19eed464a34d" @@ -828,7 +836,7 @@ [[projects]] branch = "master" - digest = "1:e1371e0e4050e8649a8026e1ed336fc0287448edd594c66c1c0f5486c2825382" + digest = "1:5d325750ebefe5c7b615cdabacae4832f83bca1d2f37c015496aa650361bcab4" name = "golang.org/x/net" packages = [ "bpf", @@ -840,21 +848,23 @@ "idna", "internal/iana", "internal/socket", + "internal/socks", "internal/timeseries", "ipv4", "ipv6", + "proxy", "trace", ] pruneopts = "UT" - revision = "b630fd6fe46bcfc98f989005d8b8ec1400e60a6e" + revision = "1da14a5a36f220ea3f03470682b737b1dfd5de22" [[projects]] branch = "master" - digest = "1:e18c1645adfe83d66f80d3676040e478895669f9456ca8bafa6a7290656c1b48" + digest = "1:3e01c69b34e7c3fa4b7a118ca95a6beaecea00f7f4fb701545d83eacd3badb3c" name = "golang.org/x/sys" packages = ["unix"] pruneopts = "UT" - revision = "81d4e9dc473e5e8c933f2aaeba2a3d81efb9aed2" + revision = "3fd5a3612ccd7907f26270fa92579a0f2f76f734" [[projects]] digest = "1:0c56024909189aee3364b7f21a95a27459f718aa7c199a5c111c36cfffd9eaef" @@ -882,7 +892,7 @@ [[projects]] branch = "master" - digest = "1:f7eb066115bc018abc31a7bba8d94ec5d728cf6bdcc2a14c30e05b686daf73c7" + digest = "1:e51cac7607e1a755cfe164b6d182e7346dd172707aa2798a757c789e7f9e899f" name = "golang.org/x/tools" packages = [ "go/ast/astutil", @@ -896,7 +906,7 @@ "internal/semver", ] pruneopts = "UT" - revision = "8a44e74612bcf51f0d4407df3d3a8377cb99c2d8" + revision = "2e9de471ebd3a3af420e4dd35a826936b94da7f6" [[projects]] branch = "master" @@ -909,10 +919,10 @@ "protobuf/field_mask", ] pruneopts = "UT" - revision = "f467c93bbac2133ff463e1f93d18d8f9f3f04451" + revision = "d1146b9035b912113a38af3b138eb2af567b2c67" [[projects]] - digest = "1:0a1fea691bda5979304d27194e77e67737a321cab3f584107f1bddc5dc650e43" + digest = "1:3338f026da07f8c2900786acf89bd101c02e27f4a63cfca84626bfcbd464ac74" name = "google.golang.org/grpc" packages = [ ".", @@ -929,6 +939,7 @@ "grpclog", "internal", "internal/backoff", + "internal/balancerload", "internal/binarylog", "internal/channelz", "internal/envconfig", @@ -950,8 +961,8 @@ "test/bufconn", ] pruneopts = "UT" - revision = "3507fb8e1a5ad030303c106fef3a47c9fdad16ad" - version = "v1.19.1" + revision = "236199dd5f8031d698fb64091194aecd1c3895b2" + version = "v1.20.0" [[projects]] digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" @@ -1025,6 +1036,7 @@ "github.com/pkg/errors", "github.com/prometheus/client_golang/prometheus", "github.com/prometheus/client_golang/prometheus/promhttp", + "github.com/rs/cors", "github.com/spf13/cobra", "github.com/spf13/pflag", "github.com/spf13/viper", diff --git a/Gopkg.toml b/Gopkg.toml index 55d897fc65a..67902a044ff 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -142,3 +142,8 @@ required = [ [[constraint]] name = "github.com/grpc-ecosystem/go-grpc-middleware" version = "1.0.0" + +[[constaint]] + name = "github.com/rs/cors" + version = "1.3.0" + From 9b9872189bdc06716012dc6aabc2b866a8acaf3b Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Tue, 16 Apr 2019 09:42:35 -0400 Subject: [PATCH 5/5] pin grpc to previous version Signed-off-by: Yuri Shkuro --- Gopkg.lock | 17 ++++++++--------- Gopkg.toml | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 0113bcea796..13ff5fd85d6 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -129,11 +129,11 @@ [[projects]] branch = "master" - digest = "1:4f8b6d3cfd2ac1813bddcfee3b954fc5c0315e3917d8b3879d2e1cd09f9a3692" + digest = "1:c734f42e5a75563e4482fb00c1e870fccf4d635cf192581d31a45f9068276b7c" name = "github.com/dgryski/go-farm" packages = ["."] pruneopts = "UT" - revision = "8198c7b169ec28630587aded52777c5e10a037c2" + revision = "e1214b5e05dc9a680734f587f0e1686b3889f983" [[projects]] digest = "1:1f0c7ab489b407a7f8f9ad16c25a504d28ab461517a971d341388a56156c1bd7" @@ -633,11 +633,11 @@ [[projects]] branch = "master" - digest = "1:5e412e2a03bd0cfdb102db97212be2e625df74fa8b2d4a8a51f107b1456e256b" + digest = "1:49b09905e781d7775c086604cc00083e1832d0783f1f421b79f42657c457d029" name = "github.com/prometheus/procfs" packages = ["."] pruneopts = "UT" - revision = "e22ddced71425e65e388b17b7d0289c5ea77d06e" + revision = "8368d24ba045f26503eb745b624d930cbe214c79" [[projects]] branch = "master" @@ -864,7 +864,7 @@ name = "golang.org/x/sys" packages = ["unix"] pruneopts = "UT" - revision = "3fd5a3612ccd7907f26270fa92579a0f2f76f734" + revision = "ebb4019f01c946537c3ea6b99f0eca5283552a8f" [[projects]] digest = "1:0c56024909189aee3364b7f21a95a27459f718aa7c199a5c111c36cfffd9eaef" @@ -922,7 +922,7 @@ revision = "d1146b9035b912113a38af3b138eb2af567b2c67" [[projects]] - digest = "1:3338f026da07f8c2900786acf89bd101c02e27f4a63cfca84626bfcbd464ac74" + digest = "1:0a1fea691bda5979304d27194e77e67737a321cab3f584107f1bddc5dc650e43" name = "google.golang.org/grpc" packages = [ ".", @@ -939,7 +939,6 @@ "grpclog", "internal", "internal/backoff", - "internal/balancerload", "internal/binarylog", "internal/channelz", "internal/envconfig", @@ -961,8 +960,8 @@ "test/bufconn", ] pruneopts = "UT" - revision = "236199dd5f8031d698fb64091194aecd1c3895b2" - version = "v1.20.0" + revision = "3507fb8e1a5ad030303c106fef3a47c9fdad16ad" + version = "v1.19.1" [[projects]] digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" diff --git a/Gopkg.toml b/Gopkg.toml index 67902a044ff..694a79bbd00 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -97,7 +97,7 @@ required = [ [[constraint]] name = "google.golang.org/grpc" - version = "^1.13.0" + version = "=1.19.1" [[constraint]] name = "gopkg.in/olivere/elastic.v5"