Skip to content

Commit

Permalink
[jaeger-v2] Add support for Elasticsearch (#617)
Browse files Browse the repository at this point in the history
* Jaeger allInOne allow different storage types (#603)

Signed-off-by: Reddysekhar Gaduputi <[email protected]>

upgrade jaeger-operator to latest 1.61.0 (#605)

Signed-off-by: Blair Bowden <[email protected]>

added all-in-one deployment and configmap for jaeger-v2

Signed-off-by: Mehul <[email protected]>

lint fix

Signed-off-by: Mehul <[email protected]>

fixed

Signed-off-by: Mehul <[email protected]>

lint fix

Signed-off-by: Mehul <[email protected]>

lint fix

Signed-off-by: Mehul <[email protected]>

fixed using pre-hook

Signed-off-by: Mehul <[email protected]>

fixed --config flag is not been passed

Signed-off-by: mehul <[email protected]>

release ns for config-map.yaml

Signed-off-by: mehul <[email protected]>

testing ci

Signed-off-by: mehul <[email protected]>

testing ci

Signed-off-by: mehul <[email protected]>

fixed ns

Signed-off-by: mehul <[email protected]>

fixed ns

Signed-off-by: mehul <[email protected]>

fixed template

Signed-off-by: mehul <[email protected]>

removed sampling

Signed-off-by: mehul <[email protected]>

removed adaptive sampling from processors

Signed-off-by: mehul <[email protected]>

Revert "Jaeger v2 test2"

Signed-off-by: mehul <[email protected]>

attempt to create v2 chart in v1

Signed-off-by: mehul <[email protected]>

enabled collector query and agent

Signed-off-by: mehul <[email protected]>

version bump

Signed-off-by: mehul <[email protected]>

testing-v2-ci

Signed-off-by: mehul <[email protected]>

testing-v2-ci

Signed-off-by: mehul <[email protected]>

added --helm-extra-set-args flag

Signed-off-by: mehul <[email protected]>

fixed healthcheck port-v2

Signed-off-by: mehul <[email protected]>

Fix health check path

Signed-off-by: Yuri Shkuro <[email protected]>

minor changes

Signed-off-by: mehul <[email protected]>

* minor changes

Signed-off-by: mehul <[email protected]>

* added image changes

Signed-off-by: mehul <[email protected]>

* fix lint

Signed-off-by: mehul <[email protected]>

* removed v1 allInOne and added jaeger-v2

Signed-off-by: mehul <[email protected]>

* removed v2 references

Signed-off-by: mehul <[email protected]>

* added allInOne again

Signed-off-by: mehul <[email protected]>

* minor fix

Signed-off-by: mehul <[email protected]>

* fixed how the config is being passed

Signed-off-by: mehul <[email protected]>

* fixed mirror template change

Signed-off-by: mehul <[email protected]>

* use --set-file for user config

Signed-off-by: mehul <[email protected]>

* removed config-test and updated configmap template

Signed-off-by: mehul <[email protected]>

* fixed

Signed-off-by: mehul <[email protected]>

* fixed minor naming

Signed-off-by: mehul <[email protected]>

* indentation

Signed-off-by: Yuri Shkuro <[email protected]>

* v2-elasticsearch

Signed-off-by: mehul <[email protected]>

* fix ci

Signed-off-by: mehul <[email protected]>

* fix ci

Signed-off-by: mehul <[email protected]>

* fixed

Signed-off-by: mehul <[email protected]>

* fixed and added docs

Signed-off-by: mehul <[email protected]>

* fixed

Signed-off-by: mehul <[email protected]>

* added port

Signed-off-by: mehul <[email protected]>

* fixed

Signed-off-by: mehul <[email protected]>

* fixed

Signed-off-by: mehul <[email protected]>

* fixed typo

Signed-off-by: mehul <[email protected]>

* fixed

Signed-off-by: mehul <[email protected]>

* removed test config

Signed-off-by: mehul <[email protected]>

* updated docs

Signed-off-by: mehul <[email protected]>

---------

Signed-off-by: mehul <[email protected]>
Signed-off-by: mehul gautam  <[email protected]>
Signed-off-by: mehul <[email protected]>
Signed-off-by: Yuri Shkuro <[email protected]>
Co-authored-by: Reddysekhar Gaduputi <[email protected]>
Co-authored-by: mehul <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
  • Loading branch information
4 people authored Nov 19, 2024
1 parent 6b4a59c commit e9655bc
Show file tree
Hide file tree
Showing 12 changed files with 267 additions and 44 deletions.
33 changes: 25 additions & 8 deletions .github/workflows/lint-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,29 @@ jobs:

- name: Run chart-testing (install)
run: |
ct install --config ct.yaml \
--helm-extra-set-args "
--set provisionDataStore.cassandra=false \
--set storage.type=memory \
--set allInOne.enabled=true \
--set agent.enabled=false \
--set collector.enabled=false \
--set query.enabled=false "
ct install --config ct.yaml
test-with-elasticsearch:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- uses: ./.github/actions/prepare-k8s

- name: Run chart-testing (install)
run: |
ct install --config ct.yaml \
--helm-extra-set-args " \
--set provisionDataStore.elasticsearch=true \
--set allInOne.enabled=false \
--set storage.type=elasticsearch \
--set elasticsearch.master.masterOnly=false \
--set elasticsearch.master.replicaCount=1 \
--set elasticsearch.data.replicaCount=0 \
--set elasticsearch.coordinating.replicaCount=0 \
--set elasticsearch.ingest.replicaCount=0
--set agent.enabled=true \
--set collector.enabled=true \
--set query.enabled=true"
4 changes: 2 additions & 2 deletions charts/jaeger/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ description: A Jaeger Helm chart for Kubernetes
name: jaeger
type: application
version: 4.0.0
annotations:
Jaegerv1Version: "1.62.0"
# CronJobs require v1.21
kubeVersion: ">= 1.21-0"
keywords:
Expand All @@ -16,8 +18,6 @@ icon: https://www.jaegertracing.io/img/jaeger-icon-reverse-color.svg
sources:
- https://hub.docker.com/u/jaegertracing/
maintainers:
- name: dvonthenen
email: [email protected]
- name: mehta-ankit
email: [email protected]
- name: mikelorant
Expand Down
109 changes: 109 additions & 0 deletions charts/jaeger/README-v2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@

---

# Jaeger Helm-chart Documentation

## Overview
This documentation provides step-by-step setup and configuration instructions for running Jaeger in various modes, with sections for both the `all-in-one` mode and the `Elasticsearch` configuration, followed by details on optional `--set` flags for custom configurations.

---

### 1. Jaeger All-in-One Mode

Jaeger’s all-in-one mode combines the Jaeger Agent, Collector, and Query into a single pod for simplicity. Use this mode for testing or lightweight deployments.

#### **Command to Run All-in-One**

```bash
helm install <chart_name> charts/jaeger \
--set-file userconfig=path/to/configfile.yaml # Optional: user-specific config
```

- **Flags Explained**:
- `provisionDataStore.cassandra=false`: Disable Cassandra provision.
- `storage.type=memory`: Use in-memory storage (non-persistent).
- `allInOne.enabled=true`: Enable the all-in-one Jaeger setup.
- `agent.enabled=false`, `collector.enabled=false`, `query.enabled=false`: Disable separate components since they’re embedded in all-in-one.
- `userconfig`: Optional file for additional configuration.


---

### 2. Elasticsearch Mode with Provisioned Data Store

This mode configures Jaeger to store trace data in an Elasticsearch backend, suitable for production-level usage.

#### **Command to Run with Elasticsearch**

1. **Single Master Node Configuration**
For a basic setup with only one Elasticsearch master node, use this command:

```bash
helm install <chart_name> charts/jaeger \
--set provisionDataStore.elasticsearch=true \
--set allInOne.enabled=false \
--set storage.type=elasticsearch \
--set elasticsearch.master.masterOnly=false \
--set elasticsearch.master.replicaCount=1 \
--set elasticsearch.data.replicaCount=0 \
--set elasticsearch.coordinating.replicaCount=0 \
--set elasticsearch.ingest.replicaCount=0
--set agent.enabled=true \
--set collector.enabled=true \
--set query.enabled=true
--set-file userconfig=path/to/configfile.yaml # Optional: user-specific config
```

2. **Default Configuration**
For a more straightforward setup with default Elasticsearch configuration, use:

```bash
helm install <chart_name> charts/jaeger \
--set provisionDataStore.elasticsearch=true \
--set allInOne.enabled=false \
--set storage.type=elasticsearch \
--set agent.enabled=true \
--set collector.enabled=true \
--set query.enabled=true
--set-file userconfig=path/to/configfile.yaml # Optional: user-specific config
```

- **Flags Explained**:
- `provisionDataStore.cassandra=false`: Disable Cassandra provision.
- `provisionDataStore.elasticsearch=true`: Enable Elasticsearch as the storage.
- `storage.type=elasticsearch`: Use Elasticsearch for storage.
- **Single Master Node Settings** (optional for simplified configuration):
- `elasticsearch.master.masterOnly=false`
- `elasticsearch.master.replicaCount=1`
- `elasticsearch.data.replicaCount=0`
- `elasticsearch.coordinating.replicaCount=0`
- `elasticsearch.ingest.replicaCount=0`
- `userconfig`: Optional file for additional configuration.

---


### 3. Additional `--set` Configuration Options

For custom configurations, the following flags are commonly used. These cover primary Elasticsearch storage settings and additional archive configurations.

#### **Primary Storage Settings**
- `.Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.index_prefix`: Set the prefix for Elasticsearch indices.
- `.Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.host`: Specify the Elasticsearch host.
- `.Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.user`: Username for Elasticsearch authentication.
- `.Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.password`: Password for Elasticsearch authentication.

Here’s the updated documentation with the archive storage settings referenced and with similar flags specified for archive configurations.


#### **Archive Storage Settings**
- Similar flags for archive configurations can be used to manage archived trace data.

The `values.yaml` file shows archive configurations under `jaeger_storage` with the `archive_store` section for Elasticsearch. You can configure these with the following flags:

- `.Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.index_prefix`
- `.Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.server_urls`
- `.Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.username`
- `.Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.password`

---
3 changes: 2 additions & 1 deletion charts/jaeger/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,8 @@ Create pull secrets for ingester image
Create image name for agent image
*/}}
{{- define "agent.image" -}}
{{- include "renderImage" ( dict "imageRoot" .Values.agent.image "context" $ ) -}}
{{- $image := merge .Values.agent.image (dict "tag" .Chart.Annotations.Jaegerv1Version) -}}
{{- include "renderImage" ( dict "imageRoot" $image "context" $ ) -}}
{{- end -}}

{{/*
Expand Down
22 changes: 16 additions & 6 deletions charts/jaeger/templates/collector-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ spec:
url="{{ include "elasticsearch.client.url" . }}"
until [ "$(curl -s -o /dev/null -w '%{http_code}' "$url/_cluster/health")" = "200" ]; do
echo "Waiting for Elasticsearch at $url"
echo "$(curl -s "$url/_cluster/health")"
sleep 5
done
{{- end}}
Expand All @@ -64,6 +65,8 @@ spec:
image: {{ include "collector.image" . }}
imagePullPolicy: {{ .Values.collector.image.pullPolicy }}
args:
- "--config"
- "/etc/jaeger/user-config.yaml"
{{ include "extra.cmdArgs" ( dict "cmdlineParams" .Values.collector.cmdlineParams ) | nindent 10 }}
{{- if not .Values.ingester.enabled -}}
{{- include "storage.cmdArgs" . | nindent 10 }}
Expand Down Expand Up @@ -123,8 +126,8 @@ spec:
- containerPort: {{ .Values.collector.service.http.port }}
name: http
protocol: TCP
- containerPort: 14269
name: admin
- containerPort: 13133
name: healthcheck
protocol: TCP
{{- if .Values.collector.service.zipkin }}
- containerPort: {{ .Values.collector.service.zipkin.port }}
Expand All @@ -141,15 +144,19 @@ spec:
{{- end }}
readinessProbe:
httpGet:
path: /
port: admin
path: /status
port: healthcheck
scheme: HTTP
livenessProbe:
httpGet:
path: /
port: admin
path: /status
port: healthcheck
scheme: HTTP
resources:
{{- toYaml .Values.collector.resources | nindent 10 }}
volumeMounts:
- name: user-config
mountPath: /etc/jaeger
{{- range .Values.collector.extraConfigmapMounts }}
- name: {{ .name }}
mountPath: {{ .mountPath }}
Expand Down Expand Up @@ -189,6 +196,9 @@ spec:
dnsPolicy: {{ .Values.collector.dnsPolicy }}
restartPolicy: Always
volumes:
- name: user-config
configMap:
name: user-config
{{- range .Values.collector.extraConfigmapMounts }}
- name: {{ .name }}
configMap:
Expand Down
2 changes: 1 addition & 1 deletion charts/jaeger/templates/collector-servicemonitor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ metadata:
{{- end }}
spec:
endpoints:
- port: admin
- port: healthcheck
path: /metrics
{{- if .Values.collector.serviceMonitor.interval }}
interval: {{ .Values.collector.serviceMonitor.interval }}
Expand Down
6 changes: 3 additions & 3 deletions charts/jaeger/templates/collector-svc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ spec:
protocol: TCP
targetPort: {{ .Values.collector.service.otlp.http.name }}
{{- end }}
- name: {{ .Values.collector.service.admin.name }}
port: 14269
targetPort: {{ .Values.collector.service.admin.targetPort }}
- name: {{ .Values.collector.service.healthCheck.name }}
port: 13133
targetPort: {{ .Values.collector.service.healthCheck.targetPort }}
selector:
{{- include "jaeger.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: collector
Expand Down
64 changes: 64 additions & 0 deletions charts/jaeger/templates/es-configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{{ if (and (not .Values.userconfig) .Values.provisionDataStore.elasticsearch) }}
apiVersion: v1
kind: ConfigMap
metadata:
name: user-config
namespace: {{ include "jaeger.namespace" . }}
labels:
{{- include "jaeger.labels" . | nindent 4 }}
data:
user-config.yaml: |
service:
extensions: [jaeger_storage, jaeger_query, healthcheckv2]
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [jaeger_storage_exporter]
extensions:
healthcheckv2:
use_v2: true
http:
endpoint: 0.0.0.0:13133
jaeger_query:
storage:
traces: primary_store
traces_archive: archive_store
jaeger_storage:
backends:
primary_store:
elasticsearch:
index_prefix: {{- .Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.index_prefix | quote | indent 2 }}
server_urls: ["{{ include "elasticsearch.client.url" . }}"]
username: {{- .Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.username | quote | indent 2 }}
{{- if .Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.password }}
password: {{- .Values.config.extensions.jaeger_storage.backends.primary_store.elasticsearch.password | quote | indent 2 }}
{{- end }}
archive_store:
elasticsearch:
index_prefix: {{- .Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.index_prefix | quote | indent 2 }}
server_urls: ["{{ include "elasticsearch.client.url" . }}"]
username: {{- .Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.username | quote | indent 2 }}
{{- if .Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.password }}
password: {{- .Values.config.extensions.jaeger_storage.backends.archive_store.elasticsearch.password | quote | indent 2 }}
{{- end }}
receivers:
otlp:
protocols:
grpc:
endpoint:{{ .Values.config.receivers.otlp.protocols.grpc.endpoint | indent 1 }}
http:
endpoint:{{ .Values.config.receivers.otlp.protocols.http.endpoint | indent 1 }}
processors:
batch:
exporters:
jaeger_storage_exporter:
trace_storage: primary_store
{{- end }}
21 changes: 15 additions & 6 deletions charts/jaeger/templates/query-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ spec:
image: {{ include "query.image" . }}
imagePullPolicy: {{ .Values.query.image.pullPolicy }}
args:
- "--config"
- "/etc/jaeger/user-config.yaml"
{{ include "extra.cmdArgs" ( dict "cmdlineParams" .Values.query.cmdlineParams ) | nindent 10 }}
{{- include "storage.cmdArgs" . | nindent 10 }}
env:
Expand Down Expand Up @@ -99,12 +101,14 @@ spec:
- name: grpc
containerPort: 16685
protocol: TCP
- name: admin
containerPort: 16687
- name: healthcheck
containerPort: 13133
protocol: TCP
resources:
{{- toYaml .Values.query.resources | nindent 10 }}
volumeMounts:
- name: user-config
mountPath: /etc/jaeger
{{- range .Values.query.extraSecretMounts }}
- name: {{ .name }}
mountPath: {{ .mountPath }}
Expand Down Expand Up @@ -143,12 +147,14 @@ spec:
{{- end }}
livenessProbe:
httpGet:
path: /
port: admin
path: /status
port: healthcheck
scheme: HTTP
readinessProbe:
httpGet:
path: /
port: admin
path: /status
port: healthcheck
scheme: HTTP
{{- if .Values.query.oAuthSidecar.enabled }}
- name: {{ template "jaeger.agent.name" . }}-oauth2-sidecar
securityContext:
Expand Down Expand Up @@ -247,6 +253,9 @@ spec:
dnsPolicy: {{ .Values.query.dnsPolicy }}
restartPolicy: Always
volumes:
- name: user-config
configMap:
name: user-config
{{- range .Values.query.extraConfigmapMounts }}
- name: {{ .name }}
configMap:
Expand Down
6 changes: 3 additions & 3 deletions charts/jaeger/templates/query-svc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ spec:
port: 16685
protocol: TCP
targetPort: grpc
- name: {{ .Values.query.service.admin.name }}
port: 16687
- name: {{ .Values.query.service.healthCheck.name }}
port: 13133
protocol: TCP
targetPort: {{ .Values.query.service.admin.targetPort }}
targetPort: {{ .Values.query.service.healthCheck.targetPort }}
selector:
{{- include "jaeger.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: query
Expand Down
1 change: 1 addition & 0 deletions charts/jaeger/templates/user-config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Generates a config map from a file provided by user via `--set-file userconfig=`
{{ if .Values.userconfig }}
apiVersion: v1
kind: ConfigMap
Expand Down
Loading

0 comments on commit e9655bc

Please sign in to comment.