From c1fefc12273ab55469006b68819626adba32bf74 Mon Sep 17 00:00:00 2001 From: marcel-dempers Date: Sun, 18 Apr 2021 10:17:04 +1000 Subject: [PATCH] testing jaeger with linkerd --- .../applications/playlists-api/app.go | 12 ++--- .../applications/playlists-api/deploy.yaml | 2 +- .../applications/videos-api/app.go | 15 +------ .../applications/videos-api/deploy.yaml | 2 +- .../applications/videos-web/deploy.yaml | 2 +- kubernetes/servicemesh/docker-compose.yaml | 6 +-- .../linkerd/tracing/jaeger-all-in-one.yaml | 44 ++++++++++++++++--- 7 files changed, 53 insertions(+), 30 deletions(-) diff --git a/kubernetes/servicemesh/applications/playlists-api/app.go b/kubernetes/servicemesh/applications/playlists-api/app.go index 1c4c73e..08a56a6 100644 --- a/kubernetes/servicemesh/applications/playlists-api/app.go +++ b/kubernetes/servicemesh/applications/playlists-api/app.go @@ -74,7 +74,7 @@ func main() { opentracing.HTTPHeadersCarrier(r.Header), ) - span := opentracing.GlobalTracer().StartSpan("/ GET", ext.RPCServerOption(spanCtx)) + span := opentracing.StartSpan("/ GET", ext.RPCServerOption(spanCtx)) defer span.Finish() cors(w) @@ -94,7 +94,8 @@ func main() { vs := []videos{} for vi := range playlists[pi].Videos { - span, _ := opentracing.StartSpanFromContext(ctx, "videos-api GET") + videoSpan := opentracing.StartSpan("videos-api GET", opentracing.ChildOf(span.Context())) + //span, _ := opentracing.StartSpanFromContext(ctx, "videos-api GET") v := videos{} req, err := http.NewRequest("GET", "http://videos-api:10010/" + playlists[pi].Videos[vi].Id, nil) @@ -109,15 +110,16 @@ func main() { ) videoResp, err :=http.DefaultClient.Do(req) - span.Finish() - + if err != nil { fmt.Println(err) - span.SetTag("error", true) + videoSpan.SetTag("error", true) break } defer videoResp.Body.Close() + videoSpan.Finish() + video, err := ioutil.ReadAll(videoResp.Body) if err != nil { diff --git a/kubernetes/servicemesh/applications/playlists-api/deploy.yaml b/kubernetes/servicemesh/applications/playlists-api/deploy.yaml index e22bd1f..d26dd94 100644 --- a/kubernetes/servicemesh/applications/playlists-api/deploy.yaml +++ b/kubernetes/servicemesh/applications/playlists-api/deploy.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: playlists-api - image: aimvector/service-mesh:playlists-api-2.0.0 + image: aimvector/service-mesh:playlists-api-2.0.4 imagePullPolicy : Always ports: - containerPort: 10010 diff --git a/kubernetes/servicemesh/applications/videos-api/app.go b/kubernetes/servicemesh/applications/videos-api/app.go index 5f475e1..0c1f62a 100644 --- a/kubernetes/servicemesh/applications/videos-api/app.go +++ b/kubernetes/servicemesh/applications/videos-api/app.go @@ -77,9 +77,9 @@ func main() { opentracing.HTTPHeadersCarrier(r.Header), ) - span := opentracing.GlobalTracer().StartSpan("/id GET", ext.RPCServerOption(spanCtx)) + span := opentracing.StartSpan("/id GET", ext.RPCServerOption(spanCtx)) defer span.Finish() - + if flaky == "true"{ if rand.Intn(90) < 30 { panic("flaky error occurred ") @@ -116,22 +116,11 @@ func video(writer http.ResponseWriter, request *http.Request, p httprouter.Param videoData, err := rdb.Get(ctx, id).Result() if err == redis.Nil { - - span.Tracer().Inject( - span.Context(), - opentracing.HTTPHeaders, - opentracing.HTTPHeadersCarrier(request.Header), - ) return "{}" } else if err != nil { panic(err) } else { - span.Tracer().Inject( - span.Context(), - opentracing.HTTPHeaders, - opentracing.HTTPHeadersCarrier(request.Header), - ) return videoData } } diff --git a/kubernetes/servicemesh/applications/videos-api/deploy.yaml b/kubernetes/servicemesh/applications/videos-api/deploy.yaml index 5749d22..f2f3464 100644 --- a/kubernetes/servicemesh/applications/videos-api/deploy.yaml +++ b/kubernetes/servicemesh/applications/videos-api/deploy.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: videos-api - image: aimvector/service-mesh:videos-api-2.0.0 + image: aimvector/service-mesh:videos-api-2.0.4 imagePullPolicy : Always ports: - containerPort: 10010 diff --git a/kubernetes/servicemesh/applications/videos-web/deploy.yaml b/kubernetes/servicemesh/applications/videos-web/deploy.yaml index 914381d..914d7e4 100644 --- a/kubernetes/servicemesh/applications/videos-web/deploy.yaml +++ b/kubernetes/servicemesh/applications/videos-web/deploy.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: videos-web - image: aimvector/service-mesh:videos-web-2.0.0 + image: aimvector/service-mesh:videos-web-2.0.4 imagePullPolicy : Always ports: - containerPort: 80 diff --git a/kubernetes/servicemesh/docker-compose.yaml b/kubernetes/servicemesh/docker-compose.yaml index 56cd11d..6ed9d92 100644 --- a/kubernetes/servicemesh/docker-compose.yaml +++ b/kubernetes/servicemesh/docker-compose.yaml @@ -2,14 +2,14 @@ version: "3.4" services: videos-web: container_name: videos-web - image: aimvector/service-mesh:videos-web-2.0.0 + image: aimvector/service-mesh:videos-web-2.0.4 build: context: ./applications/videos-web ports: - 80:80 playlists-api: container_name: playlists-api - image: aimvector/service-mesh:playlists-api-2.0.0 + image: aimvector/service-mesh:playlists-api-2.0.4 build: context: ./applications/playlists-api environment: @@ -21,7 +21,7 @@ services: - 81:10010 videos-api: container_name: videos-api - image: aimvector/service-mesh:videos-api-2.0.0 + image: aimvector/service-mesh:videos-api-2.0.4 build: context: ./applications/videos-api environment: diff --git a/kubernetes/servicemesh/linkerd/tracing/jaeger-all-in-one.yaml b/kubernetes/servicemesh/linkerd/tracing/jaeger-all-in-one.yaml index 2bf0ff2..140dc5b 100644 --- a/kubernetes/servicemesh/linkerd/tracing/jaeger-all-in-one.yaml +++ b/kubernetes/servicemesh/linkerd/tracing/jaeger-all-in-one.yaml @@ -1,3 +1,17 @@ +# +# Copyright 2017-2019 The Jaeger Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. See the License for the specific language governing permissions and limitations under +# the License. +# + apiVersion: v1 kind: List items: @@ -7,15 +21,21 @@ items: name: jaeger labels: app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: all-in-one spec: - replicas: 1 selector: matchLabels: app: jaeger + replicas: 1 + strategy: + type: Recreate template: metadata: labels: app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: all-in-one annotations: prometheus.io/scrape: "true" prometheus.io/port: "16686" @@ -50,6 +70,8 @@ items: name: jaeger-query labels: app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: query spec: ports: - name: query-http @@ -57,14 +79,17 @@ items: protocol: TCP targetPort: 16686 selector: - app: jaeger - type: ClusterIP + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: all-in-one + type: LoadBalancer - apiVersion: v1 kind: Service metadata: name: jaeger-collector labels: app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: collector spec: ports: - name: jaeger-collector-tchannel @@ -80,7 +105,8 @@ items: protocol: TCP targetPort: 9411 selector: - app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: all-in-one type: ClusterIP - apiVersion: v1 kind: Service @@ -88,6 +114,8 @@ items: name: jaeger-agent labels: app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: agent spec: ports: - name: agent-zipkin-thrift @@ -108,13 +136,16 @@ items: targetPort: 5778 clusterIP: None selector: - app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: all-in-one - apiVersion: v1 kind: Service metadata: name: zipkin labels: app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: zipkin spec: ports: - name: jaeger-collector-zipkin @@ -123,4 +154,5 @@ items: targetPort: 9411 clusterIP: None selector: - app: jaeger + app.kubernetes.io/name: jaeger + app.kubernetes.io/component: all-in-one