From ed44dc42fdb97619ddba7069f0ed103df849f5fc Mon Sep 17 00:00:00 2001 From: secustor Date: Wed, 27 Apr 2022 13:09:55 +0200 Subject: [PATCH 1/2] feat: add unleash --- README.md | 26 ++++-- apps/snapshot/package.json | 3 +- apps/snapshot/src/App.js | 5 +- apps/snapshot/src/context/PhotoContext.js | 6 +- apps/snapshot/src/instrumentation.js | 47 ++++++---- apps/snapshot/src/unleash.js | 18 ++++ apps/snapshot/yarn.lock | 18 ++++ deploy/kube-prometheus/values.yaml | 18 ++++ deploy/setup.yaml | 7 ++ deploy/unleash-proxy/.helmignore | 23 +++++ deploy/unleash-proxy/Chart.yaml | 24 +++++ deploy/unleash-proxy/overwrites.yaml | 18 ++++ deploy/unleash-proxy/templates/NOTES.txt | 22 +++++ deploy/unleash-proxy/templates/_helpers.tpl | 62 +++++++++++++ .../unleash-proxy/templates/deployment.yaml | 68 ++++++++++++++ deploy/unleash-proxy/templates/hpa.yaml | 28 ++++++ deploy/unleash-proxy/templates/ingress.yaml | 61 ++++++++++++ deploy/unleash-proxy/templates/service.yaml | 15 +++ .../templates/serviceaccount.yaml | 12 +++ .../templates/tests/test-connection.yaml | 15 +++ deploy/unleash-proxy/values.yaml | 87 ++++++++++++++++++ deploy/unleash/values.yaml | 13 +++ images/trace_example.png | Bin 0 -> 136177 bytes 23 files changed, 564 insertions(+), 32 deletions(-) create mode 100644 apps/snapshot/src/unleash.js create mode 100644 deploy/unleash-proxy/.helmignore create mode 100644 deploy/unleash-proxy/Chart.yaml create mode 100644 deploy/unleash-proxy/overwrites.yaml create mode 100644 deploy/unleash-proxy/templates/NOTES.txt create mode 100644 deploy/unleash-proxy/templates/_helpers.tpl create mode 100644 deploy/unleash-proxy/templates/deployment.yaml create mode 100644 deploy/unleash-proxy/templates/hpa.yaml create mode 100644 deploy/unleash-proxy/templates/ingress.yaml create mode 100644 deploy/unleash-proxy/templates/service.yaml create mode 100644 deploy/unleash-proxy/templates/serviceaccount.yaml create mode 100644 deploy/unleash-proxy/templates/tests/test-connection.yaml create mode 100644 deploy/unleash-proxy/values.yaml create mode 100644 images/trace_example.png diff --git a/README.md b/README.md index 8ef4ce7..f7bfde6 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,24 @@ # OpenTelemetry Frontend to Backend Demo +This repo contains the example used for the `Vienna DevOps & Security` meetups. -This repo contains the example used for the `Vienna DevOps & Security` meetup. +The meetup series is build around a full example of a frontend, backend composed out of a Ingress controller, Kafka and +the corresponding consumer and producer + +![Grafana trace example](./images/trace_example.png) + + +## Meetups +### OpenTelemetry: from frontend to backend Slides: https://docs.google.com/presentation/d/1jPDH8Csv-Qle7Z-P7rFJgjOsBpgKeehPhjFPqTRET1Y/edit?usp=sharing -Requirements: - - [Kind](https://github.com/kubernetes-sigs/kind/issues) ( node-image >1.16.x ) - - [Helmsman](https://github.com/Praqma/helmsman) - - Docker / Buildah ( with Docker alias ) +### OpenTelemetry: How to debug user performance in your frontend +Slides: https://docs.google.com/presentation/d/1w1VhfGQPgCAPoT2VSB6KZlXZOXa_m5p8R-xzOzzL3hM/edit?usp=sharing + +## Usage +Requirements: +- [Kind](https://github.com/kubernetes-sigs/kind/issues) ( node-image >1.16.x ) +- [Helmsman](https://github.com/Praqma/helmsman) +- Docker / Buildah ( with Docker alias ) This demo deploys ingresses for `*.testing.com`. To make it work you have to rewrite the DNS answers to localhost. @@ -14,9 +26,6 @@ To make it work you have to rewrite the DNS answers to localhost. For Linux it has been as simple as adding this line to your network manager ( tested with Arch/Gnome ) `echo "address=/testing.com/127.0.0.1" > /etc/NetworkManager/dnsmasq.d/testDomains.conf` - - -## Usage ### Create Cluster To create a kind cluster and add the kubecontext to your config run `make create-kind-cluster` @@ -28,3 +37,4 @@ Build and upload the resulting images to your kind cluster ### Setup the environment `make prepare-environment` will setup all applications in your cluster + diff --git a/apps/snapshot/package.json b/apps/snapshot/package.json index a5b5a93..ed8b10d 100644 --- a/apps/snapshot/package.json +++ b/apps/snapshot/package.json @@ -23,7 +23,8 @@ "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.1.2", - "react-scripts": "3.4.1" + "react-scripts": "3.4.1", + "unleash-proxy-client": "^2.0.0" }, "scripts": { "predeploy": "npm run build", diff --git a/apps/snapshot/src/App.js b/apps/snapshot/src/App.js index 07113a6..48eaeab 100644 --- a/apps/snapshot/src/App.js +++ b/apps/snapshot/src/App.js @@ -1,12 +1,13 @@ -import React, { Component } from "react"; +import React from "react"; import PhotoContextProvider from "./context/PhotoContext"; import { HashRouter, Route, Switch, Redirect } from "react-router-dom"; import Header from "./components/Header"; import Item from "./components/Item"; import Search from "./components/Search"; import NotFound from "./components/NotFound"; +import {BaseOpenTelemetryComponent} from "@opentelemetry/plugin-react-load"; -class App extends Component { +class App extends BaseOpenTelemetryComponent { // Prevent page reload, clear input, set URL and push history on submit handleSubmit = (e, history, searchInput) => { e.preventDefault(); diff --git a/apps/snapshot/src/context/PhotoContext.js b/apps/snapshot/src/context/PhotoContext.js index 3412ca4..0b57e1a 100644 --- a/apps/snapshot/src/context/PhotoContext.js +++ b/apps/snapshot/src/context/PhotoContext.js @@ -1,7 +1,7 @@ import React, { createContext, useState } from "react"; import axios from "axios"; import { apiKey } from "../api/config"; -import {tracer} from "../instrumentation"; +import {traceProvider} from "../instrumentation"; import {SpanStatusCode, context, trace} from "@opentelemetry/api"; export const PhotoContext = createContext(); @@ -10,7 +10,7 @@ const PhotoContextProvider = props => { const [images, setImages] = useState([]); const [loading, setLoading] = useState(true); - const runSearchTracer = tracer + const runSearchTracer = traceProvider.getTracer('snapshot') const runSearch = query => { @@ -19,7 +19,7 @@ const PhotoContextProvider = props => { console.log(`Context:`,context.active()) runSearchTracer.startActiveSpan("search images",(span, query) => { - runSearchTracer.startActiveSpan("query images", span => { // https://github.com/open-telemetry/opentelemetry-js/issues/1923 + runSearchTracer.startActiveSpan("query images",{}, span => { // https://github.com/open-telemetry/opentelemetry-js/issues/1923 axios .get( `https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=${apiKey}&tags=${query}&per_page=24&format=json&nojsoncallback=1` diff --git a/apps/snapshot/src/instrumentation.js b/apps/snapshot/src/instrumentation.js index 5198462..1684d65 100644 --- a/apps/snapshot/src/instrumentation.js +++ b/apps/snapshot/src/instrumentation.js @@ -17,18 +17,21 @@ import * as autoInstrumentationAPI from "@opentelemetry/auto-instrumentations-we import * as api from "@opentelemetry/api"; import {BaseOpenTelemetryComponent} from '@opentelemetry/plugin-react-load'; import {SemanticResourceAttributes} from "@opentelemetry/semantic-conventions"; +import {getUnleash} from "./unleash"; +import {DiagConsoleLogger} from "@opentelemetry/api"; /* Set Global Propagator */ // support jaeger, W3C and W3C Baggage propagation const propagator = new CompositePropagator({propagators: [new JaegerPropagator(), new W3CTraceContextPropagator(), new W3CBaggagePropagator()]}) api.propagation.setGlobalPropagator(propagator); -const traceProvider = new WebTracerProvider({ +export const traceProvider = new WebTracerProvider({ resource: new Resource({ // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value [SemanticResourceAttributes.SERVICE_NAME]: "snapshot", [SemanticResourceAttributes.SERVICE_NAMESPACE]: "example.meetup", [SemanticResourceAttributes.SERVICE_VERSION]: "0.1.0", + [SemanticResourceAttributes.PROCESS_OWNER]: "1233" }), // this is the same as directly using the AlwaysOnSampler, but this shows how to respect the parent. // https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core#parentbased-sampler @@ -47,21 +50,29 @@ const traceProvider = new WebTracerProvider({ // add processors traceProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); -const exporter = new OTLPTraceExporter({ - url: "http://collector.testing.com/v1/traces", // url is optional and can be omitted - default is http://localhost:55681/v1/traces - headers: {}, // an optional object containing custom headers to be sent with each request - concurrencyLimit: 10, // an optional limit on pending requests -}); -traceProvider.addSpanProcessor(new BatchSpanProcessor(exporter, { - // The maximum queue size. After the size is reached spans are dropped. - maxQueueSize: 100, - // The maximum batch size of every export. It must be smaller or equal to maxQueueSize. - maxExportBatchSize: 10, - // The interval between two consecutive exports - scheduledDelayMillis: 500, - // How long the export can run before it is cancelled - exportTimeoutMillis: 30000, -})); +getUnleash().then(value => { + const exporter = new OTLPTraceExporter({ + url: "http://collector.testing.com/v1/traces", // url is optional and can be omitted - default is http://localhost:55681/v1/traces + headers: {}, // an optional object containing custom headers to be sent with each request + concurrencyLimit: 10, // an optional limit on pending requests + }); + + const enabled = value.isEnabled("opentelemetry") + console.log(`opentelemetry feature flag: ${enabled}`) + + if (enabled) { + traceProvider.addSpanProcessor(new BatchSpanProcessor(exporter, { + // The maximum queue size. After the size is reached spans are dropped. + maxQueueSize: 100, + // The maximum batch size of every export. It must be smaller or equal to maxQueueSize. + maxExportBatchSize: 20, + // The interval between two consecutive exports + scheduledDelayMillis: 500, + // How long the export can run before it is cancelled + exportTimeoutMillis: 30000, + })); + } +}).catch(reason => console.log(reason)) traceProvider.register({ @@ -83,9 +94,9 @@ registerInstrumentations({ ], }); -export let tracer = traceProvider.getTracer("snapshot"); + BaseOpenTelemetryComponent.setTracer("snapshot") // set global tracer for react -BaseOpenTelemetryComponent.setLogger(traceProvider.logger) +BaseOpenTelemetryComponent.setLogger(new DiagConsoleLogger()) export default function TraceProvider({children}) { diff --git a/apps/snapshot/src/unleash.js b/apps/snapshot/src/unleash.js new file mode 100644 index 0000000..75e9e86 --- /dev/null +++ b/apps/snapshot/src/unleash.js @@ -0,0 +1,18 @@ +import { UnleashClient } from 'unleash-proxy-client'; + +export async function getUnleash() { + const unleash = new UnleashClient({ + url: 'http://unleash-proxy.testing.com/proxy', + clientKey: 'clientKeyslkfsdklfkslfd', + appName: 'default', + environment: 'development' + }); + +// Used to set the context fields, shared with the Unleash Proxy + await unleash.updateContext({ userId: '1233' }); + +// Start the background polling + await unleash.start(); + + return unleash +} diff --git a/apps/snapshot/yarn.lock b/apps/snapshot/yarn.lock index a982ba7..026bad2 100644 --- a/apps/snapshot/yarn.lock +++ b/apps/snapshot/yarn.lock @@ -10188,6 +10188,11 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-emitter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + tiny-invariant@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" @@ -10413,6 +10418,14 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +unleash-proxy-client@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unleash-proxy-client/-/unleash-proxy-client-2.0.0.tgz#2668f949368805b4d949fdd83b121fa15daf23e9" + integrity sha512-7poi3txbSGjFG0e8QrIn4pGzw1de7xfA5YSLqu3abLs95wZ2gzuC/YTvzlt1Faol3PHTj9Tq0ov02Q7Z6nhE9g== + dependencies: + tiny-emitter "^2.1.0" + uuid "^8.3.2" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -10530,6 +10543,11 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" diff --git a/deploy/kube-prometheus/values.yaml b/deploy/kube-prometheus/values.yaml index 321c787..8b14408 100644 --- a/deploy/kube-prometheus/values.yaml +++ b/deploy/kube-prometheus/values.yaml @@ -59,6 +59,24 @@ grafana: # - "k8s.pod.name" # lokiSearch: true + - name: Jaeger + access: proxy + editable: false + orgId: 1 + type: jaeger + url: http://jaeger-query + version: 1 + uid: default_jaeger + jsonData: + nodeGraph: + enabled: true + tracesToLogs: + datasourceUid: default_loki + # tags: + # - "k8s.namespace.name" + # - "k8s.pod.name" + # lokiSearch: true + serviceMonitor: enabled: true additionalLabels: diff --git a/deploy/setup.yaml b/deploy/setup.yaml index 0b60035..4803306 100644 --- a/deploy/setup.yaml +++ b/deploy/setup.yaml @@ -81,6 +81,13 @@ apps: version: 2.6.0 valuesFiles: - ./unleash/values.yaml + unleash-proxy: + enabled: true + namespace: unleash + chart: ./unleash-proxy + version: 0.1.0 + valuesFiles: + - ./unleash-proxy/overwrites.yaml jaeger: enabled: true namespace: monitoring diff --git a/deploy/unleash-proxy/.helmignore b/deploy/unleash-proxy/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/deploy/unleash-proxy/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/unleash-proxy/Chart.yaml b/deploy/unleash-proxy/Chart.yaml new file mode 100644 index 0000000..00cef12 --- /dev/null +++ b/deploy/unleash-proxy/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: unleash-proxy +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "0.8.1" diff --git a/deploy/unleash-proxy/overwrites.yaml b/deploy/unleash-proxy/overwrites.yaml new file mode 100644 index 0000000..066dcfd --- /dev/null +++ b/deploy/unleash-proxy/overwrites.yaml @@ -0,0 +1,18 @@ +unleash: + url: "http://unleash:4242/api" + apiToken: "*:development.354241ff38f11e42dff3de8c478b18fc07896df0104853afd0750a4e" + clientKeys: ["clientKeyslkfsdklfkslfd"] + +ingress: + enabled: true + + annotations: + nginx.ingress.kubernetes.io/enable-opentracing: "true" + nginx.ingress.kubernetes.io/enable-cors: "true" + nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,traceparent,tracestate,Uber-Trace-Id + + hosts: + - host: unleash-proxy.testing.com + paths: + - path: / + pathType: ImplementationSpecific \ No newline at end of file diff --git a/deploy/unleash-proxy/templates/NOTES.txt b/deploy/unleash-proxy/templates/NOTES.txt new file mode 100644 index 0000000..12047f1 --- /dev/null +++ b/deploy/unleash-proxy/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "unleash-proxy.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "unleash-proxy.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "unleash-proxy.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "unleash-proxy.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/unleash-proxy/templates/_helpers.tpl b/deploy/unleash-proxy/templates/_helpers.tpl new file mode 100644 index 0000000..d4da9ac --- /dev/null +++ b/deploy/unleash-proxy/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "unleash-proxy.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "unleash-proxy.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "unleash-proxy.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "unleash-proxy.labels" -}} +helm.sh/chart: {{ include "unleash-proxy.chart" . }} +{{ include "unleash-proxy.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "unleash-proxy.selectorLabels" -}} +app.kubernetes.io/name: {{ include "unleash-proxy.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "unleash-proxy.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "unleash-proxy.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/unleash-proxy/templates/deployment.yaml b/deploy/unleash-proxy/templates/deployment.yaml new file mode 100644 index 0000000..527ff97 --- /dev/null +++ b/deploy/unleash-proxy/templates/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "unleash-proxy.fullname" . }} + labels: + {{- include "unleash-proxy.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "unleash-proxy.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "unleash-proxy.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "unleash-proxy.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: UNLEASH_URL + value: "{{ .Values.unleash.url }}" + - name: UNLEASH_API_TOKEN + value: "{{ .Values.unleash.apiToken }}" + - name: UNLEASH_PROXY_CLIENT_KEYS + value: "{{ join "," .Values.unleash.clientKeys }}" + ports: + - name: http + containerPort: 3000 + protocol: TCP +# livenessProbe: +# httpGet: +# path: / +# port: http +# readinessProbe: +# httpGet: +# path: / +# port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/unleash-proxy/templates/hpa.yaml b/deploy/unleash-proxy/templates/hpa.yaml new file mode 100644 index 0000000..529f1a9 --- /dev/null +++ b/deploy/unleash-proxy/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "unleash-proxy.fullname" . }} + labels: + {{- include "unleash-proxy.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "unleash-proxy.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/unleash-proxy/templates/ingress.yaml b/deploy/unleash-proxy/templates/ingress.yaml new file mode 100644 index 0000000..9787e0b --- /dev/null +++ b/deploy/unleash-proxy/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "unleash-proxy.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "unleash-proxy.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/unleash-proxy/templates/service.yaml b/deploy/unleash-proxy/templates/service.yaml new file mode 100644 index 0000000..d68f5a3 --- /dev/null +++ b/deploy/unleash-proxy/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "unleash-proxy.fullname" . }} + labels: + {{- include "unleash-proxy.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "unleash-proxy.selectorLabels" . | nindent 4 }} diff --git a/deploy/unleash-proxy/templates/serviceaccount.yaml b/deploy/unleash-proxy/templates/serviceaccount.yaml new file mode 100644 index 0000000..eb477ab --- /dev/null +++ b/deploy/unleash-proxy/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "unleash-proxy.serviceAccountName" . }} + labels: + {{- include "unleash-proxy.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/unleash-proxy/templates/tests/test-connection.yaml b/deploy/unleash-proxy/templates/tests/test-connection.yaml new file mode 100644 index 0000000..852b999 --- /dev/null +++ b/deploy/unleash-proxy/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "unleash-proxy.fullname" . }}-test-connection" + labels: + {{- include "unleash-proxy.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "unleash-proxy.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/unleash-proxy/values.yaml b/deploy/unleash-proxy/values.yaml new file mode 100644 index 0000000..dc32778 --- /dev/null +++ b/deploy/unleash-proxy/values.yaml @@ -0,0 +1,87 @@ +# Default values for unleash-proxy. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +unleash: + url: "" + apiToken: "" + clientKeys: [] + +replicaCount: 1 + +image: + repository: unleashorg/unleash-proxy + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/deploy/unleash/values.yaml b/deploy/unleash/values.yaml index d25cd01..4221d71 100644 --- a/deploy/unleash/values.yaml +++ b/deploy/unleash/values.yaml @@ -1,5 +1,18 @@ +image: + tag: 4.6.7 + +env: + - name: INIT_ADMIN_API_TOKENS + value: "*:*.apiTokensdklfslkdflsdlkfskdfjksdkf" + ingress: enabled: true + + annotations: + nginx.ingress.kubernetes.io/enable-opentracing: "true" + nginx.ingress.kubernetes.io/enable-cors: "true" + nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,traceparent,tracestate,Uber-Trace-Id + hosts: - host: unleash.testing.com paths: diff --git a/images/trace_example.png b/images/trace_example.png new file mode 100644 index 0000000000000000000000000000000000000000..89afa6181bf4d11f740706e973e86cd2586fac10 GIT binary patch literal 136177 zcmd43WmuGN+b;?tU=Siohcrq`Gn9&gbV+v(-8n;w2#SCR(jg!r-5t_7ba(eqL+849 zpZ9t8f35Xttz+-w*z*M)XKwDeuJioW=@&(LN!$ly575xiaHZbARYpU@mPbRwV7Z3{ z-syc+v8Bv7=K-Rq?}X4 zrfJ{O|YA zg5h8ybB@dIm`l|2rh&ia`2o`aFVR14P!%7zrOVl{qwV%@`m6g37dPqBPXps;DE{%8 zaProx9D4=t5S9BJW@34Ch{iCoD>ic2#@rPl8YbZwrMjdF7ExQnQsxXdbl$ZR#<57S?kr=*-0Zx6FOq0R_Huo z^fj2Hyh?j4N%(3x*lcBHdODULPKqYvX0ul2Q-}7d87sv7td*bn#fwFxPeWTc-3s;N z(U}?l*BGA%i%qrfVB9GxDPiK}4XC?t<%aIC;|%M#rJ#`te$hSh$gOw7nRdy3!+!|<^i{xWZt;?yIlCAvh${&84+oHS*uQHgM5);CpyFx-%qP<^myP ze2vY`!MV9kEmYHeJ#!gFJ~vcomsc1h!h3wQblMAGDZDmBmn00`YhT1<)i0{-;S&%N z8p<4dHCbw*P&RKsk*Fi!#_m5pj=_3qj5k$o_q-%GCx^WGbLcPK_|Ok|o08t%qLPdF zCFc8{YI%CSr*=#P^VA)Oq!Fn?a8vlIq&4& z4erd`QMky-N?z~CNWk>8a4=kFS!-f)a&d7{R!xnMfq}utQrFeh6+HFtiHTR4qjdk- z20k3Og>~!@`CCC%thkuV&KaIB)ko#!aTuOi$W4-)-`Cl>P@%F<0Ow5V2L7hTx>hGZLw%!^_H>j1pl9#_VKh|<3&@3uWHt*S4U zt(s$4c6p5fKO2kZ2#=4qDxU^xq+-@R3{tkG#fDwzumri@O><*rWi8D*dA02=pDa%g z$&Mc>W|F5^id}2h7`C$04`8D9iRvAg>CWY6-+5*i1`io7eS!v7{mOu3@}0kpjRZpe zem{OZc65|!?ud!e{RTgAL8J0Il{!Bry{BmAYbuvGNl<%M;I_ZFS6E$NSs5c0;bU;# z^GB__{&;ih)crz(4Su{$s^^1Z03|h^?d0%qF=XtDe4C;|T79NY!je`TW2P(1XcV=dMlP5rroaJ_@tJr z2|rm#?Mb6HN$|JY(@QG>K|#$t=IMsTZKP;-eq%$^j2zl`^>eq)$FxY8 zIg4yJE<7lNKOT8dvILQo_xokhpk-FIuEkpIyLF&~X0PYBV3( zR?wiHwG&8P8-{hXwZF{Gp)>YUCpheScaB2H`(t1I={ZM1O>uEaiShcpU#Z2+WBw*FSOHOE=fMeQbgB9F#*9*IxcWKI}TgwmkE22GSH?LE~uG`t=xK!s6PI8 zyCc=N6Z@~OWd^!d@kf8F?+LK-rWLT~q@=RltG=F2oe1Qq)Ubz%ob!~Im$xuc7#>7Y ze^C(lDE?GZtIWE)gCNb`)zxfU#%`}81}^J2oBkQMjxuea!>&OAy0m(>}$^@MmRKf!sTZ`0lG!?Hzr6#w(kqxjMR&HHT-=_Q#YXA)stci^2-u z)r{tAzq@c%A_)n|ovS>yjHW`9l$6x-LD~ol3wLyNnKZTRewiqFXsiSpA#SD9u*m5J zw&PeL{-fkaeNlPja;E-w{5^K(s2A4PTRJ0{PCX97w#5pG`T5COe&7%|itRh4UlIj^dSI1kC9C^z`63o_clphbaZr#5q7zwU159YnQ$%D$@JAT(OJ>j)9D=Hqis40F}-vA#oO)r`!nw5 zP?-!5`n5L+j%$J(qaLlb#DwoHL5)sgj{#H zrt-C;dvVt1+AW3HaS6KN-uZ0+u_%a^dit$9f=7`!U0eHr(&@xj*L*G?SI7-%Hnv03 zo4`g%lPdl5#o@+?znNV8{LX^Bt1I8dF{Q!IB__aWs`;+^w!=ueEO3cGOj!gx4(RVo za$FNwagt<_>jidntO^JT?jtJZ^i?PoueaRO$}CBxGDDH~_D*zpCbRc6S%-9o6gjpC7rOHeLw8`Mx;pdKnbW4h;A) zhL96XqzXC&h83Fc4_b+t{~H2^lds!RC%A45QUVkLptn0JFIq~fj^rDaP}1K&LtkzY zLPBEVm(ZOqP;4s3CBcTbs~3sVt#ONqq7;1GzQ5Fdx_2WDZz!{vX=D|kd;yX_i2>hP8F9mk|~1#ZF_cL&a(BixZ`$BGlJ& z(BW)S>9zG8+4z^SgiO+K;p(cYp=?uaG$OX7zLw;>%j5a!M=K)#p6hHhEcO zx8#!rTkEf0dS12S1B5Y{>E=`7yZMJHseNGJOXTpAB(H`0D)^hr%k+y&_)eEC4tgGE zasUjxj_#e&EOi$}lZ)fwKH|Ar2(*jg-sK+>U0Uqj_n{75O2farUqJYJtXG8O=4wo> zpfQ#^)8lLe`o4M_8MHZK#c93%9_bTCImuW$3;2(vm1Q z99lghx+qxZt=9vfYa!1~kC!~#V{C_#1i-y@{=4exZlJKcBafhnj|1cW*zey5tzEg@ zV7vnBvuE@K$=xw5euSuKbELm6w3rE{oH|v%?Do7syiG_*SRXBm*0i52k<|a_pM$}P zs`w*&y0M6I+;+bcUtvAJ|FW+i{98^tj}d4TBRJ^*Yw*ufS&`Y2+!nLr?U`2fVu;w{UY>`B-@SVZ!1KokyWF&? zhxN(AE|a+T$t9=xo-j$aZ%wub=yiZSO3TJJW3B5by|Ie{dh=44=v#C1d*FSeqd1q! zs;WT%0FvOVQldADR-r9SI_g5;Da$*5kPKdV`bUU|=hI8@4KoSGZnfOhtiqs<4zp?a zi8&4yhIWPSrS8ItDr}lXJ+J80^NSeFA?WlVA^Curo!#tU*upfQn#&yR`SU-^t1GIf zo|413O#J-O$=*pue1|BnlWD0d7=iUveZ;3vY2ZSJ@@=dvM{|3zslBuo3{#QY+qb)a z*6Sjc-zUYQDlCj&DG}12s>wY)t>ZVSc&4Sg44Hj@b#aseAM2&35NT_AC&T>wd5UiQ z=(NwSZcma>vT3*aoktWDElvtzuK||c8nvUR|H1XXTB!`1*J~We7PhXUM3-^83pp>e_!3@ebUB3Viv*L>)9hYUt_cW{j>fY5Y9=@s7m)$2{{Zb2Xt|Nb>7acPi^5Ayo?;&*z62IY?P#WCUu zX~;M!&IcjtX&v_CdGwP0!;j#i>aTWWW+_izqA5|6h+j%lO6-`RF5RpP298IU%LNT$q_m3XEJkbw22iO5mCAsumZG%57)fx+mV# z(b3trKcQz688NC!X1X#Uh`Zw)y5pCZhYq0E>25>$B)9$OwmzxDl(|lVuK6g>Agw@M zl$B?lcQS7?D^H!l(dG)yy81c8`Dk8zZtqqVbk`PON_z(f27!)CkBLGdpHzh+ zQmY*MlVi29W@FZNgg-Q!>Y+l$m!%*r{X$f9cC40Kp>HtdJ2AUf6X=M!wnMoVgkS|} zl)67h5wml#%~jl>DTtks=t3l&=)IeGD;f=~y0e6A>A;3u)OexnwwsiGvXzafP0fi*KC9lRQ))>l6{^yknm8P z^*};mjnR0qjZm1_xnjUEyy~k?J9+EWRIsgXs-P!*QeS=LDcrcZ4N=Q?{0`>4)pYPQ zN7gVqF_BXL#!fhJQCdu8ELS&dK;vz92hnhrUPxMdX!He4-?rb^TR;G!bycCXmKAyz z6RX&H;=vCU2aj+&@vC9-=x$V@4)p~Aj?k*fz_D{mmy{|RXzhcP6 z^I#h^x0RWpGW2ZEzP9pMj^8CFR<|6(TYI&A%~erHaEzS0MeP820wPQ2c|I2=0PCqe z>6$)^La~%v3{f%T_U1e18{zLT(bIqH@1M*th4v<__QVdUTdTXumv5}Sz#A>_ss8zk z`j_U=VE={U^y?fymdIl@Z{!iNgM$N&hzP>S>s`Tqhyf3grmnYz0EOGKV(bc#KETp1 zGapN-)WB(8tWPDexUEUEER+e@J6}Sgz>e~dcJp+qJ z+w=49?d^GiR0Knun0ic1O%0X6)#Lc>zGenu|M_FFJzf>e(5 z;h8LYOw{I#WMgu>8~9j`nbZ&9Zwr%n$W7EOvyu z>*(r|@cg0%mF2Gi=c8o%$RqMD?|iV_Ncc=1O_lGqnDa!DCX8ll`uky=E2Y7BA3S^r z$V8Z?(`tC4*Z$eT@j>eE-=89%Z1p{OW&WP+YjE&{qo#oiy{I23hr%K=Y+a?66CZ7L zAu46r9I>%$m04mJ{1!atG`)bqJquOT4hfea4Ocgl3?Rgacz;tMMwAL z&%Asq>C!UR-aafd+&xsHBO=l5dxskB>u@*X;;cZzd49+UH10^Df}ww&U~7&Rb^);2Z;RrNBIVh%V83LLd{ zUUJ<)H}gE$xVYRZ^I2M5?bWucmDGa0sBztW#%M+iB*GfYEH{SHH|YA*`T$2LLZ-KV z($nkU1m3~$zd4*gT<#>4jX9+}nLc{vVkx<|vbH4XeM#~X?pkbhg6E2yeXSO?Qv2ol z8vWIVOX2~_j%bTxZFTi?NJz-UnS+ZDqYRXt2?q{4F?DDD=(II)X3iJZFy-@VQFhq!4GKw!7!ORro2@|e*Jw_?Y8yC z-JMeOV$tfG1YNg!t`VRzBpy?W0GLXK7X?MJ#Ssz_SrVb0UtH`j8;2P|p$1DCY`-(o z36%H~h!F9yo3c_;3sd`IgMY-~w6smJ0v0bkJUkL0E@VPNLR8c!&ewi^EiKy&*O%Y3 z)i`T4*5gkM-SDuc%T(_dd5#x}h4%2;vQ+1~!qeSwtZ(W@}38I5XZK_DF!XQkD;z&&6_g=M?}>e1DYU@$mb z7e~HMxU;u+A(n}nj+y!U;*ZC8RKhLWf+)nDk%I(kW@L&mIC-G{nq4=&tE{OSNb%Bc zdSeB^zLzDDntryc1~Uy!S{ZbtN@E_lyN`0)Z)_;?w4dAwOYJ+p2hNtb17WiFs#wRd)YQDdX4+D#H7y;)KKx6O3_hv|0c7sEqJ zx(U#tt;TFP>+F?Ai*)ma`}E%B8-vXl7UmHH=pqrDrUa;iY;@Y30Br*XZarSvS$c)) z6Aq}Wquk=RrezaJ1T7f|Bkw=n!H5xY6P$u6|Gk76BTbnl!N?!Fz_1pl!|{EtKEJXpFF&9hRD@CVhM(T$vz|8L6+l$>dW8SW zZ+hV`N#%Vy|v}_xtJd|=Q-Ftnf;~G-g~$!1i&oTu+UAz)aMy_Gczn7*0}b=Se1?vF5he!YDVrx$o`zHe4%z}LG>VaPyBU0nOTm&Z- zb*2X%%-+EvW3`GpP+T#k14R;nI(>{R*~WEbo1Wn~ZtLppty(Ov@*p0osjQs-eqOLT z2GnwBA3La_uXCc1S$cI?BRONgfL{EBhzOL&7mV`fekD*2Je7@&1ou{JH-O+#1Ewp6SayP}ld)k;+`=BOVfd2wuWANNmd zt{_UI-sq>r*#H-M%6l_2V9BS#BavRwxT~SZV2GKfuXXp8Ny9Vgo z^&qGBM)A{W-g8%4?Z{)EzV2>l->esprN*T3?tG)TNfHaLcN)a?88hd1z)iT|JDx+{ z_|$?;NV?D3r45Gu=eMX$N+l!wr_0LU&9%;kLg;S&ARn84W6*-Q1rSgGW-*#N9yBZ# z5fLe>sAzAUhz*G^2imaIP)3Ny;R5#Qxz7@!sj>TLXCx6IVYLE1Xn8Fl5BOqdk%xyk zLuc+g8%*oNMIwOC(bAy+x0npxz=m?^WxGS2IDk;CFa_`ZF-4MD0|cf_IQjW z6@9iboanM>eAD4@efDQ=t~H-+^#L=^Xs93q18~MZe13xWYh1&+denYjvkOsnNx{m> z$^)-Q4^4i*jN)i`iMeStW;Z_)t#4q^P!Bfl%J}|L2AmJT=iK~*7kwpeDVeSw`NrK* zZ0{BN=Eah|3}Hk-jO`M#tCzTN&68`~nD@H^Fl#kJL5x2j4$#zv6zrXJplt!gT*d6! zM5U7WM}PmGkJ}NM^807eH%p!E)C(I-)ZA=hkKo^T>yzzUiFNXw>n@Hq0swjf`1ex( z`eW#SQNj)}rNvIdCqG|)oJ^;iP|e#6OG_i%*`e~02Bxs`#3g8~57i1Z8-X6O2h)gfQT}Xt*Wg@c7Zc7p~?TdK9I`u8!$KxdB|dgS0stpMpxCyLDl;u|9@H*-(wbh@qN`|(e$G~QRTd}_v1MgC858$Y~Re4>uwLkn>{F_pV;VE=&Wn_F3dsI&f z$`Jmn*lJuT@aLjms8Zy^@>zm`*$Vc6C>jvqnmC3S!%NyA3;)Ri9DJJKE2ulbv(c*H z)^^=+Qdza1P`BUcukRD)&*%~S!ST~gQ$u;+qFDHLnJFm|!lV%UMuizyS-n8F9c*G1{@QX2 zl9BbS&<_P_AvfOpE&&pJg<2=7pC#F5G7fJ59H90-(El1D@mN968V))s(B*`{&6lNd z_2^X?VhjO=&bWKjrm{vC$44Pa_?@jDm5XJdrj2~a=E#>U^4`mU;Cz8k@Yr^pB!4z5 zq$!K7YN~(LH)2^R^DAiB}Xdkj$;I^?h0$f92 zvFQiyrq5rS{sL_WlOU;^5q;1jnPmn{xF{+-p;t{Jx(pqikgh%R4CNH7w( zG+PW+Gt|Ldp}n=3YA0^#Te<+erlvu-d>X0g88*V4|4S$hCpYX|4EPPzx!RrB;AUI^ z2yEXgHYi9Z-bdCR29AWaHCkXcb3Wq9f6W49|IWm;-Atf}V;xgBMd~x^xq)(%?~EKI z^ab)Kr`PK6)@&y4$j2Ov?{Qkk(cfEJC59-zH}u8%HTa%s5xGX3%m^ zivZe})M(CQ1axAhwAH5-d8*vQhp2QX?Q2!Q9>=08Z!5t*|=1 z*`)351V>yqh`oUr&=_O*P-9lvEDXF)jU8SlB@x3hm@zlT>#^457WMWS!&+NRqgsELq0M1HPoXwtRa~i?PLxfJp!AV&OP~!oTy{L#KZ(Q z{`xDjJ__Ykc3SlNTh$j1msRTx?(K~Y5Alyf2g2~i*M90V3Y`qi(YFF1B%2OkSHSDz zU?ckONy5U@V8t(4EB|QqmQQ%U+;V@5!}(M-uPZG~_`R7K4hS?yaQB!4YPwD^voV^UgVO)*J)u&%Pa5;Q&O(DBa^b0sqqMF3-5Qxo-yXSZQf* zoPD{$lRqJ`juYC~Aa!CQ z!@mGltxv9?wiR7s@-pPU4~U4RD)8eP*1gl@F&QBi7U z=9`M?iy{;p<27#hfGRzr(!+Oi!v|NLYkRU&8MeQFY&f#H!oM8gtF3xunZ9-*jf#YP zDB4c6;vo}sW{$$bB_kxAz!LIr-1M@7LcIi#br;8qI@T?tqptwTvz~Tdv0qmPDp}N& zDi@!=K6Uo_d9fK1regje-EXQKDMTtI%dqh%896z*H8Z?-Lni(AZv#R-Y#>9H%=4t$3Y^S%F<~3wb2$tS zJK{gLgi9p?*=1VPQQ&rsX_QSmvl4%vD6gn!oM{lQsu!dS6RrP)fAei!luqM*a&+vd1mia6F|07e_GMdQDH!+8+= zwGw_vSy`p)ip#=zm=_(*1ia`+0hj@v`$spd`3iL~7eS}vTunPuU$&|8A;D@wT=L

?dkxHR!>6=0)Y!>Q4w#lQSy;lOHQU})vB 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∈+!@`Lsx2gKQ=a~8=; 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


~`~EK;$nYGfT_# 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

-!aLSlo+QXaF* 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 literal 0 HcmV?d00001 From 5459fe06a0c60a6d03982826b37453e34e7be4fe Mon Sep 17 00:00:00 2001 From: secustor Date: Wed, 27 Apr 2022 13:26:00 +0200 Subject: [PATCH 2/2] fix: query sending --- apps/snapshot/src/context/PhotoContext.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/apps/snapshot/src/context/PhotoContext.js b/apps/snapshot/src/context/PhotoContext.js index 0b57e1a..86b5790 100644 --- a/apps/snapshot/src/context/PhotoContext.js +++ b/apps/snapshot/src/context/PhotoContext.js @@ -2,7 +2,7 @@ import React, { createContext, useState } from "react"; import axios from "axios"; import { apiKey } from "../api/config"; import {traceProvider} from "../instrumentation"; -import {SpanStatusCode, context, trace} from "@opentelemetry/api"; +import {SpanStatusCode} from "@opentelemetry/api"; export const PhotoContext = createContext(); @@ -14,11 +14,7 @@ const PhotoContextProvider = props => { const runSearch = query => { - const testSpan = trace.getSpan(context.active()) - console.log(`TestSpan: ${testSpan}`) - console.log(`Context:`,context.active()) - - runSearchTracer.startActiveSpan("search images",(span, query) => { + runSearchTracer.startActiveSpan("search images",span => { runSearchTracer.startActiveSpan("query images",{}, span => { // https://github.com/open-telemetry/opentelemetry-js/issues/1923 axios .get(