From 295f03a5ce423c80177df776e09c8a0cdf7ea6e4 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Thu, 8 Dec 2022 16:17:40 -0500 Subject: [PATCH] [demo] use Jaeger sub-chart (#523) Moves to using a Jaeger sub-chart instead of templated within this chart itself. This does introduce a potential breaking change, where the Jaeger parameters are moving to a top-level jaeger. section instead. Even though this is a breaking change, the chart is early enough, and the current section isn't likely to of been modified by existing deployments. A readme is also added to the chart to document the upgrade process and all parameters in the chart itself. --- .github/workflows/demo-test.yaml | 6 +- .github/workflows/lint.yaml | 6 +- .github/workflows/release.yaml | 1 + charts/opentelemetry-demo/Chart.lock | 7 +- charts/opentelemetry-demo/Chart.yaml | 6 +- charts/opentelemetry-demo/README.md | 147 ++++++++++++++++++ .../examples/default/rendered/component.yaml | 66 ++++---- .../default/rendered/grafana-dashboards.yaml | 3 +- .../examples/default/rendered/jaeger.yaml | 76 --------- .../rendered/jaeger/allinone-agent-svc.yaml | 35 +++++ .../jaeger/allinone-collector-svc.yaml | 38 +++++ .../rendered/jaeger/allinone-deploy.yaml | 95 +++++++++++ .../rendered/jaeger/allinone-query-svc.yaml | 26 ++++ .../default/rendered/jaeger/allinone-sa.yaml | 13 ++ .../opentelemetry-collector/configmap.yaml | 2 +- .../opentelemetry-collector/deployment.yaml | 2 +- .../opentelemetry-demo/templates/jaeger.yaml | 71 --------- charts/opentelemetry-demo/values.schema.json | 19 +-- charts/opentelemetry-demo/values.yaml | 63 ++++---- 19 files changed, 445 insertions(+), 237 deletions(-) delete mode 100644 charts/opentelemetry-demo/examples/default/rendered/jaeger.yaml create mode 100644 charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-agent-svc.yaml create mode 100644 charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-collector-svc.yaml create mode 100644 charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-deploy.yaml create mode 100644 charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-query-svc.yaml create mode 100644 charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-sa.yaml delete mode 100644 charts/opentelemetry-demo/templates/jaeger.yaml diff --git a/.github/workflows/demo-test.yaml b/.github/workflows/demo-test.yaml index 96cfcde837f..382d18b7458 100644 --- a/.github/workflows/demo-test.yaml +++ b/.github/workflows/demo-test.yaml @@ -21,4 +21,8 @@ jobs: create-kind-cluster: "true" - name: Run chart-testing (install) - run: ct install --charts charts/opentelemetry-demo --chart-repos opentelemetry-collector=https://open-telemetry.github.io/opentelemetry-helm-charts,prometheus=https://prometheus-community.github.io/helm-charts,grafana=https://grafana.github.io/helm-charts + run: "ct install --charts charts/opentelemetry-demo + --chart-repos opentelemetry-collector=https://open-telemetry.github.io/opentelemetry-helm-charts + --chart-repos prometheus=https://prometheus-community.github.io/helm-charts + --chart-repos grafana=https://grafana.github.io/helm-charts + --chart-repos jaeger=https://jaegertracing.github.io/helm-charts" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index e9299ce2696..2168a790dfd 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -19,7 +19,11 @@ jobs: create-kind-cluster: "false" - name: Run chart-testing (lint) - run: ct lint --target-branch main --chart-repos opentelemetry-collector=https://open-telemetry.github.io/opentelemetry-helm-charts,prometheus=https://prometheus-community.github.io/helm-charts,grafana=https://grafana.github.io/helm-charts + run: "ct lint --target-branch main + --chart-repos opentelemetry-collector=https://open-telemetry.github.io/opentelemetry-helm-charts + --chart-repos prometheus=https://prometheus-community.github.io/helm-charts + --chart-repos grafana=https://grafana.github.io/helm-charts + --chart-repos jaeger=https://jaegertracing.github.io/helm-charts" - name: Run make check-examples run: make check-examples diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f3448098917..33a136e498d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -29,6 +29,7 @@ jobs: helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo add prometheus https://prometheus-community.github.io/helm-charts helm repo add grafana https://grafana.github.io/helm-charts + helm repo add jaeger https://jaegertracing.github.io/helm-charts - name: Run chart-releaser uses: helm/chart-releaser-action@v1.4.1 diff --git a/charts/opentelemetry-demo/Chart.lock b/charts/opentelemetry-demo/Chart.lock index 8c6c0edf950..9028a739f40 100644 --- a/charts/opentelemetry-demo/Chart.lock +++ b/charts/opentelemetry-demo/Chart.lock @@ -2,11 +2,14 @@ dependencies: - name: opentelemetry-collector repository: https://open-telemetry.github.io/opentelemetry-helm-charts version: 0.40.7 +- name: jaeger + repository: https://jaegertracing.github.io/helm-charts + version: 0.65.1 - name: prometheus repository: https://prometheus-community.github.io/helm-charts version: 19.0.1 - name: grafana repository: https://grafana.github.io/helm-charts version: 6.45.1 -digest: sha256:d22158bd1c911dd20066f1e433516e9e0377f45d93b54de2e6aba416c9955d38 -generated: "2022-12-05T20:20:38.093638-05:00" +digest: sha256:02b32ea56215a94643e085cf7956130e8cf3fa6a2c656d42e539949b7e20dca8 +generated: "2022-12-05T21:17:14.040795-05:00" diff --git a/charts/opentelemetry-demo/Chart.yaml b/charts/opentelemetry-demo/Chart.yaml index 8cb02e0d9d5..71346d3758d 100644 --- a/charts/opentelemetry-demo/Chart.yaml +++ b/charts/opentelemetry-demo/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 type: application name: opentelemetry-demo -version: 0.12.7 +version: 0.13.0 description: opentelemetry demo helm chart home: https://opentelemetry.io/ sources: @@ -17,6 +17,10 @@ dependencies: version: 0.40.7 repository: https://open-telemetry.github.io/opentelemetry-helm-charts condition: observability.otelcol.enabled + - name: jaeger + version: 0.65.1 + repository: https://jaegertracing.github.io/helm-charts + condition: observability.jaeger.enabled - name: prometheus version: 19.0.1 repository: https://prometheus-community.github.io/helm-charts diff --git a/charts/opentelemetry-demo/README.md b/charts/opentelemetry-demo/README.md index 50acdb8ba5e..12b52f903d9 100644 --- a/charts/opentelemetry-demo/README.md +++ b/charts/opentelemetry-demo/README.md @@ -20,3 +20,150 @@ To install the chart with the release name my-otel-demo, run the following comma ```console helm install my-otel-demo open-telemetry/opentelemetry-demo ``` + +## Upgrading Chart + +### To 0.13 + +Jaeger was moved to a Helm sub-chart instead of a local chart deployment. If you +had changes specified to the `observability.jaeger` parameter, those changes +will need to be re-implemented as sub-chart parameters under the top level +`jaeger` parameter instead. + +## Chart Parameters + +Chart parameters are separated in 4 general sections: +* Default - Used to specify defaults applied to all demo components +* Components - Used to configure the individual components (microservices) for +the demo +* Observability - Used to enable/disable dependencies +* Sub-charts - Configuration for all sub-charts + +### Default parameters (applied to all demo components) + +| Property | Description | Default | +|----------------------------------------|-------------------------------------------------------------------------------------------|------------------------------------------------------| +| `default.env` | Environment variables added to all components | Array of several OpenTelemetry environment variables | +| `default.envOverrides` | Used to override individual environment variables without re-specifying the entire array. | `[]` | +| `default.image.repository` | Demo components image name | `otel/demo` | +| `default.image.tag` | Demo components image tag (leave blank to use app version) | `nil` | +| `default.image.pullPolicy` | Demo components image pull policy | `IfNotPresent` | +| `default.image.pullSecrets` | Demo components image pull secrets | `[]` | +| `default.schedulingRules.nodeSelector` | Node labels for pod assignment | `{}` | +| `default.schedulingRules.affinity` | Man of node/pod affinities | `{}` | +| `default.schedulingRules.tolerations` | Tolerations for pod assignment | `[]` | +| `serviceAccount` | The name of the ServiceAccount to use for demo components | `""` | + +### Component parameters + +The OpenTelemetry demo contains several components (microservices). Each +component is configured with a common set of parameters. All components will +be defined within `components.[NAME]` where `[NAME]` is the name of the demo +component. + +> **Note** +> The following parameters require a `components.[NAME].` prefix where `[NAME]` +> is the name of the demo component + + +| Parameter | Description | Default | +|--------------------------------|------------------------------------------------------------------------------------------|---------------------------------------------------------------| +| `enabled` | Is this component enabled | `true` | +| `useDefault.env` | Use the default environment variables in this component | `true` | +| `imageOverride.repository` | Name of image for this component | Defaults to the overall default image repository | +| `imageOverride.tag` | Tag of the image for this component | Defaults to the overall default image tag | +| `imageOverride.pullPolicy` | Image pull policy for this component | `IfNotPresent` | +| `imageOverride.pullSecrets` | Image pull secrets for this component | `[]` | +| `servicePort` | Service port used for this component | `nil` | +| `ports` | Array of ports to open for deployment and service of this component | `[]` | +| `env` | Array of environment variables added to this component | Each component will have its own set of environment variables | +| `envOverrides` | Used to override individual environment variables without re-specifying the entire array | `[]` | +| `resources` | CPU/Memory resource requests/limits | Each component will have a default memory limit set | +| `schedulingRules.nodeSelector` | Node labels for pod assignment | `{}` | +| `schedulingRules.affinity` | Man of node/pod affinities | `{}` | +| `schedulingRules.tolerations` | Tolerations for pod assignment | `[]` | +| `podAnnotations` | Pod annotations for this component | `{}` | + + +### Observability parameters + +| Parameter | Description | Default | +|------------------------------------|-----------------------------------------------|---------| +| `observability.otelcol.enabled` | Enables the OpenTelemetry Collector sub-chart | `true` | +| `observability.jaeger.enabled` | Enables the Jaeger sub-chart | `true` | +| `observability.prometheus.enabled` | Enables the Prometheus sub-chart | `true` | +| `observability.grafana.enabled` | Enables the Grafana sub-chart | `true` | + +### Sub-charts + +The OpenTelemetry Demo Helm chart depends on 4 sub-charts: +* OpenTelemetry Collector +* Jaeger +* Prometheus +* Grafana + +Parameters for each sub-chart can be specified within that sub-chart's +respective top level. This chart will override some of the dependent sub-chart +parameters by default. The overriden parameters are specified below. + +#### OpenTelemetry Collector + +> **Note** +> The following parameters have a `opentelemetry-collector.` prefix. + +| Parameter | Description | Default | +|------------------|----------------------------------------------------|----------------------------------------------------------| +| `nameOverride` | Name that will be used by the sub-chart release | `otelcol` | +| `mode` | The Deployment or Daemonset mode | `deployment` | +| `resources` | CPU/Memory resource requests/limits | 100Mi memory limit | +| `service.type` | Service Type to use | `ClusterIP` | +| `ports` | Ports to enabled for the collector pod and service | `metrics` is enabled and `prometheus` is defined/enabled | +| `podAnnotations` | Pod annotations | Annotations leveraged by Prometheus scrape | +| `config` | OpenTelemetry Collector configuration | Configuration required for demo | + +#### Jaeger + +> **Note** +> The following parameters have a `jaeger.` prefix. + +| Parameter | Description | Default | +|--------------------------------|----------------------------------------------------|-----------------------------------------------------------------------| +| `provisionDataStore.cassandra` | Provision a cassandra data store | `false` (required for AllInOne mode) | +| `allInOne.enabled` | Enable All in One In-Memory Configuration | `true` | +| `allInOne.args` | Command arguments to pass to All in One deployment | `["--memory.max-traces", "10000", "--query.base-path", "/jaeger/ui"]` | +| `allInOne.resources` | CPU/Memory resource requests/limits for All in One | 275Mi memory limit | +| `storage.type` | Storage type to use | `none` (required for AllInOne mode) | +| `agent.enabled` | Enable Jaeger agent | `false` (required for AllInOne mode) | +| `collector.enabled` | Enable Jaeger Collector | `false` (required for AllInOne mode) | +| `query.enabled` | Enable Jaeger Query | `false` (required for AllInOne mode) | + +#### Prometheus + +> **Note** +> The following parameters have a `prometheus.` prefix. + +| Parameter | Description | Default | +|--------------------------------------|------------------------------------------------|-----------------------------------------------------------| +| `alertmanager.enabled` | Install the alertmanager | `false` | +| `configmapReload.prometheus.enabled` | Install the configmap-reload container | `false` | +| `kube-state-metrics.enabled` | Install the kube-state-metrics sub-chart | `false` | +| `prometheus-node-exporter.enabled` | Install the Prometheus Node Exporter sub-chart | `false` | +| `prometheus-pushgateway.enabled` | Install the Prometheus Push Gateway sub-chart | `false` | +| `server.global.scrape_interval` | How frequently to scrape targets by default | `5s` | +| `server.global.scrap_timeout` | How long until a scrape request times out | `3s` | +| `server.global.evaluation_interval` | How frequently to evaluate rules | `30s` | +| `service.servicePort` | Service port used | `9090` | +| `serverFiles.prometheus.yml` | Prometheus configuration file | Scrape config to get metrics from OpenTelemetry collector | + +#### Grafana + +> **Note** +> The following parameters have a `grafana.` prefix. + +| Parameter | Description | Default | +|-----------------------|----------------------------------------------------|----------------------------------------------------------------------| +| `grafana.ini` | Grafana's primary configuration | Enables anonymous login, and proxy through the frontendProxy service | +| `adminPassword` | Password used by `admin` user | `admin` | +| `datasources` | Configure grafana datasources (passed through tpl) | Prometheus and Jaeger data sources | +| `dashboardProviders` | Configure grafana dashboard providers | Defines a `default` provider based on a file path | +| `dashboardConfigMaps` | ConfigMaps reference that contains dashboards | Dashboard config map deployed with this Helm chart | diff --git a/charts/opentelemetry-demo/examples/default/rendered/component.yaml b/charts/opentelemetry-demo/examples/default/rendered/component.yaml index 722833f0dca..549865322f0 100644 --- a/charts/opentelemetry-demo/examples/default/rendered/component.yaml +++ b/charts/opentelemetry-demo/examples/default/rendered/component.yaml @@ -5,7 +5,7 @@ kind: Service metadata: name: example-adservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: adservice @@ -29,7 +29,7 @@ kind: Service metadata: name: example-cartservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: cartservice @@ -53,7 +53,7 @@ kind: Service metadata: name: example-checkoutservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: checkoutservice @@ -77,7 +77,7 @@ kind: Service metadata: name: example-currencyservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: currencyservice @@ -101,7 +101,7 @@ kind: Service metadata: name: example-emailservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: emailservice @@ -125,7 +125,7 @@ kind: Service metadata: name: example-featureflagservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: featureflagservice @@ -152,7 +152,7 @@ kind: Service metadata: name: example-ffspostgres labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: ffspostgres @@ -176,7 +176,7 @@ kind: Service metadata: name: example-frontend labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: frontend @@ -200,7 +200,7 @@ kind: Service metadata: name: example-frontendproxy labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: frontendproxy @@ -224,7 +224,7 @@ kind: Service metadata: name: example-loadgenerator labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: loadgenerator @@ -248,7 +248,7 @@ kind: Service metadata: name: example-paymentservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: paymentservice @@ -272,7 +272,7 @@ kind: Service metadata: name: example-productcatalogservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: productcatalogservice @@ -296,7 +296,7 @@ kind: Service metadata: name: example-quoteservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: quoteservice @@ -320,7 +320,7 @@ kind: Service metadata: name: example-recommendationservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: recommendationservice @@ -344,7 +344,7 @@ kind: Service metadata: name: example-redis labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: redis @@ -368,7 +368,7 @@ kind: Service metadata: name: example-shippingservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: shippingservice @@ -392,7 +392,7 @@ kind: Deployment metadata: name: example-adservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: adservice @@ -457,7 +457,7 @@ kind: Deployment metadata: name: example-cartservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: cartservice @@ -526,7 +526,7 @@ kind: Deployment metadata: name: example-checkoutservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: checkoutservice @@ -603,7 +603,7 @@ kind: Deployment metadata: name: example-currencyservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: currencyservice @@ -670,7 +670,7 @@ kind: Deployment metadata: name: example-emailservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: emailservice @@ -741,7 +741,7 @@ kind: Deployment metadata: name: example-featureflagservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: featureflagservice @@ -814,7 +814,7 @@ kind: Deployment metadata: name: example-ffspostgres labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: ffspostgres @@ -883,7 +883,7 @@ kind: Deployment metadata: name: example-frontend labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: frontend @@ -966,7 +966,7 @@ kind: Deployment metadata: name: example-frontendproxy labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: frontendproxy @@ -1034,7 +1034,7 @@ spec: - name: JAEGER_SERVICE_PORT value: "16686" - name: JAEGER_SERVICE_HOST - value: 'example-jaeger' + value: 'example-jaeger-query' - name: ENVOY_PORT value: "8080" - name: ENVOY_UID @@ -1051,7 +1051,7 @@ kind: Deployment metadata: name: example-loadgenerator labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: loadgenerator @@ -1132,7 +1132,7 @@ kind: Deployment metadata: name: example-paymentservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: paymentservice @@ -1197,7 +1197,7 @@ kind: Deployment metadata: name: example-productcatalogservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: productcatalogservice @@ -1264,7 +1264,7 @@ kind: Deployment metadata: name: example-quoteservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: quoteservice @@ -1337,7 +1337,7 @@ kind: Deployment metadata: name: example-recommendationservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: recommendationservice @@ -1410,7 +1410,7 @@ kind: Deployment metadata: name: example-redis labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: redis @@ -1471,7 +1471,7 @@ kind: Deployment metadata: name: example-shippingservice labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example app.kubernetes.io/component: shippingservice diff --git a/charts/opentelemetry-demo/examples/default/rendered/grafana-dashboards.yaml b/charts/opentelemetry-demo/examples/default/rendered/grafana-dashboards.yaml index 0708c32fedd..70b0176dccf 100644 --- a/charts/opentelemetry-demo/examples/default/rendered/grafana-dashboards.yaml +++ b/charts/opentelemetry-demo/examples/default/rendered/grafana-dashboards.yaml @@ -5,10 +5,9 @@ kind: ConfigMap metadata: name: example-grafana-dashboards labels: - helm.sh/chart: opentelemetry-demo-0.12.7 + helm.sh/chart: opentelemetry-demo-0.13.0 app.kubernetes.io/name: example app.kubernetes.io/instance: example - app.kubernetes.io/component: jaeger app.kubernetes.io/version: "1.1.0" app.kubernetes.io/part-of: opentelemetry-demo app.kubernetes.io/managed-by: Helm diff --git a/charts/opentelemetry-demo/examples/default/rendered/jaeger.yaml b/charts/opentelemetry-demo/examples/default/rendered/jaeger.yaml deleted file mode 100644 index 6b813a6aa80..00000000000 --- a/charts/opentelemetry-demo/examples/default/rendered/jaeger.yaml +++ /dev/null @@ -1,76 +0,0 @@ ---- -# Source: opentelemetry-demo/templates/jaeger.yaml -apiVersion: v1 -kind: Service -metadata: - name: example-jaeger - labels: - helm.sh/chart: opentelemetry-demo-0.12.7 - app.kubernetes.io/name: example - app.kubernetes.io/instance: example - app.kubernetes.io/component: jaeger - app.kubernetes.io/version: "1.1.0" - app.kubernetes.io/part-of: opentelemetry-demo - app.kubernetes.io/managed-by: Helm -spec: - type: ClusterIP - ports: - - name: frontend - port: 16686 - protocol: TCP - targetPort: 16686 - - name: collector - port: 4317 - protocol: TCP - targetPort: 4317 - selector: - app.kubernetes.io/name: example - app.kubernetes.io/instance: example - app.kubernetes.io/component: jaeger ---- -# Source: opentelemetry-demo/templates/jaeger.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: example-jaeger - labels: - helm.sh/chart: opentelemetry-demo-0.12.7 - app.kubernetes.io/name: example - app.kubernetes.io/instance: example - app.kubernetes.io/component: jaeger - app.kubernetes.io/version: "1.1.0" - app.kubernetes.io/part-of: opentelemetry-demo - app.kubernetes.io/managed-by: Helm -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: example - app.kubernetes.io/instance: example - app.kubernetes.io/component: jaeger - template: - metadata: - labels: - app.kubernetes.io/name: example - app.kubernetes.io/instance: example - app.kubernetes.io/component: jaeger - spec: - containers: - - name: jaeger - image: "jaegertracing/all-in-one:latest" - args: - - "--memory.max-traces" - - "10000" - - "--query.base-path" - - "/jaeger/ui" - env: - - name: COLLECTOR_OTLP_ENABLED - value: "true" - ports: - - containerPort: 4317 - protocol: TCP - - containerPort: 16686 - protocol: TCP - resources: - limits: - memory: 275Mi diff --git a/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-agent-svc.yaml b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-agent-svc.yaml new file mode 100644 index 00000000000..ed2c4c0f2f9 --- /dev/null +++ b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-agent-svc.yaml @@ -0,0 +1,35 @@ +--- +# Source: opentelemetry-demo/charts/jaeger/templates/allinone-agent-svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: example-jaeger-agent + labels: + helm.sh/chart: jaeger-0.65.1 + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/version: "1.37.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: service-agent +spec: + clusterIP: None + ports: + - name: zk-compact-trft + port: 5775 + protocol: UDP + targetPort: 0 + - name: config-rest + port: 5778 + targetPort: 0 + - name: jg-compact-trft + port: 6831 + protocol: UDP + targetPort: 0 + - name: jg-binary-trft + port: 6832 + protocol: UDP + targetPort: 0 + selector: + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/component: all-in-one diff --git a/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-collector-svc.yaml b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-collector-svc.yaml new file mode 100644 index 00000000000..66af4ff67fe --- /dev/null +++ b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-collector-svc.yaml @@ -0,0 +1,38 @@ +--- +# Source: opentelemetry-demo/charts/jaeger/templates/allinone-collector-svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: example-jaeger-collector + labels: + helm.sh/chart: jaeger-0.65.1 + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/version: "1.37.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: service-collector +spec: + clusterIP: None + ports: + - name: http-zipkin + port: 9411 + targetPort: 0 + - name: grpc-http + port: 14250 + targetPort: 0 + - name: c-tchan-trft + port: 14267 + targetPort: 0 + - name: http-c-binary-trft + port: 14268 + targetPort: 0 + - name: otlp-grpc + port: 4317 + targetPort: 0 + - name: otlp-http + port: 4318 + targetPort: 0 + selector: + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/component: all-in-one diff --git a/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-deploy.yaml b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-deploy.yaml new file mode 100644 index 00000000000..1e7c5f0cadb --- /dev/null +++ b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-deploy.yaml @@ -0,0 +1,95 @@ +--- +# Source: opentelemetry-demo/charts/jaeger/templates/allinone-deploy.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: example-jaeger + labels: + helm.sh/chart: jaeger-0.65.1 + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/version: "1.37.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: all-in-one + prometheus.io/port: "14269" + prometheus.io/scrape: "true" +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/component: all-in-one + template: + metadata: + labels: + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/component: all-in-one + annotations: + prometheus.io/port: "14269" + prometheus.io/scrape: "true" + spec: + containers: + - env: + - name: SPAN_STORAGE_TYPE + value: memory + - name: COLLECTOR_ZIPKIN_HOST_PORT + value: :9411 + - name: JAEGER_DISABLED + value: "false" + - name: COLLECTOR_OTLP_ENABLED + value: "true" + image: jaegertracing/all-in-one:1.37.0 + imagePullPolicy: IfNotPresent + name: jaeger + args: + - "--memory.max-traces" + - "10000" + - "--query.base-path" + - "/jaeger/ui" + ports: + - containerPort: 5775 + protocol: UDP + - containerPort: 6831 + protocol: UDP + - containerPort: 6832 + protocol: UDP + - containerPort: 5778 + protocol: TCP + - containerPort: 16686 + protocol: TCP + - containerPort: 16685 + protocol: TCP + - containerPort: 9411 + protocol: TCP + - containerPort: 4317 + protocol: TCP + - containerPort: 4318 + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: / + port: 14269 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 14269 + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + memory: 275Mi + serviceAccountName: example-jaeger diff --git a/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-query-svc.yaml b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-query-svc.yaml new file mode 100644 index 00000000000..67625d8f7ce --- /dev/null +++ b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-query-svc.yaml @@ -0,0 +1,26 @@ +--- +# Source: opentelemetry-demo/charts/jaeger/templates/allinone-query-svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: example-jaeger-query + labels: + helm.sh/chart: jaeger-0.65.1 + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/version: "1.37.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: service-query +spec: + clusterIP: None + ports: + - name: http-query + port: 16686 + targetPort: 16686 + - name: grpc-query + port: 16685 + targetPort: 16685 + selector: + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/component: all-in-one diff --git a/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-sa.yaml b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-sa.yaml new file mode 100644 index 00000000000..ed664e33680 --- /dev/null +++ b/charts/opentelemetry-demo/examples/default/rendered/jaeger/allinone-sa.yaml @@ -0,0 +1,13 @@ +--- +# Source: opentelemetry-demo/charts/jaeger/templates/allinone-sa.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: example-jaeger + labels: + helm.sh/chart: jaeger-0.65.1 + app.kubernetes.io/name: jaeger + app.kubernetes.io/instance: example + app.kubernetes.io/version: "1.37.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: all-in-one diff --git a/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/configmap.yaml b/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/configmap.yaml index 21d2ec863c1..e0c942746fc 100644 --- a/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/configmap.yaml +++ b/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/configmap.yaml @@ -15,7 +15,7 @@ data: exporters: logging: {} otlp: - endpoint: 'example-jaeger:4317' + endpoint: 'example-jaeger-collector:4317' tls: insecure: true prometheus: diff --git a/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/deployment.yaml b/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/deployment.yaml index 07fc3b3575f..deeb3e78dd0 100644 --- a/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/deployment.yaml +++ b/charts/opentelemetry-demo/examples/default/rendered/opentelemetry-collector/deployment.yaml @@ -22,7 +22,7 @@ spec: template: metadata: annotations: - checksum/config: da2e2f67d541303248c8cf24863a272b386b772a17926e5dad98e9e520e77936 + checksum/config: 1b1f3cd12789679aac762d1bb0f5d880b651d7e4fedcfb9683134f070f56a881 opentelemetry_community_demo: "true" prometheus.io/port: "9464" prometheus.io/scrape: "true" diff --git a/charts/opentelemetry-demo/templates/jaeger.yaml b/charts/opentelemetry-demo/templates/jaeger.yaml deleted file mode 100644 index 8a820e4b6cb..00000000000 --- a/charts/opentelemetry-demo/templates/jaeger.yaml +++ /dev/null @@ -1,71 +0,0 @@ -{{- $config := set . "name" "jaeger" }} -{{- if .Values.observability.jaeger.enabled -}} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "otel-demo.name" . }}-{{ .name }} - labels: - {{- include "otel-demo.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - {{- include "otel-demo.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "otel-demo.selectorLabels" . | nindent 8 }} - spec: - {{- $schedulingRules := .Values.observability.jaeger.schedulingRules -}} - {{- if and $schedulingRules $schedulingRules.nodeSelector }} - nodeSelector: - {{- $schedulingRules.nodeSelector | toYaml | nindent 8 }} - {{- end }} - {{- if and $schedulingRules $schedulingRules.affinity }} - affinity: - {{- $schedulingRules.affinity | toYaml | nindent 8 }} - {{- end }} - {{- if and $schedulingRules $schedulingRules.tolerations }} - tolerations: - {{- $schedulingRules.tolerations | toYaml | nindent 8 }} - {{- end }} - containers: - - name: jaeger - image: "{{ .Values.observability.jaeger.image.repository }}:{{ .Values.observability.jaeger.image.tag }}" - args: - {{- range $arg := .Values.observability.jaeger.args }} - - "{{ $arg }}" - {{- end }} - env: - - name: COLLECTOR_OTLP_ENABLED - value: "true" - ports: - - containerPort: 4317 - protocol: TCP - - containerPort: 16686 - protocol: TCP - resources: - {{- .Values.observability.jaeger.resources | toYaml | nindent 12 }} - ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "otel-demo.name" . }}-{{ .name }} - labels: - {{- include "otel-demo.labels" . | nindent 4 }} -spec: - type: {{.Values.observability.jaeger.serviceType}} - ports: - - name: frontend - port: 16686 - protocol: TCP - targetPort: 16686 - - name: collector - port: 4317 - protocol: TCP - targetPort: 4317 - selector: - {{- include "otel-demo.selectorLabels" . | nindent 4 }} -{{- end }} diff --git a/charts/opentelemetry-demo/values.schema.json b/charts/opentelemetry-demo/values.schema.json index ce42902c351..83ca7387919 100644 --- a/charts/opentelemetry-demo/values.schema.json +++ b/charts/opentelemetry-demo/values.schema.json @@ -26,6 +26,9 @@ "opentelemetry-collector": { "type": "object" }, + "jaeger": { + "type": "object" + }, "prometheus": { "type": "object" }, @@ -331,22 +334,6 @@ "properties": { "enabled": { "type": "boolean" - }, - "image": { - "$ref": "#/definitions/Image" - }, - "args": { - "type": "array", - "items": {} - }, - "resources": { - "$ref": "#/definitions/ContainerResources" - }, - "serviceType": { - "type": "string" - }, - "schedulingRules": { - "$ref": "#/definitions/SchedulingRules" } } }, diff --git a/charts/opentelemetry-demo/values.yaml b/charts/opentelemetry-demo/values.yaml index c9f2527037b..f50c7edd89d 100644 --- a/charts/opentelemetry-demo/values.yaml +++ b/charts/opentelemetry-demo/values.yaml @@ -1,29 +1,3 @@ -observability: - # collector settings are configured in the opentelemetry-collector section. - otelcol: - enabled: true - jaeger: - enabled: true - image: - repository: jaegertracing/all-in-one - # Overrides the image tag whose default is the chart appVersion. - tag: "latest" - pullPolicy: IfNotPresent - pullSecrets: [] - args: ["--memory.max-traces", "10000", "--query.base-path", "/jaeger/ui"] - resources: - limits: - memory: 275Mi - schedulingRules: - nodeSelector: {} - affinity: {} - tolerations: [] - serviceType: "ClusterIP" - prometheus: - enabled: true - grafana: - enabled: true - default: # list of environment variables applied to all components env: @@ -198,7 +172,6 @@ components: limits: memory: 20Mi - emailService: enabled: true useDefault: @@ -261,7 +234,6 @@ components: limits: memory: 160Mi - ffsPostgres: enabled: true useDefault: @@ -293,7 +265,6 @@ components: limits: memory: 120Mi - frontend: enabled: true useDefault: @@ -335,7 +306,6 @@ components: limits: memory: 200Mi - frontendProxy: enabled: true useDefault: @@ -368,7 +338,7 @@ components: - name: JAEGER_SERVICE_PORT value: "16686" - name: JAEGER_SERVICE_HOST - value: '{{ include "otel-demo.name" . }}-jaeger' + value: '{{ include "otel-demo.name" . }}-jaeger-query' - name: ENVOY_PORT value: "8080" - name: ENVOY_UID @@ -556,6 +526,17 @@ components: limits: memory: 30Mi +observability: + # collector settings are configured in the opentelemetry-collector section. + otelcol: + enabled: true + jaeger: + enabled: true + prometheus: + enabled: true + grafana: + enabled: true + opentelemetry-collector: nameOverride: otelcol mode: deployment @@ -588,7 +569,7 @@ opentelemetry-collector: exporters: otlp: - endpoint: '{{ include "otel-demo.name" . }}-jaeger:4317' + endpoint: '{{ include "otel-demo.name" . }}-jaeger-collector:4317' tls: insecure: true prometheus: @@ -606,6 +587,24 @@ opentelemetry-collector: metrics: exporters: [prometheus, logging] +jaeger: + provisionDataStore: + cassandra: false + allInOne: + enabled: true + args: ["--memory.max-traces", "10000", "--query.base-path", "/jaeger/ui"] + resources: + limits: + memory: 275Mi + storage: + type: none + agent: + enabled: false + collector: + enabled: false + query: + enabled: false + prometheus: alertmanager: enabled: false