From 73307cd8e0adcdc39aa54b32afffbd9b6613e159 Mon Sep 17 00:00:00 2001 From: Alberto Otero Date: Tue, 20 Dec 2022 11:50:50 +0000 Subject: [PATCH] [bitnami/jaeger] Add Jaeger chart (#13480) * Add Jaeger chart Signed-off-by: Alberto Otero Lorenzo Signed-off-by: Bitnami Containers Signed-off-by: Javier Salmeron Garcia Signed-off-by: Jose Antonio Carmona Co-authored-by: Bitnami Containers Co-authored-by: Javier Salmeron Garcia Co-authored-by: Jose Antonio Carmona --- .github/workflows/cd-pipeline.yml | 1 + .vib/jaeger/cypress/cypress.json | 3 + .../cypress/integration/jaeger_spec.js | 23 + .vib/jaeger/goss/goss.yaml | 33 + .vib/jaeger/goss/vars.yaml | 26 + .vib/jaeger/vib-publish.json | 81 ++ .vib/jaeger/vib-verify.json | 66 + bitnami/jaeger/.helmignore | 21 + bitnami/jaeger/Chart.lock | 9 + bitnami/jaeger/Chart.yaml | 30 + bitnami/jaeger/README.md | 467 +++++++ bitnami/jaeger/templates/NOTES.txt | 23 + bitnami/jaeger/templates/_helpers.tpl | 229 ++++ .../jaeger/templates/agent/deployment.yaml | 179 +++ bitnami/jaeger/templates/agent/service.yml | 88 ++ .../templates/agent/serviceaccount.yaml | 21 + .../templates/collector/deployment.yaml | 173 +++ .../jaeger/templates/collector/service.yml | 80 ++ .../templates/collector/serviceaccount.yaml | 21 + bitnami/jaeger/templates/migrate-job.yaml | 115 ++ .../jaeger/templates/query/deployment.yaml | 165 +++ bitnami/jaeger/templates/query/service.yml | 64 + .../templates/query/serviceaccount.yaml | 21 + bitnami/jaeger/values.yaml | 1175 +++++++++++++++++ 24 files changed, 3114 insertions(+) create mode 100644 .vib/jaeger/cypress/cypress.json create mode 100644 .vib/jaeger/cypress/cypress/integration/jaeger_spec.js create mode 100644 .vib/jaeger/goss/goss.yaml create mode 100644 .vib/jaeger/goss/vars.yaml create mode 100644 .vib/jaeger/vib-publish.json create mode 100644 .vib/jaeger/vib-verify.json create mode 100644 bitnami/jaeger/.helmignore create mode 100644 bitnami/jaeger/Chart.lock create mode 100644 bitnami/jaeger/Chart.yaml create mode 100644 bitnami/jaeger/README.md create mode 100644 bitnami/jaeger/templates/NOTES.txt create mode 100644 bitnami/jaeger/templates/_helpers.tpl create mode 100644 bitnami/jaeger/templates/agent/deployment.yaml create mode 100644 bitnami/jaeger/templates/agent/service.yml create mode 100644 bitnami/jaeger/templates/agent/serviceaccount.yaml create mode 100644 bitnami/jaeger/templates/collector/deployment.yaml create mode 100644 bitnami/jaeger/templates/collector/service.yml create mode 100644 bitnami/jaeger/templates/collector/serviceaccount.yaml create mode 100644 bitnami/jaeger/templates/migrate-job.yaml create mode 100644 bitnami/jaeger/templates/query/deployment.yaml create mode 100644 bitnami/jaeger/templates/query/service.yml create mode 100644 bitnami/jaeger/templates/query/serviceaccount.yaml create mode 100644 bitnami/jaeger/values.yaml diff --git a/.github/workflows/cd-pipeline.yml b/.github/workflows/cd-pipeline.yml index b244b48d3..7387ba398 100644 --- a/.github/workflows/cd-pipeline.yml +++ b/.github/workflows/cd-pipeline.yml @@ -35,6 +35,7 @@ on: # rebuild any PRs and main branch changes - 'bitnami/haproxy-intel/**' - 'bitnami/harbor/**' - 'bitnami/influxdb/**' + - 'bitnami/jaeger/**' - 'bitnami/jasperreports/**' - 'bitnami/jenkins/**' - 'bitnami/joomla/**' diff --git a/.vib/jaeger/cypress/cypress.json b/.vib/jaeger/cypress/cypress.json new file mode 100644 index 000000000..c202974ea --- /dev/null +++ b/.vib/jaeger/cypress/cypress.json @@ -0,0 +1,3 @@ +{ + "baseUrl": "http://localhost" +} diff --git a/.vib/jaeger/cypress/cypress/integration/jaeger_spec.js b/.vib/jaeger/cypress/cypress/integration/jaeger_spec.js new file mode 100644 index 000000000..f2d02b9cb --- /dev/null +++ b/.vib/jaeger/cypress/cypress/integration/jaeger_spec.js @@ -0,0 +1,23 @@ +/// + +it('lists and retrieves jaeger traces', () => { + + // The container we use to create traces, uses 'redis' as a service name + const testService = 'redis'; + const currentDate = new Date(); + const timestampMillis = currentDate.getTime() * 1000; + + cy.visit(`/search?end=${timestampMillis}&limit=20&lookback=1h&maxDuration&minDuration&service=${testService}&start=0`); + + cy.contains('a', '/dispatch').invoke('attr', 'href').then((href) => { + const traceID = href.substring(href.lastIndexOf('/') + 1, href.length); + + cy.request({ + method: 'GET', + url: `/api/traces/${traceID}` + }).then((response) => { + expect(response.status).to.eq(200); + expect(response.body.data[0].traceID).to.eq(traceID); + }); + }) +}); diff --git a/.vib/jaeger/goss/goss.yaml b/.vib/jaeger/goss/goss.yaml new file mode 100644 index 000000000..71c82ca4d --- /dev/null +++ b/.vib/jaeger/goss/goss.yaml @@ -0,0 +1,33 @@ +addr: + tcp://localhost:{{ .Vars.agent.containerPorts.config }}: + reachable: true +http: + http://jaeger--agent:{{ .Vars.agent.service.ports.admin }}/: + status: 200 + body: + - Server available + http://jaeger-collector:{{ .Vars.collector.service.ports.admin }}/: + status: 200 + body: + - Server available + http://jaeger-query:{{ .Vars.query.service.ports.admin }}/: + status: 200 + body: + - Server available + http://localhost:{{ .Vars.agent.containerPorts.admin }}/: + status: 200 +file: + /var/run/secrets/kubernetes.io/serviceaccount: + exists: {{ .Vars.agent.serviceAccount.automountServiceAccountToken }} + filetype: directory + mode: "3777" +command: + check-cassandra-auth: + exec: \[ $CASSANDRA_USERNAME = {{ .Vars.cassandra.dbUser.user }} ] && [ $CASSANDRA_PASSWORD = {{ .Vars.cassandra.dbUser.password }} ] && [ $CASSANDRA_KEYSPACE = {{ .Vars.cassandra.keyspace }} ]; + exit-status: 0 + check-user-info: + exec: id + exit-status: 0 + stdout: + - uid={{ .Vars.agent.containerSecurityContext.runAsUser }} + - /groups=.*{{ .Vars.agent.podSecurityContext.fsGroup }}/ diff --git a/.vib/jaeger/goss/vars.yaml b/.vib/jaeger/goss/vars.yaml new file mode 100644 index 000000000..61d97df7e --- /dev/null +++ b/.vib/jaeger/goss/vars.yaml @@ -0,0 +1,26 @@ +query: + service: + ports: + admin: 16688 +collector: + service: + ports: + admin: 14270 +agent: + service: + ports: + admin: 14272 + containerPorts: + config: 5779 + admin: 14272 + podSecurityContext: + fsGroup: 1002 + containerSecurityContext: + runAsUser: 1002 + serviceAccount: + automountServiceAccountToken: true +cassandra: + keyspace: bitnami_test_jaeger + dbUser: + user: bn_test_jaeger + password: bn_test_jaeger \ No newline at end of file diff --git a/.vib/jaeger/vib-publish.json b/.vib/jaeger/vib-publish.json new file mode 100644 index 000000000..a4c731d8d --- /dev/null +++ b/.vib/jaeger/vib-publish.json @@ -0,0 +1,81 @@ +{ + "phases": { + "package": { + "context": { + "resources": { + "url": "{SHA_ARCHIVE}", + "path": "/bitnami/jaeger" + } + }, + "actions": [ + { + "action_id": "helm-package" + }, + { + "action_id": "helm-lint" + } + ] + }, + "verify": { + "context": { + "resources": { + "url": "{SHA_ARCHIVE}", + "path": "/bitnami/jaeger" + }, + "runtime_parameters": "cXVlcnk6CiAgc2VydmljZToKICAgIHR5cGU6IExvYWRCYWxhbmNlcgogICAgcG9ydHM6CiAgICAgIGFkbWluOiAxNjY4OAogICAgICBhcGk6IDgwCmNvbGxlY3RvcjoKICBzZXJ2aWNlOgogICAgcG9ydHM6CiAgICAgIGFkbWluOiAxNDI3MAphZ2VudDoKICBzZXJ2aWNlOgogICAgcG9ydHM6CiAgICAgIGFkbWluOiAxNDI3MgogIGNvbnRhaW5lclBvcnRzOgogICAgY29uZmlnOiA1Nzc5CiAgICBhZG1pbjogMTQyNzIKICBwb2RTZWN1cml0eUNvbnRleHQ6CiAgICBlbmFibGVkOiB0cnVlCiAgICBmc0dyb3VwOiAxMDAyCiAgY29udGFpbmVyU2VjdXJpdHlDb250ZXh0OgogICAgZW5hYmxlZDogdHJ1ZQogICAgcnVuQXNVc2VyOiAxMDAyCiAgc2VydmljZUFjY291bnQ6CiAgICBjcmVhdGU6IHRydWUKICAgIGF1dG9tb3VudFNlcnZpY2VBY2NvdW50VG9rZW46IHRydWUKICBzaWRlY2FyczoKICAgIC0gbmFtZTogaG90cm9kLWV4YW1wbGUKICAgICAgaW1hZ2U6IGphZWdlcnRyYWNpbmcvZXhhbXBsZS1ob3Ryb2Q6MS4zOQogICAgICBhcmdzOgogICAgICAgIC0gYWxsCiAgICAtIG5hbWU6IHRyYWNlLWdlbmVyYXRvcgogICAgICBpbWFnZTogYml0bmFtaS9iaXRuYW1pLXNoZWxsOjExLWRlYmlhbi0xMS1yNTcKICAgICAgY29tbWFuZDoKICAgICAgICAtIC9iaW4vYmFzaAogICAgICAgIC0gLWVjCiAgICAgICAgLSB8CiAgICAgICAgICAjIS9iaW4vYmFzaAogICAgICAgICAgd2hpbGUgdHJ1ZTsgZG8KICAgICAgICAgICAgIyBTYW1wbGUgdGFrZW4gZnJvbSBpbnNwZWN0aW5nIGhvdHJvZCBjb2RlCiAgICAgICAgICAgIGN1cmwgJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MC9kaXNwYXRjaD9jdXN0b21lcj0zOTImbm9uc2U9MC40NTgzODg4NDcxMDUwMTcyNicKICAgICAgICAgICAgc2xlZXAgNQogICAgICAgICAgZG9uZQpjYXNzYW5kcmE6CiAgZW5hYmxlZDogdHJ1ZQogIGtleXNwYWNlOiBiaXRuYW1pX3Rlc3RfamFlZ2VyCiAgZGJVc2VyOgogICAgdXNlcjogYm5fdGVzdF9qYWVnZXIKICAgIHBhc3N3b3JkOiBibl90ZXN0X2phZWdlcg==", + "target_platform": { + "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", + "size": { + "name": "M4" + } + } + }, + "actions": [ + { + "action_id": "health-check", + "params": { + "endpoint": "lb-jaeger-query-api", + "app_protocol": "HTTP" + } + }, + { + "action_id": "goss", + "params": { + "resources": { + "path": "/.vib/jaeger/goss" + }, + "remote": { + "workload": "deploy-jaeger--agent" + }, + "vars_file": "vars.yaml" + } + }, + { + "action_id": "cypress", + "params": { + "resources": { + "path": "/.vib/jaeger/cypress" + }, + "endpoint": "lb-jaeger-query-api", + "app_protocol": "HTTP" + } + } + ] + }, + "publish": { + "actions": [ + { + "action_id": "helm-publish", + "params": { + "repository": { + "kind": "S3", + "url": "{VIB_ENV_S3_URL}", + "username": "{VIB_ENV_S3_USERNAME}", + "password": "{VIB_ENV_S3_PASSWORD}" + } + } + } + ] + } + } +} diff --git a/.vib/jaeger/vib-verify.json b/.vib/jaeger/vib-verify.json new file mode 100644 index 000000000..75f519d93 --- /dev/null +++ b/.vib/jaeger/vib-verify.json @@ -0,0 +1,66 @@ +{ + "phases": { + "package": { + "context": { + "resources": { + "url": "{SHA_ARCHIVE}", + "path": "/bitnami/jaeger" + } + }, + "actions": [ + { + "action_id": "helm-package" + }, + { + "action_id": "helm-lint" + } + ] + }, + "verify": { + "context": { + "resources": { + "url": "{SHA_ARCHIVE}", + "path": "/bitnami/jaeger" + }, + "runtime_parameters": "cXVlcnk6CiAgc2VydmljZToKICAgIHR5cGU6IExvYWRCYWxhbmNlcgogICAgcG9ydHM6CiAgICAgIGFkbWluOiAxNjY4OAogICAgICBhcGk6IDgwCmNvbGxlY3RvcjoKICBzZXJ2aWNlOgogICAgcG9ydHM6CiAgICAgIGFkbWluOiAxNDI3MAphZ2VudDoKICBzZXJ2aWNlOgogICAgcG9ydHM6CiAgICAgIGFkbWluOiAxNDI3MgogIGNvbnRhaW5lclBvcnRzOgogICAgY29uZmlnOiA1Nzc5CiAgICBhZG1pbjogMTQyNzIKICBwb2RTZWN1cml0eUNvbnRleHQ6CiAgICBlbmFibGVkOiB0cnVlCiAgICBmc0dyb3VwOiAxMDAyCiAgY29udGFpbmVyU2VjdXJpdHlDb250ZXh0OgogICAgZW5hYmxlZDogdHJ1ZQogICAgcnVuQXNVc2VyOiAxMDAyCiAgc2VydmljZUFjY291bnQ6CiAgICBjcmVhdGU6IHRydWUKICAgIGF1dG9tb3VudFNlcnZpY2VBY2NvdW50VG9rZW46IHRydWUKICBzaWRlY2FyczoKICAgIC0gbmFtZTogaG90cm9kLWV4YW1wbGUKICAgICAgaW1hZ2U6IGphZWdlcnRyYWNpbmcvZXhhbXBsZS1ob3Ryb2Q6MS4zOQogICAgICBhcmdzOgogICAgICAgIC0gYWxsCiAgICAtIG5hbWU6IHRyYWNlLWdlbmVyYXRvcgogICAgICBpbWFnZTogYml0bmFtaS9iaXRuYW1pLXNoZWxsOjExLWRlYmlhbi0xMS1yNTcKICAgICAgY29tbWFuZDoKICAgICAgICAtIC9iaW4vYmFzaAogICAgICAgIC0gLWVjCiAgICAgICAgLSB8CiAgICAgICAgICAjIS9iaW4vYmFzaAogICAgICAgICAgd2hpbGUgdHJ1ZTsgZG8KICAgICAgICAgICAgIyBTYW1wbGUgdGFrZW4gZnJvbSBpbnNwZWN0aW5nIGhvdHJvZCBjb2RlCiAgICAgICAgICAgIGN1cmwgJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MC9kaXNwYXRjaD9jdXN0b21lcj0zOTImbm9uc2U9MC40NTgzODg4NDcxMDUwMTcyNicKICAgICAgICAgICAgc2xlZXAgNQogICAgICAgICAgZG9uZQpjYXNzYW5kcmE6CiAgZW5hYmxlZDogdHJ1ZQogIGtleXNwYWNlOiBiaXRuYW1pX3Rlc3RfamFlZ2VyCiAgZGJVc2VyOgogICAgdXNlcjogYm5fdGVzdF9qYWVnZXIKICAgIHBhc3N3b3JkOiBibl90ZXN0X2phZWdlcg==", + "target_platform": { + "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", + "size": { + "name": "M4" + } + } + }, + "actions": [ + { + "action_id": "health-check", + "params": { + "endpoint": "lb-jaeger-query-api", + "app_protocol": "HTTP" + } + }, + { + "action_id": "goss", + "params": { + "resources": { + "path": "/.vib/jaeger/goss" + }, + "remote": { + "workload": "deploy-jaeger--agent" + }, + "vars_file": "vars.yaml" + } + }, + { + "action_id": "cypress", + "params": { + "resources": { + "path": "/.vib/jaeger/cypress" + }, + "endpoint": "lb-jaeger-query-api", + "app_protocol": "HTTP" + } + } + ] + } + } +} diff --git a/bitnami/jaeger/.helmignore b/bitnami/jaeger/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/bitnami/jaeger/.helmignore @@ -0,0 +1,21 @@ +# 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 +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/bitnami/jaeger/Chart.lock b/bitnami/jaeger/Chart.lock new file mode 100644 index 000000000..ceca5eafe --- /dev/null +++ b/bitnami/jaeger/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: cassandra + repository: https://charts.bitnami.com/bitnami + version: 9.7.7 +- name: common + repository: https://charts.bitnami.com/bitnami + version: 2.2.2 +digest: sha256:67b8e92719d59da97775177e0447b474932e508cbc520d894b1dd9e38a1c4f44 +generated: "2022-12-15T13:51:30.913117+01:00" diff --git a/bitnami/jaeger/Chart.yaml b/bitnami/jaeger/Chart.yaml new file mode 100644 index 000000000..8b11ff7f3 --- /dev/null +++ b/bitnami/jaeger/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + category: Infrastructure +apiVersion: v2 +appVersion: 1.39.0 +dependencies: + - condition: cassandra.enabled + name: cassandra + repository: https://charts.bitnami.com/bitnami + version: 9.x.x + - name: common + repository: https://charts.bitnami.com/bitnami + tags: + - bitnami-common + version: 2.x.x +description: Distributed tracing platform for monitoring microservices-based distributed systems. +engine: gotpl +home: https://github.com/bitnami/charts/tree/main/bitnami/jaeger +icon: https://bitnami.com/assets/stacks/jaeger/img/jaeger-stack-220x234.png +keywords: + - jaeger + - tracing + - monitoring +maintainers: + - name: Bitnami + url: https://github.com/bitnami/charts +name: jaeger +sources: + - https://github.com/jaegertracing/jaeger + - https://www.jaegertracing.io/ +version: 0.1.0 diff --git a/bitnami/jaeger/README.md b/bitnami/jaeger/README.md new file mode 100644 index 000000000..556965c3f --- /dev/null +++ b/bitnami/jaeger/README.md @@ -0,0 +1,467 @@ + + +# Jaeger packaged by Bitnami + +Jaeger is a Distributed Tracing System + +[Overview of Jaeger](https://www.jaegertracing.io/) + +Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. + +## TL;DR + +```console +$ helm repo add my-repo https://charts.bitnami.com/bitnami +$ helm install my-release my-repo/jaeger +``` + +## Introduction + +This chart bootstraps a [jaeger](https://github.com/bitnami/containers/tree/main/bitnami/jaeger) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.19+ +- Helm 3.2.0+ +- PV provisioner support in the underlying infrastructure +- ReadWriteMany volumes for deployment scaling + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +$ helm repo add my-repo https://charts.bitnami.com/bitnami +$ helm install my-release my-repo/jaeger +``` + +These commands deploy jaeger on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` statefulset: + +```console +$ helm delete my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. Use the option `--purge` to delete all history too. + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `global.imageRegistry` | Global Docker image registry | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | + + +### Common parameters + +| Name | Description | Value | +| ------------------------ | --------------------------------------------------------------------------------------- | -------------- | +| `nameOverride` | String to partially override common.names.fullname | `""` | +| `fullnameOverride` | String to fully override common.names.fullname | `""` | +| `kubeVersion` | Force target Kubernetes version (using Helm capabilities if not set) | `""` | +| `commonLabels` | Labels to add to all deployed objects (sub-charts are not considered) | `{}` | +| `commonAnnotations` | Annotations to add to all deployed objects | `{}` | +| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | +| `diagnosticMode.command` | Command to override all containers in the deployment | `["sleep"]` | +| `diagnosticMode.args` | Args to override all containers in the deployment | `["infinity"]` | + + +### Jaeger parameters + +| Name | Description | Value | +| ------------------- | ------------------------------------------------------------------------------------------------------ | --------------------- | +| `image.registry` | Jaeger image registry | `docker.io` | +| `image.repository` | Jaeger image repository | `bitnami/jaeger` | +| `image.tag` | Jaeger image tag (immutable tags are recommended) | `1.39.0-debian-11-r4` | +| `image.digest` | Jaeger image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `image.pullPolicy` | image pull policy | `IfNotPresent` | +| `image.pullSecrets` | Jaeger image pull secrets | `[]` | +| `image.debug` | Enable image debug mode | `false` | + + +### Query deployment parameters + +| Name | Description | Value | +| --------------------------------------------------- | ----------------------------------------------------------------------------------------- | --------------- | +| `query.command` | Command for running the container (set to default if not set). Use array form | `[]` | +| `query.args` | Args for running the container (set to default if not set). Use array form | `[]` | +| `query.lifecycleHooks` | Override default etcd container hooks | `{}` | +| `query.extraEnvVars` | Extra environment variables to be set on jaeger container | `[]` | +| `query.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | +| `query.extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | +| `query.replicaCount` | Number of Jaeger replicas | `1` | +| `query.livenessProbe.enabled` | Enable livenessProbe on Query nodes | `true` | +| `query.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `query.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `query.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `query.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `query.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `query.startupProbe.enabled` | Enable startupProbe on Query containers | `false` | +| `query.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `10` | +| `query.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `query.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `query.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | +| `query.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `query.readinessProbe.enabled` | Enable readinessProbe | `false` | +| `query.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `query.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `query.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `query.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `15` | +| `query.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `query.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `query.customStartupProbe` | Override default startup probe | `{}` | +| `query.customReadinessProbe` | Override default readiness probe | `{}` | +| `query.resources.limits` | The resources limits for Jaeger containers | `{}` | +| `query.resources.requests` | The requested resources for Jaeger containers | `{}` | +| `query.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for jaeger container | `[]` | +| `query.containerPorts.api` | Port for API | `16686` | +| `query.containerPorts.admin` | Port for admin | `16687` | +| `query.service.type` | Jaeger service type | `ClusterIP` | +| `query.service.ports.api` | Port for API | `16686` | +| `query.service.ports.admin` | Port for admin | `16687` | +| `query.service.nodePorts.api` | Node port for API | `""` | +| `query.service.nodePorts.admin` | Node port for admin | `""` | +| `query.service.extraPorts` | Extra ports to expose in the service (normally used with the `sidecar` value) | `[]` | +| `query.service.loadBalancerIP` | LoadBalancerIP if service type is `LoadBalancer` | `""` | +| `query.service.loadBalancerSourceRanges` | Service Load Balancer sources | `[]` | +| `query.service.clusterIP` | Service Cluster IP | `""` | +| `query.service.externalTrafficPolicy` | Service external traffic policy | `Cluster` | +| `query.service.annotations` | Provide any additional annotations which may be required. | `{}` | +| `query.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `query.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `query.service.metrics.annotations` | Annotations for Prometheus metrics | `{}` | +| `query.serviceAccount.create` | Enables ServiceAccount | `true` | +| `query.serviceAccount.name` | ServiceAccount name | `""` | +| `query.serviceAccount.annotations` | Annotations to add to all deployed objects | `{}` | +| `query.serviceAccount.automountServiceAccountToken` | Automount API credentials for a service account. | `true` | +| `query.podSecurityContext.enabled` | Enabled Jaeger pods' Security Context | `true` | +| `query.podSecurityContext.fsGroup` | Set Jaeger pod's Security Context fsGroup | `1001` | +| `query.containerSecurityContext.enabled` | Enabled Jaeger containers' Security Context | `true` | +| `query.containerSecurityContext.runAsUser` | Set Jaeger container's Security Context runAsUser | `1001` | +| `query.containerSecurityContext.runAsNonRoot` | Force the container to be run as non root | `true` | +| `query.podAnnotations` | Additional pod annotations | `{}` | +| `query.podLabels` | Additional pod labels | `{}` | +| `query.podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `query.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `query.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `query.nodeAffinityPreset.key` | Node label key to match. Ignored if `affinity` is set | `""` | +| `query.nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set | `[]` | +| `query.priorityClassName` | Server priorityClassName | `""` | +| `query.affinity` | Affinity for pod assignment | `{}` | +| `query.nodeSelector` | Node labels for pod assignment | `{}` | +| `query.tolerations` | Tolerations for pod assignment | `[]` | +| `query.topologySpreadConstraints` | Topology Spread Constraints for pod assignment | `[]` | +| `query.schedulerName` | Alternative scheduler | `""` | +| `query.updateStrategy.type` | Jaeger query deployment strategy type | `RollingUpdate` | +| `query.updateStrategy.rollingUpdate` | Jaeger query deployment rolling update configuration parameters | `{}` | +| `query.extraVolumes` | Optionally specify extra list of additional volumes for jaeger container | `[]` | +| `query.initContainers` | Add additional init containers to the jaeger pods | `[]` | +| `query.sidecars` | Add additional sidecar containers to the jaeger pods | `[]` | + + +### Collector deployment parameters + +| Name | Description | Value | +| ------------------------------------------------------- | ------------------------------------------------------------------------------------------ | --------------- | +| `collector.command` | Command for running the container (set to default if not set). Use array form | `[]` | +| `collector.args` | Args for running the container (set to default if not set). Use array form | `[]` | +| `collector.lifecycleHooks` | Override default etcd container hooks | `{}` | +| `collector.extraEnvVars` | Extra environment variables to be set on jaeger container | `[]` | +| `collector.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | +| `collector.extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | +| `collector.replicaCount` | Number of Jaeger replicas | `1` | +| `collector.livenessProbe.enabled` | Enable livenessProbe on collector nodes | `true` | +| `collector.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `collector.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `collector.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `collector.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `collector.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `collector.startupProbe.enabled` | Enable startupProbe on collector containers | `false` | +| `collector.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `10` | +| `collector.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `collector.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `collector.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | +| `collector.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `collector.readinessProbe.enabled` | Enable readinessProbe | `false` | +| `collector.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `collector.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `collector.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `collector.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `15` | +| `collector.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `collector.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `collector.customStartupProbe` | Override default startup probe | `{}` | +| `collector.customReadinessProbe` | Override default readiness probe | `{}` | +| `collector.resources.limits` | The resources limits for Jaeger containers | `{}` | +| `collector.resources.requests` | The requested resources for Jaeger containers | `{}` | +| `collector.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for jaeger container | `[]` | +| `collector.containerPorts.zipkin` | can accept Zipkin spans in Thrift, JSON and Proto (disabled by default) | `9411` | +| `collector.containerPorts.grpc` | used by jaeger-agent to send spans in model.proto format | `14250` | +| `collector.containerPorts.binary` | can accept spans directly from clients in jaeger.thrift format over binary thrift protocol | `14268` | +| `collector.containerPorts.admin` | Admin port: health check at / and metrics at /metrics | `14269` | +| `collector.service.type` | Jaeger service type | `ClusterIP` | +| `collector.service.ports.zipkin` | can accept Zipkin spans in Thrift, JSON and Proto (disabled by default) | `9411` | +| `collector.service.ports.grpc` | used by jaeger-agent to send spans in model.proto format | `14250` | +| `collector.service.ports.binary` | can accept spans directly from clients in jaeger.thrift format over binary thrift protocol | `14268` | +| `collector.service.ports.admin` | Admin port: health check at / and metrics at /metrics | `14269` | +| `collector.service.nodePorts.zipkin` | can accept Zipkin spans in Thrift, JSON and Proto (disabled by default) | `""` | +| `collector.service.nodePorts.grpc` | used by jaeger-agent to send spans in model.proto format | `""` | +| `collector.service.nodePorts.binary` | can accept spans directly from clients in jaeger.thrift format over binary thrift protocol | `""` | +| `collector.service.nodePorts.admin` | Admin port: health check at / and metrics at /metrics | `""` | +| `collector.service.extraPorts` | Extra ports to expose in the service (normally used with the `sidecar` value) | `[]` | +| `collector.service.loadBalancerIP` | LoadBalancerIP if service type is `LoadBalancer` | `""` | +| `collector.service.loadBalancerSourceRanges` | Service Load Balancer sources | `[]` | +| `collector.service.clusterIP` | Service Cluster IP | `""` | +| `collector.service.externalTrafficPolicy` | Service external traffic policy | `Cluster` | +| `collector.service.annotations` | Provide any additional annotations which may be required. | `{}` | +| `collector.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `collector.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `collector.service.metrics.annotations` | Annotations for Prometheus metrics | `{}` | +| `collector.serviceAccount.create` | Enables ServiceAccount | `true` | +| `collector.serviceAccount.name` | ServiceAccount name | `""` | +| `collector.serviceAccount.annotations` | Annotations to add to all deployed objects | `{}` | +| `collector.serviceAccount.automountServiceAccountToken` | Automount API credentials for a service account. | `true` | +| `collector.podSecurityContext.enabled` | Enabled Jaeger pods' Security Context | `true` | +| `collector.podSecurityContext.fsGroup` | Set Jaeger pod's Security Context fsGroup | `1001` | +| `collector.containerSecurityContext.enabled` | Enabled Jaeger containers' Security Context | `true` | +| `collector.containerSecurityContext.runAsUser` | Set Jaeger container's Security Context runAsUser | `1001` | +| `collector.containerSecurityContext.runAsNonRoot` | Force the container to be run as non root | `true` | +| `collector.podAnnotations` | Additional pod annotations | `{}` | +| `collector.podLabels` | Additional pod labels | `{}` | +| `collector.podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `collector.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `collector.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `collector.nodeAffinityPreset.key` | Node label key to match. Ignored if `affinity` is set | `""` | +| `collector.nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set | `[]` | +| `collector.priorityClassName` | Server priorityClassName | `""` | +| `collector.affinity` | Affinity for pod assignment | `{}` | +| `collector.nodeSelector` | Node labels for pod assignment | `{}` | +| `collector.tolerations` | Tolerations for pod assignment | `[]` | +| `collector.topologySpreadConstraints` | Topology Spread Constraints for pod assignment | `[]` | +| `collector.schedulerName` | Alternative scheduler | `""` | +| `collector.updateStrategy.type` | Jaeger collector deployment strategy type | `RollingUpdate` | +| `collector.updateStrategy.rollingUpdate` | Jaeger collector deployment rolling update configuration parameters | `{}` | +| `collector.extraVolumes` | Optionally specify extra list of additional volumes for jaeger container | `[]` | +| `collector.initContainers` | Add additional init containers to the jaeger pods | `[]` | +| `collector.sidecars` | Add additional sidecar containers to the jaeger pods | `[]` | + + +### agent deployment parameters + +| Name | Description | Value | +| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | --------------- | +| `agent.command` | Command for running the container (set to default if not set). Use array form | `[]` | +| `agent.args` | Args for running the container (set to default if not set). Use array form | `[]` | +| `agent.lifecycleHooks` | Override default etcd container hooks | `{}` | +| `agent.extraEnvVars` | Extra environment variables to be set on jaeger container | `[]` | +| `agent.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | +| `agent.extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | +| `agent.replicaCount` | Number of Jaeger replicas | `1` | +| `agent.livenessProbe.enabled` | Enable livenessProbe on agent nodes | `true` | +| `agent.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `agent.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `agent.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `agent.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `agent.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `agent.startupProbe.enabled` | Enable startupProbe on agent containers | `false` | +| `agent.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `10` | +| `agent.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `agent.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `agent.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | +| `agent.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `agent.readinessProbe.enabled` | Enable readinessProbe | `false` | +| `agent.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `agent.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `agent.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `agent.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `15` | +| `agent.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `agent.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `agent.customStartupProbe` | Override default startup probe | `{}` | +| `agent.customReadinessProbe` | Override default readiness probe | `{}` | +| `agent.resources.limits` | The resources limits for Jaeger containers | `{}` | +| `agent.resources.requests` | The requested resources for Jaeger containers | `{}` | +| `agent.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for jaeger container | `[]` | +| `agent.containerPorts.compact` | accept jaeger.thrift in compact Thrift protocol used by most current Jaeger clients | `6831` | +| `agent.containerPorts.binary` | accept jaeger.thrift in binary Thrift protocol used by Node.js Jaeger client | `6832` | +| `agent.containerPorts.config` | Serve configs, sampling strategies | `5778` | +| `agent.containerPorts.zipkin` | Accept zipkin.thrift in compact Thrift protocol (deprecated; only used by very old Jaeger clients, circa 2016) | `5775` | +| `agent.containerPorts.admin` | Admin port: health check at / and metrics at /metrics | `14271` | +| `agent.service.type` | Jaeger service type | `ClusterIP` | +| `agent.service.ports.compact` | accept jaeger.thrift in compact Thrift protocol used by most current Jaeger clients | `6831` | +| `agent.service.ports.binary` | accept jaeger.thrift in binary Thrift protocol used by Node.js Jaeger client | `6832` | +| `agent.service.ports.config` | Serve configs, sampling strategies | `5778` | +| `agent.service.ports.zipkin` | Accept zipkin.thrift in compact Thrift protocol (deprecated; only used by very old Jaeger clients, circa 2016) | `5775` | +| `agent.service.ports.admin` | Admin port: health check at / and metrics at /metrics | `14271` | +| `agent.service.nodePorts.compact` | accept jaeger.thrift in compact Thrift protocol used by most current Jaeger clients | `""` | +| `agent.service.nodePorts.binary` | accept jaeger.thrift in binary Thrift protocol used by Node.js Jaeger client | `""` | +| `agent.service.nodePorts.config` | Serve configs, sampling strategies | `""` | +| `agent.service.nodePorts.zipkin` | Accept zipkin.thrift in compact Thrift protocol (deprecated; only used by very old Jaeger clients, circa 2016) | `""` | +| `agent.service.nodePorts.admin` | Admin port: health check at / and metrics at /metrics | `""` | +| `agent.service.extraPorts` | Extra ports to expose in the service (normally used with the `sidecar` value) | `[]` | +| `agent.service.loadBalancerIP` | LoadBalancerIP if service type is `LoadBalancer` | `""` | +| `agent.service.loadBalancerSourceRanges` | Service Load Balancer sources | `[]` | +| `agent.service.clusterIP` | Service Cluster IP | `""` | +| `agent.service.externalTrafficPolicy` | Service external traffic policy | `Cluster` | +| `agent.service.annotations` | Provide any additional annotations which may be required. | `{}` | +| `agent.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `agent.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `agent.service.metrics.annotations` | Annotations for Prometheus metrics | `{}` | +| `agent.serviceAccount.create` | Enables ServiceAccount | `true` | +| `agent.serviceAccount.name` | ServiceAccount name | `""` | +| `agent.serviceAccount.annotations` | Annotations to add to all deployed objects | `{}` | +| `agent.serviceAccount.automountServiceAccountToken` | Automount API credentials for a service account. | `true` | +| `agent.podSecurityContext.enabled` | Enabled Jaeger pods' Security Context | `true` | +| `agent.podSecurityContext.fsGroup` | Set Jaeger pod's Security Context fsGroup | `1001` | +| `agent.containerSecurityContext.enabled` | Enabled Jaeger containers' Security Context | `true` | +| `agent.containerSecurityContext.runAsUser` | Set Jaeger container's Security Context runAsUser | `1001` | +| `agent.containerSecurityContext.runAsNonRoot` | Force the container to be run as non root | `true` | +| `agent.podAnnotations` | Additional pod annotations | `{}` | +| `agent.podLabels` | Additional pod labels | `{}` | +| `agent.podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `agent.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `agent.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `agent.nodeAffinityPreset.key` | Node label key to match. Ignored if `affinity` is set | `""` | +| `agent.nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set | `[]` | +| `agent.priorityClassName` | Server priorityClassName | `""` | +| `agent.affinity` | Affinity for pod assignment | `{}` | +| `agent.nodeSelector` | Node labels for pod assignment | `{}` | +| `agent.tolerations` | Tolerations for pod assignment | `[]` | +| `agent.topologySpreadConstraints` | Topology Spread Constraints for pod assignment | `[]` | +| `agent.schedulerName` | Alternative scheduler | `""` | +| `agent.updateStrategy.type` | Jaeger agent deployment strategy type | `RollingUpdate` | +| `agent.updateStrategy.rollingUpdate` | Jaeger agent deployment rolling update configuration parameters | `{}` | +| `agent.extraVolumes` | Optionally specify extra list of additional volumes for jaeger container | `[]` | +| `agent.initContainers` | Add additional init containers to the jaeger pods | `[]` | +| `agent.sidecars` | Add additional sidecar containers to the jaeger pods | `[]` | +| `migration.podLabels` | Additional pod labels | `{}` | +| `migration.podAnnotations` | Additional pod annotations | `{}` | +| `migration.annotations` | Provide any additional annotations which may be required. | `{}` | +| `migration.podSecurityContext.enabled` | Enabled Jaeger pods' Security Context | `true` | +| `migration.podSecurityContext.fsGroup` | Set Jaeger pod's Security Context fsGroup | `1001` | +| `migration.extraEnvVars` | Extra environment variables to be set on jaeger migration container | `[]` | +| `migration.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | +| `migration.extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | +| `migration.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for jaeger container | `[]` | +| `migration.resources.limits` | The resources limits for Jaeger containers | `{}` | +| `migration.resources.requests` | The requested resources for Jaeger containers | `{}` | +| `migration.extraVolumes` | Optionally specify extra list of additional volumes for jaeger container | `[]` | + + +### Set the image to use for the migration job + +| Name | Description | Value | +| -------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------- | +| `cqlshImage.registry` | Cassandra image registry | `docker.io` | +| `cqlshImage.repository` | Cassandra image repository | `bitnami/cassandra` | +| `cqlshImage.tag` | Cassandra image tag (immutable tags are recommended) | `4.0-debian-11` | +| `cqlshImage.digest` | Cassandra image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `cqlshImage.pullPolicy` | image pull policy | `IfNotPresent` | +| `cqlshImage.pullSecrets` | Cassandra image pull secrets | `[]` | +| `cqlshImage.debug` | Enable image debug mode | `false` | +| `externalDatabase.host` | External database host | `""` | +| `externalDatabase.port` | External database port | `9042` | +| `externalDatabase.dbUser.user` | Cassandra admin user | `bn_jaeger` | +| `externalDatabase.dbUser.password` | Password for `dbUser.user`. Randomly generated if empty | `""` | +| `externalDatabase.existingSecret` | Name of existing secret containing the database secret | `""` | +| `externalDatabase.existingSecretPasswordKey` | Name of existing secret key containing the database password secret key | `""` | +| `externalDatabase.cluster.datacenter` | Name for cassandra's jaeger datacenter | `dc1` | +| `externalDatabase.keyspace` | Name for cassandra's jaeger keyspace | `bitnami_jaeger` | + + +### Cassandra storage sub-chart + +| Name | Description | Value | +| ------------------------------ | ------------------------------------------------------- | ---------------- | +| `cassandra.enabled` | Enables cassandra storage pod | `true` | +| `cassandra.cluster.datacenter` | Name for cassandra's jaeger datacenter | `dc1` | +| `cassandra.keyspace` | Name for cassandra's jaeger keyspace | `bitnami_jaeger` | +| `cassandra.dbUser.user` | Cassandra admin user | `bn_jaeger` | +| `cassandra.dbUser.password` | Password for `dbUser.user`. Randomly generated if empty | `""` | +| `cassandra.service.ports.cql` | Cassandra cql port | `9042` | + + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Configuration and installation details + +### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/) + +It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. + +Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. + +### Persistence + +The [Bitnami jaeger](https://github.com/bitnami/containers/tree/main/bitnami/jaeger) image stores the trace onto an external database. Persistent Volume Claims are used to keep the data across deployments. + +### Additional environment variables + +In case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `extraEnvVars` property inside each of the subsections: `collector`, `agent`, `query`. + +```yaml +collector: + extraEnvVars: + - name: ENV_VAR_NAME + value: ENV_VAR_VALUE + +agent: + extraEnvVars: + - name: ENV_VAR_NAME + value: ENV_VAR_VALUE + +query: + extraEnvVars: + - name: ENV_VAR_NAME + value: ENV_VAR_VALUE +``` + +Alternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `extraEnvVarsCM` or the `extraEnvVarsSecret` values. + +### Sidecars + +If additional containers are needed in the same pod as jaeger (such as additional metrics or logging exporters), they can be defined using the `sidecars` parameter inside each of the subsections: `collector`, `agent`, `query` . If these sidecars export extra ports, extra port definitions can be added using the `service.extraPorts` parameter. [Learn more about configuring and using sidecar containers](https://docs.bitnami.com/kubernetes/infrastructure/jaeger/configuration/configure-sidecar-init-containers/). + +### Pod affinity + +This chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). + +As an alternative, use one of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters inside each of the subsections: `distributor`, `compactor`, `ingester`, `querier`, `queryFrontend` and `vulture`. + +### External database support + +You may want to have Jaeger connect to an external database rather than installing one inside your cluster. Typical reasons for this are to use a managed database service, or to share a common database server for all your applications. To achieve this, the chart allows you to specify credentials for an external database with the [`externalDatabase` parameter](#parameters). You should also disable the Cassandra installation with the `cassandra.enabled` option. Here is an example: + +```console +cassandra.enabled=false +externalDatabase.host=myexternalhost +externalDatabase.port=9042 +``` + +## Troubleshooting + +Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). + +## License + +Copyright © 2022 Bitnami + +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. diff --git a/bitnami/jaeger/templates/NOTES.txt b/bitnami/jaeger/templates/NOTES.txt new file mode 100644 index 000000000..4b4970c06 --- /dev/null +++ b/bitnami/jaeger/templates/NOTES.txt @@ -0,0 +1,23 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} + +** Please be patient while the chart is being deployed ** + +1. Get the application URL by running these commands: + +{{- if contains "NodePort" .Values.query.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.names.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.query.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 "common.names.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "jaeger.query.fullname" . }} {{ include "common.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.query.service.ports.api }} +{{- else if contains "ClusterIP" .Values.query.service.type }} + echo "Browse to http://127.0.0.1:8080" + kubectl port-forward svc/{{ include "common.names.fullname" . }} 8080:{{ .Values.query.service.ports.api }} & +{{- end }} + +{{- include "common.warnings.rollingTag" .Values.image }} diff --git a/bitnami/jaeger/templates/_helpers.tpl b/bitnami/jaeger/templates/_helpers.tpl new file mode 100644 index 000000000..84ae8befd --- /dev/null +++ b/bitnami/jaeger/templates/_helpers.tpl @@ -0,0 +1,229 @@ +{{/* vim: set filetype=mustache: */}} + + +{{/* +Return the proper jaeger image name +*/}} +{{- define "jaeger.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper cassandra external image name +*/}} +{{- define "jaeger.cqlshImage" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.cqlshImage "global" .Values.global) }} +{{- end -}} + + +{{/* +Create the name of the query deployment +*/}} +{{- define "jaeger.query.fullname" -}} + {{ printf "%s-query" (include "common.names.fullname" .) }} +{{- end -}} + +{{/* +Create a container for checking cassandra availability +*/}} +{{- define "jaeger.waitForDBInitContainer" -}} +- name: jaeger-cassandra-ready-check + image: {{ include "jaeger.cqlshImage" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + command: + - /bin/bash + args: + - -ec + - | + #!/bin/bash + + set -o errexit + set -o nounset + set -o pipefail + + . /opt/bitnami/scripts/libos.sh + + check_cassandra_keyspace_schema() { + echo "SELECT 1" | cqlsh -u $CASSANDRA_USERNAME -p $CASSANDRA_PASSWORD -e "SELECT COUNT(*) FROM ${CASSANDRA_KEYSPACE}.traces" + } + + info "Connecting to the Cassandra instance $CQLSH_HOST:$CQLSH_PORT" + if ! retry_while "check_cassandra_keyspace_schema" 12 30; then + error "Could not connect to the database server" + exit 1 + else + info "Connection check success" + fi + env: + - name: CQLSH_HOST + value: {{ include "jaeger.cassandra.host" . }} + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" .Values.cqlshImage.debug | quote }} + - name: CQLSH_PORT + value: {{ include "jaeger.cassandra.port" . }} + - name: CASSANDRA_USERNAME + value: {{ include "jaeger.cassandra.user" . }} + - name: CASSANDRA_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "jaeger.cassandra.secretName" . }} + key: {{ include "jaeger.cassandra.secretKey" . }} + - name: CASSANDRA_KEYSPACE + value: {{ .Values.cassandra.keyspace }} +{{- end -}} + +{{/* +Create the name of the service account to use for the collector +*/}} +{{- define "jaeger.collector.serviceAccountName" -}} +{{- if .Values.collector.serviceAccount.create -}} + {{ default (include "jaeger.collector.fullname" .) .Values.collector.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.collector.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use for the agent +*/}} +{{- define "jaeger.agent.serviceAccountName" -}} +{{- if .Values.agent.serviceAccount.create -}} + {{ default (include "jaeger.agent.fullname" .) .Values.agent.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.agent.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use for the query +*/}} +{{- define "jaeger.query.serviceAccountName" -}} +{{- if .Values.query.serviceAccount.create -}} + {{ default (include "jaeger.query.fullname" .) .Values.query.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.query.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the collector deployment +*/}} +{{- define "jaeger.collector.fullname" -}} + {{ printf "%s-collector" (include "common.names.fullname" .) }} +{{- end -}} + +{{/* +Create the name of the collector deployment. This name includes 2 hyphens due to +an issue about env vars collision with the chart name when the release name is set to just 'jaeger' +ref. https://github.com/jaegertracing/jaeger-operator/issues/1158 +*/}} +{{- define "jaeger.agent.fullname" -}} + {{ printf "%s--agent" (include "common.names.fullname" .) }} +{{- end -}} + +{{/* +Create the cassandra secret name +*/}} +{{- define "jaeger.cassandra.secretName" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.existingSecret -}} + {{- else -}} + {{- printf "%s-cassandra" (include "common.names.fullname" .) -}} + {{- end -}} +{{- end -}} + +{{/* +Create the cassandra secret key +*/}} +{{- define "jaeger.cassandra.secretKey" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.existingSecretPasswordKey -}} + {{- else -}} + cassandra-password + {{- end -}} +{{- end -}} + +{{/* +Create the cassandra user +*/}} +{{- define "jaeger.cassandra.user" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.dbUser.user | quote -}} + {{- else -}} + {{- .Values.cassandra.dbUser.user | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Create the cassandra host +*/}} +{{- define "jaeger.cassandra.host" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.host | quote -}} + {{- else -}} + {{- include "common.names.dependency.fullname" (dict "chartName" "cassandra" "chartValues" .Values.cassandra "context" $) -}} + {{- end }} +{{- end }} + +{{/* +Create the cassandra port +*/}} +{{- define "jaeger.cassandra.port" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.port | quote -}} + {{- else }} + {{- .Values.cassandra.service.ports.cql | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Create the cassandra datacenter +*/}} +{{- define "jaeger.cassandra.datacenter" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.cluster.datacenter | quote -}} + {{- else }} + {{- .Values.cassandra.cluster.datacenter | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Create the cassandra keyspace +*/}} +{{- define "jaeger.cassandra.keyspace" -}} + {{- if not .Values.cassandra.enabled -}} + {{- .Values.externalDatabase.keyspace | quote -}} + {{- else }} + {{- .Values.cassandra.keyspace | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message. +*/}} +{{- define "jaeger.validateValues" -}} +{{- $messages := list -}} +{{- $messages := append $messages (include "jaeger.validateValues.cassandra" .) -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message -}} +{{- end -}} +{{- end -}} + +{{/* Validate values of jaeger - Cassandra */}} +{{- define "jaeger.validateValues.cassandra" -}} +{{- if and .Values.cassandra.enabled .Values.externalDatabase.host -}} +jaeger: Cassandra + You can only use one database. + Please choose installing a Cassandra chart (--set cassandra.enabled=true) or + using an external database (--set externalDatabase.host) +{{- end -}} +{{- if and (not .Values.cassandra.enabled) (not .Values.externalDatabase.host) -}} +jaeger: Cassandra + You did not set any database. + Please choose installing a Cassandra chart (--set mongodb.enabled=true) or + using an external database (--set externalDatabase.host) +{{- end -}} +{{- end -}} diff --git a/bitnami/jaeger/templates/agent/deployment.yaml b/bitnami/jaeger/templates/agent/deployment.yaml new file mode 100644 index 000000000..8c2b3a102 --- /dev/null +++ b/bitnami/jaeger/templates/agent/deployment.yaml @@ -0,0 +1,179 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "jaeger.agent.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: agent + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + replicas: {{ .Values.agent.replicaCount }} + {{- if .Values.agent.updateStrategy }} + strategy: {{- toYaml .Values.agent.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: agent + {{- if .Values.agent.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.agent.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.agent.podAnnotations }} + annotations: + {{- if .Values.agent.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.agent.podAnnotations "context" $) | nindent 8 }} + {{- end }} + {{- end }} + spec: + {{- if .Values.agent.schedulerName }} + schedulerName: {{ .Values.agent.schedulerName }} + {{- end }} + priorityClassName: {{ .Values.agent.priorityClassName | quote }} + {{- if .Values.agent.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.agent.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.agent.podAffinityPreset "component" "agent" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.agent.podAntiAffinityPreset "component" "agent" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.agent.nodeAffinityPreset.type "key" .Values.agent.nodeAffinityPreset.key "values" .Values.agent.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.agent.podSecurityContext.enabled }} + securityContext: {{- omit .Values.agent.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.agent.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.agent.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.agent.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.agent.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.agent.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.agent.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + initContainers: + {{- include "jaeger.waitForDBInitContainer" . | nindent 8 }} + {{- if .Values.agent.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.agent.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: jaeger-agent + image: {{ include "jaeger.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.agent.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.agent.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.agent.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.agent.command "context" $) | nindent 12 }} + {{- else }} + command: ["/opt/bitnami/jaeger/bin/jaeger-agent"] + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.agent.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.agent.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.agent.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.agent.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + ports: + - name: binary + containerPort: {{ .Values.agent.containerPorts.binary }} + - name: zipkin + containerPort: {{ .Values.agent.containerPorts.zipkin }} + - name: admin + containerPort: {{ .Values.agent.containerPorts.admin }} + - name: compact + containerPort: {{ .Values.agent.containerPorts.compact }} + - name: config + containerPort: {{ .Values.agent.containerPorts.config }} + env: + - name: CASSANDRA_SERVERS + value: {{ include "jaeger.cassandra.host" . }} + - name: CASSANDRA_PORT + value: {{ include "jaeger.cassandra.port" . }} + - name: CASSANDRA_USERNAME + value: {{ include "jaeger.cassandra.user" . }} + - name: CASSANDRA_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "jaeger.cassandra.secretName" . }} + key: {{ include "jaeger.cassandra.secretKey" . }} + - name: CASSANDRA_KEYSPACE + value: {{ include "jaeger.cassandra.keyspace" . }} + - name: CASSANDRA_DATACENTER + value: {{ include "jaeger.cassandra.datacenter" . }} + - name: HTTP_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.agent.containerPorts.config | quote }} + - name: PROCESSOR_JAEGER_BINARY_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.agent.containerPorts.binary | quote }} + - name: PROCESSOR_JAEGER_COMPACT_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.agent.containerPorts.compact | quote }} + - name: PROCESSOR_ZIPKIN_COMPACT_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.agent.containerPorts.zipkin | quote }} + - name: ADMIN_HTTP_HOST_PORT + value: {{ printf ":%v" .Values.agent.containerPorts.admin | quote }} + - name: REPORTER_GRPC_HOST_PORT + value: {{ printf "%s:%d" (include "jaeger.collector.fullname" .) (int .Values.collector.service.ports.grpc) }} + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" .Values.image.debug | quote }} + {{- if .Values.agent.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.agent.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.agent.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.agent.extraEnvVarsCM }} + {{- end }} + {{- if .Values.agent.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.agent.extraEnvVarsSecret }} + {{- end }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.agent.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.agent.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.agent.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.agent.startupProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- if .Values.agent.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.agent.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.agent.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.agent.livenessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- if .Values.agent.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.agent.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.agent.readinessProbe.enabled }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.agent.readinessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- end }} + {{- if .Values.query.resources }} + resources: {{- toYaml .Values.agent.resources | nindent 12 }} + {{- end }} + {{- if .Values.agent.extraVolumeMounts }} + {{- include "common.tplvalues.render" ( dict "value" .Values.agent.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.agent.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.agent.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if .Values.agent.extraVolumes }} + {{- include "common.tplvalues.render" ( dict "value" .Values.agent.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/bitnami/jaeger/templates/agent/service.yml b/bitnami/jaeger/templates/agent/service.yml new file mode 100644 index 000000000..9add5e2ef --- /dev/null +++ b/bitnami/jaeger/templates/agent/service.yml @@ -0,0 +1,88 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jaeger.agent.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: agent + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.agent.service.annotations .Values.commonAnnotations }} + annotations: + {{- if .Values.agent.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.agent.service.annotations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- include "common.tplvalues.render" ( dict "value" .Values.agent.service.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.agent.service.type }} + {{- if and (eq .Values.agent.service.type "LoadBalancer") (not (empty .Values.agent.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.agent.service.loadBalancerIP }} + {{- end }} + {{- if and (eq .Values.agent.service.type "LoadBalancer") (not (empty .Values.agent.service.loadBalancerSourceRanges)) }} + loadBalancerSourceRanges: {{ .Values.agent.service.loadBalancerSourceRanges }} + {{- end }} + {{- if and .Values.agent.service.clusterIP (eq .Values.agent.service.type "ClusterIP") }} + clusterIP: {{ .Values.agent.service.clusterIP }} + {{- end }} + {{- if .Values.agent.service.sessionAffinity }} + sessionAffinity: {{ .Values.agent.service.sessionAffinity }} + {{- end }} + {{- if .Values.agent.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.agent.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + {{- if or (eq .Values.agent.service.type "LoadBalancer") (eq .Values.agent.service.type "NodePort") }} + externalTrafficPolicy: {{ .Values.agent.service.externalTrafficPolicy | quote }} + {{- end }} + ports: + - name: compact + port: {{ .Values.agent.service.ports.compact }} + targetPort: {{ .Values.agent.containerPorts.compact }} + {{- if and (or (eq .Values.agent.service.type "NodePort") (eq .Values.agent.service.type "LoadBalancer")) (not (empty .Values.agent.service.nodePorts.compact)) }} + nodePort: {{ .Values.agent.service.nodePorts.compact }} + {{- else if eq .Values.agent.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: binary + port: {{ .Values.agent.service.ports.binary }} + targetPort: {{ .Values.agent.containerPorts.binary }} + {{- if and (or (eq .Values.agent.service.type "NodePort") (eq .Values.agent.service.type "LoadBalancer")) (not (empty .Values.agent.service.nodePorts.binary)) }} + nodePort: {{ .Values.agent.service.nodePorts.binary }} + {{- else if eq .Values.agent.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: config + port: {{ .Values.agent.service.ports.config }} + targetPort: {{ .Values.agent.containerPorts.config }} + {{- if and (or (eq .Values.agent.service.type "NodePort") (eq .Values.agent.service.type "LoadBalancer")) (not (empty .Values.agent.service.nodePorts.config)) }} + nodePort: {{ .Values.agent.service.nodePorts.config }} + {{- else if eq .Values.agent.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: zipkin + port: {{ .Values.agent.service.ports.zipkin }} + targetPort: {{ .Values.agent.containerPorts.zipkin }} + {{- if and (or (eq .Values.agent.service.type "NodePort") (eq .Values.agent.service.type "LoadBalancer")) (not (empty .Values.agent.service.nodePorts.zipkin)) }} + nodePort: {{ .Values.agent.service.nodePorts.zipkin }} + {{- else if eq .Values.agent.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: admin + port: {{ .Values.agent.service.ports.admin }} + targetPort: {{ .Values.agent.containerPorts.admin }} + {{- if and (or (eq .Values.agent.service.type "NodePort") (eq .Values.agent.service.type "LoadBalancer")) (not (empty .Values.agent.service.nodePorts.admin)) }} + nodePort: {{ .Values.agent.service.nodePorts.admin }} + {{- else if eq .Values.agent.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if .Values.agent.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.agent.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: agent diff --git a/bitnami/jaeger/templates/agent/serviceaccount.yaml b/bitnami/jaeger/templates/agent/serviceaccount.yaml new file mode 100644 index 000000000..b2d5ff842 --- /dev/null +++ b/bitnami/jaeger/templates/agent/serviceaccount.yaml @@ -0,0 +1,21 @@ +{{- if .Values.agent.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "jaeger.agent.serviceAccountName" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: agent + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.agent.serviceAccount.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.agent.serviceAccount.annotations "context" $ ) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.agent.serviceAccount.automountServiceAccountToken }} +{{- end }} diff --git a/bitnami/jaeger/templates/collector/deployment.yaml b/bitnami/jaeger/templates/collector/deployment.yaml new file mode 100644 index 000000000..3cfc9d6f5 --- /dev/null +++ b/bitnami/jaeger/templates/collector/deployment.yaml @@ -0,0 +1,173 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "jaeger.collector.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: collector + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + replicas: {{ .Values.collector.replicaCount }} + {{- if .Values.collector.updateStrategy }} + strategy: {{- toYaml .Values.collector.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: collector + {{- if .Values.collector.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.collector.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.collector.podAnnotations }} + annotations: + {{- if .Values.collector.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.collector.podAnnotations "context" $) | nindent 8 }} + {{- end }} + {{- end }} + spec: + {{- if .Values.collector.schedulerName }} + schedulerName: {{ .Values.collector.schedulerName }} + {{- end }} + priorityClassName: {{ .Values.collector.priorityClassName | quote }} + {{- if .Values.collector.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.collector.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.collector.podAffinityPreset "component" "collector" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.collector.podAntiAffinityPreset "component" "collector" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.collector.nodeAffinityPreset.type "key" .Values.collector.nodeAffinityPreset.key "values" .Values.collector.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.collector.podSecurityContext.enabled }} + securityContext: {{- omit .Values.collector.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.collector.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.collector.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.collector.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.collector.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.collector.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.collector.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + initContainers: + {{- include "jaeger.waitForDBInitContainer" . | nindent 8 }} + {{- if .Values.collector.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.collector.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: jaeger-collector + image: {{ include "jaeger.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.collector.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.collector.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.collector.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.collector.command "context" $) | nindent 12 }} + {{- else }} + command: ["/opt/bitnami/jaeger/bin/jaeger-collector"] + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.collector.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.collector.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.collector.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.collector.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + ports: + - name: zipkin + containerPort: {{ .Values.collector.containerPorts.zipkin }} + - name: binary + containerPort: {{ .Values.collector.containerPorts.binary }} + - name: grpc + containerPort: {{ .Values.collector.containerPorts.grpc }} + - name: admin + containerPort: {{ .Values.collector.containerPorts.admin }} + env: + - name: CASSANDRA_SERVERS + value: {{ include "jaeger.cassandra.host" . }} + - name: CASSANDRA_PORT + value: {{ include "jaeger.cassandra.port" . }} + - name: CASSANDRA_USERNAME + value: {{ include "jaeger.cassandra.user" . }} + - name: CASSANDRA_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "jaeger.cassandra.secretName" . }} + key: {{ include "jaeger.cassandra.secretKey" . }} + - name: CASSANDRA_KEYSPACE + value: {{ include "jaeger.cassandra.keyspace" . }} + - name: CASSANDRA_DATACENTER + value: {{ include "jaeger.cassandra.datacenter" . }} + - name: ADMIN_HTTP_HOST_PORT + value: {{ printf ":%v" .Values.collector.containerPorts.admin | quote }} + - name: COLLECTOR_ZIPKIN_HOST_PORT + value: {{ printf ":%v" .Values.collector.containerPorts.zipkin | quote }} + - name: COLLECTOR_GRPC_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.collector.containerPorts.grpc | quote }} + - name: COLLECTOR_HTTP_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.collector.containerPorts.binary | quote }} + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" .Values.image.debug | quote }} + {{- if .Values.collector.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.collector.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.collector.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.collector.extraEnvVarsCM }} + {{- end }} + {{- if .Values.collector.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.collector.extraEnvVarsSecret }} + {{- end }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.collector.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.collector.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.collector.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.collector.startupProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- if .Values.collector.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.collector.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.collector.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.collector.livenessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- if .Values.collector.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.collector.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.collector.readinessProbe.enabled }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.collector.readinessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- end }} + {{- if .Values.query.resources }} + resources: {{- toYaml .Values.collector.resources | nindent 12 }} + {{- end }} + {{- if .Values.collector.extraVolumeMounts }} + {{- include "common.tplvalues.render" ( dict "value" .Values.collector.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.collector.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.collector.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if .Values.collector.extraVolumes }} + {{- include "common.tplvalues.render" ( dict "value" .Values.collector.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/bitnami/jaeger/templates/collector/service.yml b/bitnami/jaeger/templates/collector/service.yml new file mode 100644 index 000000000..17ab0679e --- /dev/null +++ b/bitnami/jaeger/templates/collector/service.yml @@ -0,0 +1,80 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jaeger.collector.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: collector + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.collector.service.annotations .Values.commonAnnotations }} + annotations: + {{- if .Values.collector.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.collector.service.annotations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- include "common.tplvalues.render" ( dict "value" .Values.collector.service.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.collector.service.type }} + {{- if and (eq .Values.collector.service.type "LoadBalancer") (not (empty .Values.collector.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.collector.service.loadBalancerIP }} + {{- end }} + {{- if and (eq .Values.collector.service.type "LoadBalancer") (not (empty .Values.collector.service.loadBalancerSourceRanges)) }} + loadBalancerSourceRanges: {{ .Values.collector.service.loadBalancerSourceRanges }} + {{- end }} + {{- if and .Values.collector.service.clusterIP (eq .Values.collector.service.type "ClusterIP") }} + clusterIP: {{ .Values.collector.service.clusterIP }} + {{- end }} + {{- if .Values.collector.service.sessionAffinity }} + sessionAffinity: {{ .Values.collector.service.sessionAffinity }} + {{- end }} + {{- if .Values.collector.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.collector.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + {{- if or (eq .Values.collector.service.type "LoadBalancer") (eq .Values.collector.service.type "NodePort") }} + externalTrafficPolicy: {{ .Values.collector.service.externalTrafficPolicy | quote }} + {{- end }} + ports: + - name: grpc + port: {{ .Values.collector.service.ports.grpc }} + targetPort: {{ .Values.collector.containerPorts.grpc }} + {{- if and (or (eq .Values.collector.service.type "NodePort") (eq .Values.collector.service.type "LoadBalancer")) (not (empty .Values.collector.service.nodePorts.grpc)) }} + nodePort: {{ .Values.collector.service.nodePorts.grpc }} + {{- else if eq .Values.collector.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: binary + port: {{ .Values.collector.service.ports.binary }} + targetPort: {{ .Values.collector.containerPorts.binary }} + {{- if and (or (eq .Values.collector.service.type "NodePort") (eq .Values.collector.service.type "LoadBalancer")) (not (empty .Values.collector.service.nodePorts.binary)) }} + nodePort: {{ .Values.collector.service.nodePorts.binary }} + {{- else if eq .Values.collector.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: zipkin + port: {{ .Values.collector.service.ports.zipkin }} + targetPort: {{ .Values.collector.containerPorts.zipkin }} + {{- if and (or (eq .Values.collector.service.type "NodePort") (eq .Values.collector.service.type "LoadBalancer")) (not (empty .Values.collector.service.nodePorts.zipkin)) }} + nodePort: {{ .Values.collector.service.nodePorts.zipkin }} + {{- else if eq .Values.collector.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: admin + port: {{ .Values.collector.service.ports.admin }} + targetPort: {{ .Values.collector.containerPorts.admin }} + {{- if and (or (eq .Values.collector.service.type "NodePort") (eq .Values.collector.service.type "LoadBalancer")) (not (empty .Values.collector.service.nodePorts.admin)) }} + nodePort: {{ .Values.collector.service.nodePorts.admin }} + {{- else if eq .Values.collector.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if .Values.collector.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.collector.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: collector diff --git a/bitnami/jaeger/templates/collector/serviceaccount.yaml b/bitnami/jaeger/templates/collector/serviceaccount.yaml new file mode 100644 index 000000000..e92a8956b --- /dev/null +++ b/bitnami/jaeger/templates/collector/serviceaccount.yaml @@ -0,0 +1,21 @@ +{{- if .Values.collector.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "jaeger.collector.serviceAccountName" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: collector + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.collector.serviceAccount.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.collector.serviceAccount.annotations "context" $ ) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.collector.serviceAccount.automountServiceAccountToken }} +{{- end }} diff --git a/bitnami/jaeger/templates/migrate-job.yaml b/bitnami/jaeger/templates/migrate-job.yaml new file mode 100644 index 000000000..79078d88f --- /dev/null +++ b/bitnami/jaeger/templates/migrate-job.yaml @@ -0,0 +1,115 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "common.names.fullname" . }}-migrate + namespace: {{ .Release.Namespace }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: migration + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.migration.annotations "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + ttlSecondsAfterFinished: 30 + template: + metadata: + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: migration + {{- if .Values.migration.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.migration.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.migration.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.migration.podAnnotations "context" $) | nindent 8 }} + {{- end }} + spec: + restartPolicy: OnFailure + {{- if .Values.migration.podSecurityContext.enabled }} + securityContext: {{- omit .Values.migration.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + - name: jaeger-cassandra-schema-grabber + image: {{ include "jaeger.image" . }} + command: [ "cp", "-T", "-r", "/opt/bitnami/jaeger/cassandra-schema", "/cassandra-schema/" ] + volumeMounts: + - name: cassandra-schema + mountPath: "/cassandra-schema" + containers: + - name: jaeger-cassandra-migrator + image: {{ include "jaeger.cqlshImage" . }} + command: + - /bin/bash + args: + - -ec + - | + #!/bin/bash + + set -o errexit + set -o nounset + set -o pipefail + + . /opt/bitnami/scripts/libos.sh + + check_cassandra_connection() { + echo "SELECT 1" | cqlsh -u $CASSANDRA_USERNAME -p $CASSANDRA_PASSWORD -e "QUIT" + } + + + info "Connecting to the Cassandra instance $CQLSH_HOST:$CQLSH_PORT" + if ! retry_while "check_cassandra_connection" 12 30; then + error "Could not connect to the database server" + exit 1 + else + info "Connection check success" + sed -i 's/cqlsh -e "show version"/cqlsh -e "show version" -u $CASSANDRA_USERNAME -p $CASSANDRA_PASSWORD /' /cassandra-schema/create.sh + /cassandra-schema/docker.sh + fi + env: + - name: CQLSH + value: /opt/bitnami/cassandra/bin/cqlsh + - name: CQLSH_HOST + value: {{ include "jaeger.cassandra.host" . }} + - name: CQLSH_PORT + value: {{ include "jaeger.cassandra.port" . }} + - name: CASSANDRA_USERNAME + value: {{ include "jaeger.cassandra.user" . }} + - name: DATACENTER + value: {{ include "jaeger.cassandra.datacenter" . }} + - name: KEYSPACE + value: {{ include "jaeger.cassandra.keyspace" . }} + - name: CASSANDRA_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "jaeger.cassandra.secretName" . }} + key: {{ include "jaeger.cassandra.secretKey" . }} + {{- if or .Values.migration.extraEnvVarsCM .Values.migration.extraEnvVarsSecret }} + envFrom: + {{- if .Values.migration.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.migration.extraEnvVarsCM }} + {{- end }} + {{- if .Values.migration.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.migration.extraEnvVarsSecret }} + {{- end }} + {{- end }} + {{- if .Values.migration.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.migration.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: cassandra-schema + mountPath: "/cassandra-schema" + {{- if .Values.migration.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.migration.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.migration.resources }} + resources: {{- toYaml .Values.migration.resources | nindent 12 }} + {{- end }} + volumes: + - name: cassandra-schema + emptyDir: {} + {{- if .Values.migration.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.migration.extraVolumes "context" $) | nindent 6 }} + {{- end }} diff --git a/bitnami/jaeger/templates/query/deployment.yaml b/bitnami/jaeger/templates/query/deployment.yaml new file mode 100644 index 000000000..5e11ba669 --- /dev/null +++ b/bitnami/jaeger/templates/query/deployment.yaml @@ -0,0 +1,165 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "jaeger.query.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: query + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + replicas: {{ .Values.query.replicaCount }} + {{- if .Values.query.updateStrategy }} + strategy: {{- toYaml .Values.query.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: query + {{- if .Values.query.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.query.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.query.podAnnotations }} + annotations: + {{- if .Values.query.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.query.podAnnotations "context" $) | nindent 8 }} + {{- end }} + {{- end }} + spec: + {{- if .Values.query.schedulerName }} + schedulerName: {{ .Values.query.schedulerName }} + {{- end }} + priorityClassName: {{ .Values.query.priorityClassName | quote }} + {{- if .Values.query.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.query.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.query.podAffinityPreset "component" "query" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.query.podAntiAffinityPreset "component" "query" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.query.nodeAffinityPreset.type "key" .Values.query.nodeAffinityPreset.key "values" .Values.query.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.query.podSecurityContext.enabled }} + securityContext: {{- omit .Values.query.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.query.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.query.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.query.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.query.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.query.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.query.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + initContainers: + {{- include "jaeger.waitForDBInitContainer" . | nindent 8 }} + {{- if .Values.query.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.query.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: jaeger-query + image: {{ include "jaeger.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.query.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.query.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.query.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.query.command "context" $) | nindent 12 }} + {{- else }} + command: ["/opt/bitnami/jaeger/bin/jaeger-query"] + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.query.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.query.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.query.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.query.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + ports: + - name: ui + containerPort: {{ .Values.query.containerPorts.api }} + - name: admin + containerPort: {{ .Values.query.containerPorts.admin }} + env: + - name: CASSANDRA_SERVERS + value: {{ include "jaeger.cassandra.host" . }} + - name: CASSANDRA_PORT + value: {{ include "jaeger.cassandra.port" . }} + - name: CASSANDRA_USERNAME + value: {{ include "jaeger.cassandra.user" . }} + - name: CASSANDRA_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "jaeger.cassandra.secretName" . }} + key: {{ include "jaeger.cassandra.secretKey" . }} + - name: CASSANDRA_KEYSPACE + value: {{ include "jaeger.cassandra.keyspace" . }} + - name: CASSANDRA_DATACENTER + value: {{ include "jaeger.cassandra.datacenter" . }} + - name: QUERY_HTTP_SERVER_HOST_PORT + value: {{ printf ":%v" .Values.query.containerPorts.api | quote }} + - name: ADMIN_HTTP_HOST_PORT + value: {{ printf ":%v" .Values.query.containerPorts.admin | quote }} + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" .Values.image.debug | quote }} + {{- if .Values.query.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.query.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.query.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.query.extraEnvVarsCM }} + {{- end }} + {{- if .Values.query.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.query.extraEnvVarsSecret }} + {{- end }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.query.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.query.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.query.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.query.startupProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- if .Values.query.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.query.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.query.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.query.livenessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- if .Values.query.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.query.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.query.readinessProbe.enabled }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.query.readinessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: / + port: admin + {{- end }} + {{- end }} + {{- if .Values.query.resources }} + resources: {{- toYaml .Values.query.resources | nindent 12 }} + {{- end }} + {{- if .Values.query.extraVolumeMounts }} + {{- include "common.tplvalues.render" ( dict "value" .Values.query.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.query.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.query.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if .Values.query.extraVolumes }} + {{- include "common.tplvalues.render" ( dict "value" .Values.query.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/bitnami/jaeger/templates/query/service.yml b/bitnami/jaeger/templates/query/service.yml new file mode 100644 index 000000000..4ba7dced7 --- /dev/null +++ b/bitnami/jaeger/templates/query/service.yml @@ -0,0 +1,64 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "jaeger.query.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: query + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.query.service.annotations .Values.commonAnnotations }} + annotations: + {{- if .Values.query.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.query.service.annotations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- include "common.tplvalues.render" ( dict "value" .Values.query.service.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.query.service.type }} + {{- if and (eq .Values.query.service.type "LoadBalancer") (not (empty .Values.query.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.query.service.loadBalancerIP }} + {{- end }} + {{- if and (eq .Values.query.service.type "LoadBalancer") (not (empty .Values.query.service.loadBalancerSourceRanges)) }} + loadBalancerSourceRanges: {{ .Values.query.service.loadBalancerSourceRanges }} + {{- end }} + {{- if and .Values.query.service.clusterIP (eq .Values.query.service.type "ClusterIP") }} + clusterIP: {{ .Values.query.service.clusterIP }} + {{- end }} + {{- if .Values.query.service.sessionAffinity }} + sessionAffinity: {{ .Values.query.service.sessionAffinity }} + {{- end }} + {{- if .Values.query.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.query.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + {{- if or (eq .Values.query.service.type "LoadBalancer") (eq .Values.query.service.type "NodePort") }} + externalTrafficPolicy: {{ .Values.query.service.externalTrafficPolicy | quote }} + {{- end }} + ports: + - name: api + port: {{ .Values.query.service.ports.api }} + targetPort: {{ .Values.query.containerPorts.api }} + {{- if and (or (eq .Values.query.service.type "NodePort") (eq .Values.query.service.type "LoadBalancer")) (not (empty .Values.query.service.nodePorts.api)) }} + nodePort: {{ .Values.query.service.nodePorts.api }} + {{- else if eq .Values.query.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: admin + port: {{ .Values.query.service.ports.admin }} + targetPort: {{ .Values.query.containerPorts.admin }} + {{- if and (or (eq .Values.query.service.type "NodePort") (eq .Values.query.service.type "LoadBalancer")) (not (empty .Values.query.service.nodePorts.admin)) }} + nodePort: {{ .Values.query.service.nodePorts.admin }} + {{- else if eq .Values.query.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if .Values.query.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.query.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: query diff --git a/bitnami/jaeger/templates/query/serviceaccount.yaml b/bitnami/jaeger/templates/query/serviceaccount.yaml new file mode 100644 index 000000000..5b5223b07 --- /dev/null +++ b/bitnami/jaeger/templates/query/serviceaccount.yaml @@ -0,0 +1,21 @@ +{{- if .Values.query.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "jaeger.query.serviceAccountName" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/part-of: jaeger + app.kubernetes.io/component: query + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.query.serviceAccount.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.query.serviceAccount.annotations "context" $ ) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.query.serviceAccount.automountServiceAccountToken }} +{{- end }} diff --git a/bitnami/jaeger/values.yaml b/bitnami/jaeger/values.yaml new file mode 100644 index 000000000..d447c541a --- /dev/null +++ b/bitnami/jaeger/values.yaml @@ -0,0 +1,1175 @@ +## @section Global parameters +## Global Docker image parameters +## Please, note that this will override the image parameters, including dependencies, configured to use the global value +## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass +## + +## @param global.imageRegistry Global Docker image registry +## @param global.imagePullSecrets Global Docker registry secret names as an array +## @param global.storageClass Global StorageClass for Persistent Volume(s) +## +global: + imageRegistry: "" + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + ## + imagePullSecrets: [] + storageClass: "" + +## @section Common parameters +## + +## @param nameOverride String to partially override common.names.fullname +## +nameOverride: "" +## @param fullnameOverride String to fully override common.names.fullname +## +fullnameOverride: "" +## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set) +## +kubeVersion: "" +## @param commonLabels Labels to add to all deployed objects (sub-charts are not considered) +## +commonLabels: {} +## @param commonAnnotations Annotations to add to all deployed objects +## +commonAnnotations: {} +## Enable diagnostic mode in the deployment +## +diagnosticMode: + ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) + ## + enabled: false + ## @param diagnosticMode.command Command to override all containers in the deployment + ## + command: + - sleep + ## @param diagnosticMode.args Args to override all containers in the deployment + ## + args: + - infinity + +## @section Jaeger parameters +## + +## Bitnami Jaeger image +## ref: https://hub.docker.com/r/bitnami/jaeger/tags/ +## @param image.registry Jaeger image registry +## @param image.repository Jaeger image repository +## @param image.tag Jaeger image tag (immutable tags are recommended) +## @param image.digest Jaeger image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag +## @param image.pullPolicy image pull policy +## @param image.pullSecrets Jaeger image pull secrets +## @param image.debug Enable image debug mode +## +image: + registry: docker.io + repository: bitnami/jaeger + tag: 1.39.0-debian-11-r4 + digest: "" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Enable debug mode + ## + debug: false + +## @section Query deployment parameters +## + +query: + ## @param query.command Command for running the container (set to default if not set). Use array form + ## + command: [] + ## @param query.args Args for running the container (set to default if not set). Use array form + ## + args: [] + ## @param query.lifecycleHooks [object] Override default etcd container hooks + ## + lifecycleHooks: {} + ## @param query.extraEnvVars Extra environment variables to be set on jaeger container + ## For example: + ## - name: FOO + ## value: BAR + ## + extraEnvVars: [] + ## @param query.extraEnvVarsCM Name of existing ConfigMap containing extra env vars + ## + extraEnvVarsCM: "" + ## @param query.extraEnvVarsSecret Name of existing Secret containing extra env vars + ## + extraEnvVarsSecret: "" + ## @param query.replicaCount Number of Jaeger replicas + ## + replicaCount: 1 + ## Configure extra options for container's liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes + ## @param query.livenessProbe.enabled Enable livenessProbe on Query nodes + ## @param query.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param query.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param query.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param query.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param query.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param query.startupProbe.enabled Enable startupProbe on Query containers + ## @param query.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param query.startupProbe.periodSeconds Period seconds for startupProbe + ## @param query.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param query.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param query.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param query.readinessProbe.enabled Enable readinessProbe + ## @param query.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param query.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param query.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param query.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param query.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param query.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param query.customStartupProbe [object] Override default startup probe + ## + customStartupProbe: {} + ## @param query.customReadinessProbe [object] Override default readiness probe + ## + customReadinessProbe: {} + ## Jaeger pods' resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## Minimum memory for development is 4GB and 2 CPU cores + ## Minimum memory for production is 8GB and 4 CPU cores + ## ref: http://docs.datastax.com/en/archived/jaeger/2.0/jaeger/architecture/architecturePlanningHardware_c.html + ## + ## 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:'. + ## @param query.resources.limits The resources limits for Jaeger containers + ## @param query.resources.requests The requested resources for Jaeger containers + ## + resources: + ## Example: + ## limits: + ## cpu: 2 + ## memory: 4Gi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 2 + ## memory: 4Gi + ## + requests: {} + ## @param query.extraVolumeMounts Optionally specify extra list of additional volumeMounts for jaeger container + ## + extraVolumeMounts: [] + ## Container ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + containerPorts: + ## @param query.containerPorts.api Port for API + ## + api: 16686 + ## @param query.containerPorts.admin Port for admin + ## + admin: 16687 + ## Jaeger query.service parameters + ## + service: + ## @param query.service.type Jaeger service type + ## + type: ClusterIP + ## Ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ports: + ## @param query.service.ports.api Port for API + ## + api: 16686 + ## @param query.service.ports.admin Port for admin + ## + admin: 16687 + ## Node ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + nodePorts: + ## @param query.service.nodePorts.api Node port for API + ## + api: "" + ## @param query.service.nodePorts.admin Node port for admin + ## + admin: "" + ## @param query.service.extraPorts Extra ports to expose in the service (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param query.service.loadBalancerIP LoadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param query.service.loadBalancerSourceRanges Service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param query.service.clusterIP Service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: "" + ## @param query.service.externalTrafficPolicy Service external traffic policy + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param query.service.annotations Provide any additional annotations which may be required. + ## This can be used to set the LoadBalancer service type to internal only. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + annotations: {} + ## @param query.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param query.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## @param query.service.metrics.annotations [object] Annotations for Prometheus metrics + metrics: + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "{{ .Values.query.service.ports.admin }}" + prometheus.io/path: "/metrics" + ## Jaeger Query serviceAccount parameters + ## + serviceAccount: + ## @param query.serviceAccount.create Enables ServiceAccount + ## + create: true + ## @param query.serviceAccount.name ServiceAccount name + ## + name: "" + ## @param query.serviceAccount.annotations Annotations to add to all deployed objects + ## + annotations: {} + ## @param query.serviceAccount.automountServiceAccountToken Automount API credentials for a service account. + ## + automountServiceAccountToken: true + ## Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param query.podSecurityContext.enabled Enabled Jaeger pods' Security Context + ## @param query.podSecurityContext.fsGroup Set Jaeger pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context (only main container) + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param query.containerSecurityContext.enabled Enabled Jaeger containers' Security Context + ## @param query.containerSecurityContext.runAsUser Set Jaeger container's Security Context runAsUser + ## @param query.containerSecurityContext.runAsNonRoot Force the container to be run as non root + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## @param query.podAnnotations Additional pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param query.podLabels Additional pod labels + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param query.podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param query.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param query.nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param query.nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set + ## + key: "" + ## @param query.nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param query.priorityClassName Server priorityClassName + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param query.affinity Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param query.nodeSelector Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param query.tolerations Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param query.topologySpreadConstraints Topology Spread Constraints for pod assignment + ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## The value is evaluated as a template + ## + topologySpreadConstraints: [] + ## @param query.schedulerName Alternative scheduler + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param query.updateStrategy.type Jaeger query deployment strategy type + ## @param query.updateStrategy.rollingUpdate Jaeger query deployment rolling update configuration parameters + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy + ## + updateStrategy: + type: RollingUpdate + rollingUpdate: {} + ## @param query.extraVolumes Optionally specify extra list of additional volumes for jaeger container + ## + extraVolumes: [] + ## @param query.initContainers Add additional init containers to the jaeger pods + ## + initContainers: [] + ## @param query.sidecars Add additional sidecar containers to the jaeger pods + ## + sidecars: [] + +## @section Collector deployment parameters +## + +collector: + ## @param collector.command Command for running the container (set to default if not set). Use array form + ## + command: [] + ## @param collector.args Args for running the container (set to default if not set). Use array form + ## + args: [] + ## @param collector.lifecycleHooks [object] Override default etcd container hooks + ## + lifecycleHooks: {} + ## @param collector.extraEnvVars Extra environment variables to be set on jaeger container + ## For example: + ## - name: FOO + ## value: BAR + ## + extraEnvVars: [] + ## @param collector.extraEnvVarsCM Name of existing ConfigMap containing extra env vars + ## + extraEnvVarsCM: "" + ## @param collector.extraEnvVarsSecret Name of existing Secret containing extra env vars + ## + extraEnvVarsSecret: "" + ## @param collector.replicaCount Number of Jaeger replicas + ## + replicaCount: 1 + ## Configure extra options for container's liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes + ## @param collector.livenessProbe.enabled Enable livenessProbe on collector nodes + ## @param collector.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param collector.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param collector.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param collector.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param collector.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param collector.startupProbe.enabled Enable startupProbe on collector containers + ## @param collector.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param collector.startupProbe.periodSeconds Period seconds for startupProbe + ## @param collector.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param collector.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param collector.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param collector.readinessProbe.enabled Enable readinessProbe + ## @param collector.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param collector.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param collector.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param collector.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param collector.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param collector.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param collector.customStartupProbe [object] Override default startup probe + ## + customStartupProbe: {} + ## @param collector.customReadinessProbe [object] Override default readiness probe + ## + customReadinessProbe: {} + ## Jaeger pods' resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## Minimum memory for development is 4GB and 2 CPU cores + ## Minimum memory for production is 8GB and 4 CPU cores + ## ref: http://docs.datastax.com/en/archived/jaeger/2.0/jaeger/architecture/architecturePlanningHardware_c.html + ## + ## 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:'. + ## @param collector.resources.limits The resources limits for Jaeger containers + ## @param collector.resources.requests The requested resources for Jaeger containers + ## + resources: + ## Example: + ## limits: + ## cpu: 2 + ## memory: 4Gi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 2 + ## memory: 4Gi + ## + requests: {} + ## @param collector.extraVolumeMounts Optionally specify extra list of additional volumeMounts for jaeger container + ## + extraVolumeMounts: [] + ## Container ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + containerPorts: + ## @param collector.containerPorts.zipkin can accept Zipkin spans in Thrift, JSON and Proto (disabled by default) + ## + zipkin: 9411 + ## @param collector.containerPorts.grpc used by jaeger-agent to send spans in model.proto format + ## + grpc: 14250 + ## @param collector.containerPorts.binary can accept spans directly from clients in jaeger.thrift format over binary thrift protocol + ## + binary: 14268 + ## @param collector.containerPorts.admin Admin port: health check at / and metrics at /metrics + ## + admin: 14269 + ## Jaeger collector.service parameters + ## + service: + ## @param collector.service.type Jaeger service type + ## + type: ClusterIP + ## Ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ports: + ## @param collector.service.ports.zipkin can accept Zipkin spans in Thrift, JSON and Proto (disabled by default) + ## + zipkin: 9411 + ## @param collector.service.ports.grpc used by jaeger-agent to send spans in model.proto format + ## + grpc: 14250 + ## @param collector.service.ports.binary can accept spans directly from clients in jaeger.thrift format over binary thrift protocol + ## + binary: 14268 + ## @param collector.service.ports.admin Admin port: health check at / and metrics at /metrics + ## + admin: 14269 + ## Node ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + nodePorts: + ## @param collector.service.nodePorts.zipkin can accept Zipkin spans in Thrift, JSON and Proto (disabled by default) + ## + zipkin: "" + ## @param collector.service.nodePorts.grpc used by jaeger-agent to send spans in model.proto format + ## + grpc: "" + ## @param collector.service.nodePorts.binary can accept spans directly from clients in jaeger.thrift format over binary thrift protocol + ## + binary: "" + ## @param collector.service.nodePorts.admin Admin port: health check at / and metrics at /metrics + ## + admin: "" + ## @param collector.service.extraPorts Extra ports to expose in the service (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param collector.service.loadBalancerIP LoadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param collector.service.loadBalancerSourceRanges Service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param collector.service.clusterIP Service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: "" + ## @param collector.service.externalTrafficPolicy Service external traffic policy + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param collector.service.annotations Provide any additional annotations which may be required. + ## This can be used to set the LoadBalancer service type to internal only. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + annotations: {} + ## @param collector.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param collector.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## @param collector.service.metrics.annotations [object] Annotations for Prometheus metrics + metrics: + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "{{ .Values.collector.service.ports.admin }}" + prometheus.io/path: "/metrics" + ## Jaeger collector serviceAccount parameters + ## + serviceAccount: + ## @param collector.serviceAccount.create Enables ServiceAccount + ## + create: true + ## @param collector.serviceAccount.name ServiceAccount name + ## + name: "" + ## @param collector.serviceAccount.annotations Annotations to add to all deployed objects + ## + annotations: {} + ## @param collector.serviceAccount.automountServiceAccountToken Automount API credentials for a service account. + ## + automountServiceAccountToken: true + ## Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param collector.podSecurityContext.enabled Enabled Jaeger pods' Security Context + ## @param collector.podSecurityContext.fsGroup Set Jaeger pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context (only main container) + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param collector.containerSecurityContext.enabled Enabled Jaeger containers' Security Context + ## @param collector.containerSecurityContext.runAsUser Set Jaeger container's Security Context runAsUser + ## @param collector.containerSecurityContext.runAsNonRoot Force the container to be run as non root + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## @param collector.podAnnotations Additional pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param collector.podLabels Additional pod labels + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param collector.podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param collector.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param collector.nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param collector.nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set + ## + key: "" + ## @param collector.nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param collector.priorityClassName Server priorityClassName + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param collector.affinity Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param collector.nodeSelector Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param collector.tolerations Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param collector.topologySpreadConstraints Topology Spread Constraints for pod assignment + ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## The value is evaluated as a template + ## + topologySpreadConstraints: [] + ## @param collector.schedulerName Alternative scheduler + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param collector.updateStrategy.type Jaeger collector deployment strategy type + ## @param collector.updateStrategy.rollingUpdate Jaeger collector deployment rolling update configuration parameters + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy + ## + updateStrategy: + type: RollingUpdate + rollingUpdate: {} + ## @param collector.extraVolumes Optionally specify extra list of additional volumes for jaeger container + ## + extraVolumes: [] + ## @param collector.initContainers Add additional init containers to the jaeger pods + ## + initContainers: [] + ## @param collector.sidecars Add additional sidecar containers to the jaeger pods + ## + sidecars: [] + +## @section agent deployment parameters +## + +agent: + ## @param agent.command Command for running the container (set to default if not set). Use array form + ## + command: [] + ## @param agent.args Args for running the container (set to default if not set). Use array form + ## + args: [] + ## @param agent.lifecycleHooks [object] Override default etcd container hooks + ## + lifecycleHooks: {} + ## @param agent.extraEnvVars Extra environment variables to be set on jaeger container + ## For example: + ## - name: FOO + ## value: BAR + ## + extraEnvVars: [] + ## @param agent.extraEnvVarsCM Name of existing ConfigMap containing extra env vars + ## + extraEnvVarsCM: "" + ## @param agent.extraEnvVarsSecret Name of existing Secret containing extra env vars + ## + extraEnvVarsSecret: "" + ## @param agent.replicaCount Number of Jaeger replicas + ## + replicaCount: 1 + ## Configure extra options for container's liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes + ## @param agent.livenessProbe.enabled Enable livenessProbe on agent nodes + ## @param agent.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param agent.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param agent.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param agent.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param agent.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param agent.startupProbe.enabled Enable startupProbe on agent containers + ## @param agent.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param agent.startupProbe.periodSeconds Period seconds for startupProbe + ## @param agent.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param agent.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param agent.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param agent.readinessProbe.enabled Enable readinessProbe + ## @param agent.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param agent.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param agent.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param agent.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param agent.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param agent.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param agent.customStartupProbe [object] Override default startup probe + ## + customStartupProbe: {} + ## @param agent.customReadinessProbe [object] Override default readiness probe + ## + customReadinessProbe: {} + ## Jaeger pods' resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## Minimum memory for development is 4GB and 2 CPU cores + ## Minimum memory for production is 8GB and 4 CPU cores + ## ref: http://docs.datastax.com/en/archived/jaeger/2.0/jaeger/architecture/architecturePlanningHardware_c.html + ## + ## 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:'. + ## @param agent.resources.limits The resources limits for Jaeger containers + ## @param agent.resources.requests The requested resources for Jaeger containers + ## + resources: + ## Example: + ## limits: + ## cpu: 2 + ## memory: 4Gi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 2 + ## memory: 4Gi + ## + requests: {} + ## @param agent.extraVolumeMounts Optionally specify extra list of additional volumeMounts for jaeger container + ## + extraVolumeMounts: [] + ## Container ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + containerPorts: + ## @param agent.containerPorts.compact accept jaeger.thrift in compact Thrift protocol used by most current Jaeger clients + ## + compact: 6831 + ## @param agent.containerPorts.binary accept jaeger.thrift in binary Thrift protocol used by Node.js Jaeger client + ## + binary: 6832 + ## @param agent.containerPorts.config Serve configs, sampling strategies + ## + config: 5778 + ## @param agent.containerPorts.zipkin Accept zipkin.thrift in compact Thrift protocol (deprecated; only used by very old Jaeger clients, circa 2016) + ## + zipkin: 5775 + ## @param agent.containerPorts.admin Admin port: health check at / and metrics at /metrics + ## + admin: 14271 + ## Jaeger agent.service parameters + ## + service: + ## @param agent.service.type Jaeger service type + ## + type: ClusterIP + ## Ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ports: + ## @param agent.service.ports.compact accept jaeger.thrift in compact Thrift protocol used by most current Jaeger clients + ## + compact: 6831 + ## @param agent.service.ports.binary accept jaeger.thrift in binary Thrift protocol used by Node.js Jaeger client + ## + binary: 6832 + ## @param agent.service.ports.config Serve configs, sampling strategies + ## + config: 5778 + ## @param agent.service.ports.zipkin Accept zipkin.thrift in compact Thrift protocol (deprecated; only used by very old Jaeger clients, circa 2016) + ## + zipkin: 5775 + ## @param agent.service.ports.admin Admin port: health check at / and metrics at /metrics + ## + admin: 14271 + ## Node ports to expose + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + nodePorts: + ## @param agent.service.nodePorts.compact accept jaeger.thrift in compact Thrift protocol used by most current Jaeger clients + ## + compact: "" + ## @param agent.service.nodePorts.binary accept jaeger.thrift in binary Thrift protocol used by Node.js Jaeger client + ## + binary: "" + ## @param agent.service.nodePorts.config Serve configs, sampling strategies + ## + config: "" + ## @param agent.service.nodePorts.zipkin Accept zipkin.thrift in compact Thrift protocol (deprecated; only used by very old Jaeger clients, circa 2016) + ## + zipkin: "" + ## @param agent.service.nodePorts.admin Admin port: health check at / and metrics at /metrics + ## + admin: "" + ## @param agent.service.extraPorts Extra ports to expose in the service (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param agent.service.loadBalancerIP LoadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param agent.service.loadBalancerSourceRanges Service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param agent.service.clusterIP Service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: "" + ## @param agent.service.externalTrafficPolicy Service external traffic policy + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param agent.service.annotations Provide any additional annotations which may be required. + ## This can be used to set the LoadBalancer service type to internal only. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + annotations: {} + ## @param agent.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param agent.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## @param agent.service.metrics.annotations [object] Annotations for Prometheus metrics + metrics: + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "{{ .Values.agent.service.ports.admin }}" + prometheus.io/path: "/metrics" + ## Jaeger agent serviceAccount parameters + ## + serviceAccount: + ## @param agent.serviceAccount.create Enables ServiceAccount + ## + create: true + ## @param agent.serviceAccount.name ServiceAccount name + ## + name: "" + ## @param agent.serviceAccount.annotations Annotations to add to all deployed objects + ## + annotations: {} + ## @param agent.serviceAccount.automountServiceAccountToken Automount API credentials for a service account. + ## + automountServiceAccountToken: true + ## Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param agent.podSecurityContext.enabled Enabled Jaeger pods' Security Context + ## @param agent.podSecurityContext.fsGroup Set Jaeger pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context (only main container) + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param agent.containerSecurityContext.enabled Enabled Jaeger containers' Security Context + ## @param agent.containerSecurityContext.runAsUser Set Jaeger container's Security Context runAsUser + ## @param agent.containerSecurityContext.runAsNonRoot Force the container to be run as non root + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## @param agent.podAnnotations Additional pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param agent.podLabels Additional pod labels + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param agent.podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param agent.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param agent.nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param agent.nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set + ## + key: "" + ## @param agent.nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param agent.priorityClassName Server priorityClassName + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param agent.affinity Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param agent.nodeSelector Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param agent.tolerations Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param agent.topologySpreadConstraints Topology Spread Constraints for pod assignment + ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## The value is evaluated as a template + ## + topologySpreadConstraints: [] + ## @param agent.schedulerName Alternative scheduler + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param agent.updateStrategy.type Jaeger agent deployment strategy type + ## @param agent.updateStrategy.rollingUpdate Jaeger agent deployment rolling update configuration parameters + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy + ## + updateStrategy: + type: RollingUpdate + rollingUpdate: {} + ## @param agent.extraVolumes Optionally specify extra list of additional volumes for jaeger container + ## + extraVolumes: [] + ## @param agent.initContainers Add additional init containers to the jaeger pods + ## + initContainers: [] + ## @param agent.sidecars Add additional sidecar containers to the jaeger pods + ## + sidecars: [] + + +migration: + ## @param migration.podLabels Additional pod labels + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param migration.podAnnotations Additional pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param migration.annotations Provide any additional annotations which may be required. + ## This can be used to set the LoadBalancer service type to internal only. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + annotations: {} + ## Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param migration.podSecurityContext.enabled Enabled Jaeger pods' Security Context + ## @param migration.podSecurityContext.fsGroup Set Jaeger pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## @param migration.extraEnvVars Extra environment variables to be set on jaeger migration container + ## For example: + ## - name: FOO + ## value: BAR + ## + extraEnvVars: [] + ## @param migration.extraEnvVarsCM Name of existing ConfigMap containing extra env vars + ## + extraEnvVarsCM: "" + ## @param migration.extraEnvVarsSecret Name of existing Secret containing extra env vars + ## + extraEnvVarsSecret: "" + ## @param migration.extraVolumeMounts Optionally specify extra list of additional volumeMounts for jaeger container + ## + extraVolumeMounts: [] + ## Jaeger pods' resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## Minimum memory for development is 4GB and 2 CPU cores + ## Minimum memory for production is 8GB and 4 CPU cores + ## ref: http://docs.datastax.com/en/archived/jaeger/2.0/jaeger/architecture/architecturePlanningHardware_c.html + ## + ## 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:'. + ## @param migration.resources.limits The resources limits for Jaeger containers + ## @param migration.resources.requests The requested resources for Jaeger containers + ## + resources: + ## Example: + ## limits: + ## cpu: 2 + ## memory: 4Gi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 2 + ## memory: 4Gi + ## + requests: {} + ## @param migration.extraVolumes Optionally specify extra list of additional volumes for jaeger container + ## + extraVolumes: [] + +## @section Set the image to use for the migration job +## @param cqlshImage.registry Cassandra image registry +## @param cqlshImage.repository Cassandra image repository +## @param cqlshImage.tag Cassandra image tag (immutable tags are recommended) +## @param cqlshImage.digest Cassandra image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag +## @param cqlshImage.pullPolicy image pull policy +## @param cqlshImage.pullSecrets Cassandra image pull secrets +## @param cqlshImage.debug Enable image debug mode +## +cqlshImage: + registry: docker.io + repository: bitnami/cassandra + tag: 4.0-debian-11 + digest: "" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Enable debug mode + ## + debug: false + +externalDatabase: + ## @param externalDatabase.host External database host + host: "" + ## @param externalDatabase.port External database port + port: 9042 + ## Database credentials + ## @param externalDatabase.dbUser.user Cassandra admin user + ## @param externalDatabase.dbUser.password Password for `dbUser.user`. Randomly generated if empty + ## + dbUser: + user: bn_jaeger + password: "" + ## @param externalDatabase.existingSecret Name of existing secret containing the database secret + ## + existingSecret: "" + ## @param externalDatabase.existingSecretPasswordKey Name of existing secret key containing the database password secret key + ## + existingSecretPasswordKey: "" + ## Cluster parameters + ## @param externalDatabase.cluster.datacenter Name for cassandra's jaeger datacenter + ## + cluster: + datacenter: "dc1" + ## @param externalDatabase.keyspace Name for cassandra's jaeger keyspace + ## + keyspace: "bitnami_jaeger" + +## @section Cassandra storage sub-chart +## +cassandra: + ## @param cassandra.enabled Enables cassandra storage pod + ## + enabled: true + ## Cluster parameters + ## @param cassandra.cluster.datacenter Name for cassandra's jaeger datacenter + ## + cluster: + datacenter: "dc1" + ## @param cassandra.keyspace Name for cassandra's jaeger keyspace + ## + keyspace: "bitnami_jaeger" + ## Database credentials + ## @param cassandra.dbUser.user Cassandra admin user + ## @param cassandra.dbUser.password Password for `dbUser.user`. Randomly generated if empty + ## + dbUser: + user: bn_jaeger + password: "" + ## Cassandra service port + ## @param cassandra.service.ports.cql Cassandra cql port + service: + ports: + cql: 9042