|
4 | 4 |
|
5 | 5 | ## Introduction |
6 | 6 |
|
7 | | -This chart adds all components required to run Jaeger as described in the [jaeger-kubernetes](https://github.com/jaegertracing/jaeger-kubernetes) GitHub page for a production-like deployment. The chart default will deploy a new Cassandra cluster (using the [cassandra chart](https://github.com/kubernetes/charts/tree/master/incubator/cassandra)), but also supports using an existing Cassandra cluster, deploying a new ElasticSearch cluster (using the [elasticsearch chart](https://github.com/kubernetes/charts/tree/master/incubator/elasticsearch)), or connecting to an existing ElasticSearch cluster. Once the back storage available, the chart will deploy jaeger-agent as a DaemonSet and deploy the jaeger-collector and jaeger-query components as standard individual deployments. |
| 7 | +This chart adds all components required to run Jaeger as described in the [jaeger-kubernetes](https://github.com/jaegertracing/jaeger-kubernetes) GitHub page for a production-like deployment. The chart default will deploy a new Cassandra cluster (using the [cassandra chart](https://github.com/kubernetes/charts/tree/master/incubator/cassandra)), but also supports using an existing Cassandra cluster, deploying a new ElasticSearch cluster (using the [elasticsearch chart](https://github.com/elastic/helm-charts/tree/master/elasticsearch)), or connecting to an existing ElasticSearch cluster. Once the storage backend is available, the chart will deploy jaeger-agent as a DaemonSet and deploy the jaeger-collector and jaeger-query components as Deployments. |
8 | 8 |
|
9 | 9 | ## Installing the Chart |
10 | 10 |
|
11 | 11 | Add the Jaeger Tracing Helm repository: |
12 | 12 |
|
13 | 13 | ```bash |
14 | | -$ helm repo add jaegertracing https://jaegertracing.github.io/helm-charts |
| 14 | +helm repo add jaegertracing https://jaegertracing.github.io/helm-charts |
15 | 15 | ``` |
16 | 16 |
|
17 | 17 | To install the chart with the release name `jaeger`, run the following command: |
18 | 18 |
|
19 | 19 | ```bash |
20 | | -$ helm install jaeger jaegertracing/jaeger |
| 20 | +helm install jaeger jaegertracing/jaeger |
21 | 21 | ``` |
22 | 22 |
|
23 | | -After a few minutes, you should see a 3 node Cassandra instance, a Jaeger DaemonSet, a Jaeger Collector, and a Jaeger Query (UI) pod deployed into your Kubernetes cluster. |
| 23 | +By default, the chart deploys the following: |
| 24 | + |
| 25 | + - Jaeger Agent DaemonSet |
| 26 | + - Jaeger Collector Deployment |
| 27 | + - Jaeger Query (UI) Deployment |
| 28 | + - Cassandra StatefulSet |
| 29 | + |
| 30 | + |
24 | 31 |
|
25 | 32 | IMPORTANT NOTE: For testing purposes, the footprint for Cassandra can be reduced significantly in the event resources become constrained (such as running on your local laptop or in a Vagrant environment). You can override the resources required run running this command: |
26 | 33 |
|
27 | 34 | ```bash |
28 | | -helm install jaeger jaegertracing/jaeger --set cassandra.config.max_heap_size=1024M --set cassandra.config.heap_new_size=256M --set cassandra.resources.requests.memory=2048Mi --set cassandra.resources.requests.cpu=0.4 --set cassandra.resources.limits.memory=2048Mi --set cassandra.resources.limits.cpu=0.4 |
| 35 | +helm install jaeger jaegertracing/jaeger \ |
| 36 | + --set cassandra.config.max_heap_size=1024M \ |
| 37 | + --set cassandra.config.heap_new_size=256M \ |
| 38 | + --set cassandra.resources.requests.memory=2048Mi \ |
| 39 | + --set cassandra.resources.requests.cpu=0.4 \ |
| 40 | + --set cassandra.resources.limits.memory=2048Mi \ |
| 41 | + --set cassandra.resources.limits.cpu=0.4 |
29 | 42 | ``` |
30 | 43 |
|
31 | 44 | ## Installing the Chart using an Existing Cassandra Cluster |
32 | 45 |
|
33 | 46 | If you already have an existing running Cassandra cluster, you can configure the chart as follows to use it as your backing store (make sure you replace `<HOST>`, `<PORT>`, etc with your values): |
34 | 47 |
|
35 | 48 | ```bash |
36 | | -helm install jaeger jaegertracing/jaeger --set provisionDataStore.cassandra=false --set storage.cassandra.host=<HOST> --set storage.cassandra.port=<PORT> --set storage.cassandra.user=<USER> --set storage.cassandra.password=<PASSWORD> |
| 49 | +helm install jaeger jaegertracing/jaeger \ |
| 50 | + --set provisionDataStore.cassandra=false \ |
| 51 | + --set storage.cassandra.host=<HOST> \ |
| 52 | + --set storage.cassandra.port=<PORT> \ |
| 53 | + --set storage.cassandra.user=<USER> \ |
| 54 | + --set storage.cassandra.password=<PASSWORD> |
37 | 55 | ``` |
38 | 56 |
|
39 | 57 | ## Installing the Chart using an Existing Cassandra Cluster with TLS |
@@ -96,15 +114,24 @@ helm install jaeger jaegertracing/jaeger --values values.yaml |
96 | 114 | To install the chart with the release name `jaeger` using a new ElasticSearch cluster instead of Cassandra (default), run the following command: |
97 | 115 |
|
98 | 116 | ```bash |
99 | | -$ helm install jaeger jaegertracing/jaeger --set provisionDataStore.cassandra=false --set provisionDataStore.elasticsearch=true --set storage.type=elasticsearch |
| 117 | +helm install jaeger jaegertracing/jaeger \ |
| 118 | + --set provisionDataStore.cassandra=false \ |
| 119 | + --set provisionDataStore.elasticsearch=true \ |
| 120 | + --set storage.type=elasticsearch |
100 | 121 | ``` |
101 | 122 |
|
102 | 123 | ## Installing the Chart using an Existing Elasticsearch Cluster |
103 | 124 |
|
104 | | -A release can be configured as follows to use an existing Elasticsearch cluster as it as the storage backend: |
| 125 | +A release can be configured as follows to use an existing ElasticSearch cluster as it as the storage backend: |
105 | 126 |
|
106 | 127 | ```bash |
107 | | -helm install jaeger jaegertracing/jaeger --set provisionDataStore.cassandra=false --set storage.type=elasticsearch --set storage.elasticsearch.host=<HOST> --set storage.elasticsearch.port=<PORT> --set storage.elasticsearch.user=<USER> --set storage.elasticsearch.password=<password> |
| 128 | +helm install jaeger jaegertracing/jaeger \ |
| 129 | + --set provisionDataStore.cassandra=false \ |
| 130 | + --set storage.type=elasticsearch \ |
| 131 | + --set storage.elasticsearch.host=<HOST> \ |
| 132 | + --set storage.elasticsearch.port=<PORT> \ |
| 133 | + --set storage.elasticsearch.user=<USER> \ |
| 134 | + --set storage.elasticsearch.password=<password> |
108 | 135 | ``` |
109 | 136 |
|
110 | 137 | ## Installing the Chart using an Existing ElasticSearch Cluster with TLS |
@@ -164,17 +191,33 @@ kubectl apply -f jaeger-tls-cfgmap.yaml |
164 | 191 | helm install jaeger jaegertracing/jaeger --values jaeger-values.yaml |
165 | 192 | ``` |
166 | 193 |
|
167 | | -## Uninstalling the Chart |
| 194 | +## Installing the Chart with Ingester enabled |
| 195 | + |
| 196 | +The architecture illustrated below can be achieved by enabling the ingester component. When enabled, Cassandra or Elasticsearch (depending on the configured values) now becomes the ingester's storage backend, whereas Kafka becomes the storage backend of the collector service. |
| 197 | + |
| 198 | + |
| 199 | + |
168 | 200 |
|
169 | | -To uninstall/delete the `myrel` deployment: |
| 201 | +## Installing the Chart with Ingester enabled using a New Kafka Cluster |
| 202 | + |
| 203 | +To provision a new Kafka cluster along with jaeger-ingester: |
170 | 204 |
|
171 | 205 | ```bash |
172 | | -$ helm delete myrel |
| 206 | +helm install jaeger jaegertracing/jaeger \ |
| 207 | + --set provisionDataStore.kafka=true \ |
| 208 | + --set ingester.enabled=true |
173 | 209 | ``` |
174 | 210 |
|
175 | | -The command removes all the Kubernetes components associated with the chart and deletes the release. |
| 211 | +## Installing the Chart with Ingester using an existing Kafka Cluster |
| 212 | + |
| 213 | +You can use an exisiting Kafka cluster with jaeger too |
176 | 214 |
|
177 | | -> **Tip**: To completely remove the release, run `helm delete --purge myrel` |
| 215 | +```bash |
| 216 | +helm install jaeger jaegertracing/jaeger \ |
| 217 | + --set ingester.enabled=true \ |
| 218 | + --set storage.kafka.brokers={<BROKER1:PORT>,<BROKER2:PORT>} \ |
| 219 | + --set storage.kafka.topic=<TOPIC> |
| 220 | +``` |
178 | 221 |
|
179 | 222 | ## Configuration |
180 | 223 |
|
@@ -316,21 +359,5 @@ For more information about some of the tunable parameters that Cassandra provide |
316 | 359 |
|
317 | 360 | For more information about some of the tunable parameters that Jaeger provides, please visit the official [Jaeger repo](https://github.com/uber/jaeger) at GitHub.com. |
318 | 361 |
|
319 | | -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, |
320 | | - |
321 | | -```bash |
322 | | -$ helm install --name myrel \ |
323 | | - --set cassandra.config.rack_name=rack2 \ |
324 | | - jaegertracing/jaeger |
325 | | -``` |
326 | | - |
327 | | -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. |
328 | | - |
329 | | -### Storage persistence |
330 | | - |
331 | | -Jaeger itself is a stateful application that by default uses Cassandra to store all related data. That means this helm chart has a dependency on the Cassandra helm chart for its data persistence. To deploy Jaeger with storage persistence, please take a look at the [README.md](https://github.com/kubernetes/charts/tree/master/incubator/cassandra) for configuration details. |
332 | | - |
333 | | -Override any required configuration options in the Cassandra chart that is required and then enable persistence by setting the following option: `--set cassandra.persistence.enabled=true` |
334 | | - |
335 | 362 | ### Pending enhancements |
336 | 363 | - [ ] Sidecar deployment support |
0 commit comments