github.com/replicatedhq/ship@v0.55.0/integration/failing/init/jaeger-helm/expected/.ship/upstream/README.md (about)

     1  # Jaeger
     2  
     3  [Jaeger](http://jaeger.readthedocs.io/en/latest/) is a distributed tracing system.
     4  
     5  ## Introduction
     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.
     8  
     9  ## Prerequisites
    10  
    11  - Has been tested on Kubernetes 1.7+
    12    - The `spark` cron job requires [K8s CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) support:
    13      > You need a working Kubernetes cluster at version >= 1.8 (for CronJob). For previous versions of cluster (< 1.8) you need to explicitly enable `batch/v2alpha1` API by passing `--runtime-config=batch/v2alpha1=true` to the API server ([see Turn on or off an API version for your cluster for more](https://kubernetes.io/docs/admin/cluster-management/#turn-on-or-off-an-api-version-for-your-cluster)).
    14  
    15  - The Cassandra chart calls out the following requirements (default) for a test environment (please see the important note in the installation section):
    16  ```
    17  resources:
    18    requests:
    19      memory: 4Gi
    20      cpu: 2
    21    limits:
    22      memory: 4Gi
    23      cpu: 2
    24  ```
    25  - The Cassandra chart calls out the following requirements for a production environment:
    26  ```
    27  resources:
    28    requests:
    29      memory: 8Gi
    30      cpu: 2
    31    limits:
    32      memory: 8Gi
    33      cpu: 2
    34  ```
    35  
    36  - The ElasticSearch chart calls out the following requirements for a production environment:
    37  ```
    38  client:
    39    ...
    40    resources:
    41      limits:
    42        cpu: "1"
    43        # memory: "1024Mi"
    44      requests:
    45        cpu: "25m"
    46        memory: "512Mi"
    47  
    48  master:
    49    ...
    50    resources:
    51      limits:
    52        cpu: "1"
    53        # memory: "1024Mi"
    54      requests:
    55        cpu: "25m"
    56        memory: "512Mi"
    57  
    58  data:
    59    ...
    60    resources:
    61      limits:
    62        cpu: "1"
    63        # memory: "2048Mi"
    64      requests:
    65        cpu: "25m"
    66        memory: "1536Mi"
    67  ```
    68  
    69  ## Installing the Chart
    70  
    71  To install the chart with the release name `myrel`, run the following command:
    72  
    73  ```bash
    74  $ helm install incubator/jaeger --name myrel
    75  ```
    76  
    77  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.
    78  
    79  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:
    80  
    81  ```bash
    82  helm install incubator/jaeger --name myrel --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
    83  ```
    84  
    85  > **Tip**: List all releases using `helm list`
    86  
    87  ## Installing the Chart using an Existing Cassandra Cluster
    88  
    89  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):
    90  
    91  ```bash
    92  helm install incubator/jaeger --name myrel --set provisionDataStore.cassandra=false --set storage.cassandra.host=<HOST> --set storage.cassandra.port=<PORT> --set storage.cassandra.user=<USER> --set storage.cassandra.password=<PASSWORD>
    93  ```
    94  
    95  > **Tip**: It is highly encouraged to run the Cassandra cluster with storage persistence.
    96  
    97  ## Installing the Chart using a New ElasticSearch Cluster
    98  
    99  To install the chart with the release name `myrel` using a new ElasticSearch cluster instead of Cassandra (default), run the following command:
   100  
   101  ```bash
   102  $ helm install incubator/jaeger --name myrel --set provisionDataStore.cassandra=false  --set provisionDataStore.elasticsearch=true --set storage.type=elasticsearch
   103  ```
   104  
   105  After a few minutes, you should see 2 ElasticSearch client nodes, 2 ElasticSearch data nodes, 3 ElasticSearch master nodes, a Jaeger DaemonSet, a Jaeger Collector, and a Jaeger Query (UI) pod deployed into your Kubernetes cluster.
   106  
   107  > **Tip**: If the ElasticSearch client nodes do not enter the running state, try --set elasticsearch.rbac.create=true
   108  
   109  ## Installing the Chart using an Existing ElasticSearch Cluster
   110  
   111  If you already have an existing running ElasticSearch cluster, you can configure the chart as follows to use it as your backing store:
   112  
   113  ```bash
   114  helm install incubator/jaeger --name myrel --set provisionDataStore.cassandra=false --set provisionDataStore.elasticsearch=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>
   115  ```
   116  
   117  > **Tip**: It is highly encouraged to run the ElasticSearch cluster with storage persistence.
   118  
   119  
   120  ## Uninstalling the Chart
   121  
   122  To uninstall/delete the `myrel` deployment:
   123  
   124  ```bash
   125  $ helm delete myrel
   126  ```
   127  
   128  The command removes all the Kubernetes components associated with the chart and deletes the release.
   129  
   130  > **Tip**: To completely remove the release, run `helm delete --purge myrel`
   131  
   132  ## Configuration
   133  
   134  The following table lists the configurable parameters of the Jaeger chart and their default values.
   135  
   136  |             Parameter                    |            Description              |                  Default               |
   137  |------------------------------------------|-------------------------------------|----------------------------------------|
   138  | `agent.annotations`                      | Annotations for Agent               |  nil                                   |
   139  | `agent.cmdlineParams`                    | Additional command line parameters  |  nil                                   |
   140  | `agent.dnsPolicy`                        | Configure DNS policy for agents     |  ClusterFirst                          |
   141  | `agent.service.annotations`              | Annotations for Agent SVC           |  nil                                   |
   142  | `agent.service.binaryPort`               | jaeger.thrift over binary thrift    |  6832                                  |
   143  | `agent.service.compactPort`              | jaeger.thrift over compact thrift   |  6831                                  |
   144  | `agent.image`                            | Image for Jaeger Agent              |  jaegertracing/jaeger-agent            |
   145  | `agent.podAnnotations`                   | Annotations for Agent pod           |  nil                                   |
   146  | `agent.pullPolicy`                       | Agent image pullPolicy              |  IfNotPresent                          |
   147  | `agent.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`       |
   148  | `agent.service.annotations`              | Annotations for Agent SVC           |  nil                                   |
   149  | `agent.service.binaryPort`               | jaeger.thrift over binary thrift    |  6832                                  |
   150  | `agent.service.compactPort`              | jaeger.thrift over compact thrift   |  6831                                  |
   151  | `agent.service.zipkinThriftPort`         | zipkin.thrift over compact thrift   |  5775                                  |
   152  | `agent.useHostNetwork`                   | Enable hostNetwork for agents       |  false                                 |
   153  | `agent.tolerations`                      | Node Tolerations                    | `[]`                                   |
   154  | `cassandra.config.cluster_name`          | Cluster name                        |  jaeger                                |
   155  | `cassandra.config.dc_name`               | Datacenter name                     |  dc1                                   |
   156  | `cassandra.config.endpoint_snitch`       | Node discovery method               |  GossipingPropertyFileSnitch           |
   157  | `cassandra.config.rack_name`             | Rack name                           |  rack1                                 |
   158  | `cassandra.config.seed_size`             | Seed size                           |  1                                     |
   159  | `cassandra.image.tag`                    | The image tag/version               |  3.11                                  |
   160  | `cassandra.persistence.enabled`          | To enable storage persistence       |  false (Highly recommended to enable)  |
   161  | `collector.cmdlineParams`                | Additional command line parameters  |  nil                                   |
   162  | `collector.podAnnotations`               | Annotations for Collector pod       |  nil                                   |
   163  | `collector.service.httpPort`             | Client port for HTTP thrift         |  14268                                 |
   164  | `collector.service.annotations`          | Annotations for Collector SVC       |  nil                                   |
   165  | `collector.image`                        | Image for jaeger collector          |  jaegertracing/jaeger-collector        |
   166  | `collector.pullPolicy`                   | Collector image pullPolicy          |  IfNotPresent                          |
   167  | `collector.tolerations`                  | Node Tolerations                    | `[]`                                   |
   168  | `collector.service.annotations`          | Annotations for Collector SVC       |  nil                                   |
   169  | `collector.service.httpPort`             | Client port for HTTP thrift         |  14268                                 |
   170  | `collector.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`   |
   171  | `collector.service.tchannelPort`         | Jaeger Agent port for thrift        |  14267                                 |
   172  | `collector.service.type`                 | Service type                        |  ClusterIP                             |
   173  | `collector.service.zipkinPort`           | Zipkin port for JSON/thrift HTTP    |  9411                                  |
   174  | `elasticsearch.cluster.name`             | Elasticsearch cluster name          |  "tracing"                             |
   175  | `elasticsearch.data.persistence.enabled` | To enable storage persistence       |  false (Highly recommended to enable)  |
   176  | `elasticsearch.image.tag`                | Elasticsearch image tag             |  "5.4"                                 |
   177  | `elasticsearch.rbac.create`              | To enable RBAC                      |  false                                 |
   178  | `hotrod.enabled`                         | Enables the Hotrod demo app         |  false                                 |
   179  | `hotrod.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`      |
   180  | `provisionDataStore.cassandra`           | Provision Cassandra Data Store      |  true                                  |
   181  | `provisionDataStore.elasticsearch`       | Provision Elasticsearch Data Store  |  false                                 |
   182  | `query.service.annotations`              | Annotations for Query SVC           |  nil                                   |
   183  | `query.cmdlineParams`                    | Additional command line parameters  |  nil                                   |
   184  | `query.image`                            | Image for Jaeger Query UI           |  jaegertracing/jaeger-query            |
   185  | `query.ingress.enabled`                  | Allow external traffic access       |  false                                 |
   186  | `query.podAnnotations`                   | Annotations for Query pod           |  nil                                   |
   187  | `query.pullPolicy`                       | Query UI image pullPolicy           |  IfNotPresent                          |
   188  | `query.tolerations`                      | Node Tolerations                    | `[]`                                   |
   189  | `query.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`       |
   190  | `query.service.queryPort`                | External accessible port            |  80                                    |
   191  | `query.service.targetPort`               | Internal Query UI port              |  16686                                 |
   192  | `query.service.type`                     | Service type                        |  ClusterIP                             |
   193  | `schema.annotations`                     | Annotations for the schema job      |  nil                                   |
   194  | `schema.image`                           | Image to setup cassandra schema     |  jaegertracing/jaeger-cassandra-schema |
   195  | `schema.mode`                            | Schema mode (prod or test)          |  prod                                  |
   196  | `schema.pullPolicy`                      | Schema image pullPolicy             |  IfNotPresent                          |
   197  | `spark.enabled`                          | Enables the dependencies job        |  false                                 |
   198  | `spark.image`                            | Image for the dependencies job      |  jaegertracing/spark-dependencies      |
   199  | `spark.pullPolicy`                       | Image pull policy of the deps image |  Always                                |
   200  | `spark.schedule`                         | Schedule of the cron job            |  "49 23 * * *"                         |
   201  | `spark.successfulJobsHistoryLimit`       | Cron job successfulJobsHistoryLimit |  5                                     |
   202  | `spark.failedJobsHistoryLimit`           | Cron job failedJobsHistoryLimit     |  5                                     |
   203  | `spark.tag`                              | Tag of the dependencies job image   |  latest                                |
   204  | `spark.tolerations`                      | Node Tolerations                    | `[]`                                   |
   205  | `storage.cassandra.host`                 | Provisioned cassandra host          |  cassandra                             |
   206  | `storage.cassandra.password`             | Provisioned cassandra password      |  password                              |
   207  | `storage.cassandra.port`                 | Provisioned cassandra port          |  9042                                  |
   208  | `storage.cassandra.user`                 | Provisioned cassandra username      |  user                                  |
   209  | `storage.elasticsearch.host`             | Provisioned elasticsearch host      |  elasticsearch                         |
   210  | `storage.elasticsearch.password`         | Provisioned elasticsearch password  |  changeme                              |
   211  | `storage.elasticsearch.port`             | Provisioned elasticsearch port      |  9200                                  |
   212  | `storage.elasticsearch.scheme`           | Provisioned elasticsearch scheme    |  http                                  |
   213  | `storage.elasticsearch.user`             | Provisioned elasticsearch user      |  elastic                               |
   214  | `storage.elasticsearch.nodesWanOnly`     | Only access specified es host       |  false                                 |
   215  | `storage.type`                           | Storage type (ES or Cassandra)      |  cassandra                             |
   216  | `tag`                                    | Image tag/version                   |  1.4.1                                 |
   217  
   218  For more information about some of the tunable parameters that Cassandra provides, please visit the helm chart for [cassandra](https://github.com/kubernetes/charts/tree/master/incubator/cassandra) and the official [website](http://cassandra.apache.org/) at apache.org.
   219  
   220  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.
   221  
   222  Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
   223  
   224  ```bash
   225  $ helm install --name myrel \
   226      --set cassandra.config.rack_name=rack2 \
   227      incubator/jaeger
   228  ```
   229  
   230  Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart.
   231  
   232  ### Storage persistence
   233  
   234  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.
   235  
   236  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`
   237  
   238  ### Image tags
   239  
   240  Jaeger offers a multitude of [tags](https://hub.docker.com/u/jaegertracing/) for the various components used in this chart.
   241  
   242  ### Pending enhancements
   243  - [x] Use ConfigMap for configurable parameters
   244  - [x] Add the Hotrod example app
   245  - [x] Allow only some of the components to be installed
   246  - [x] Add support for the spark dependencies job (as a [k8s cronjob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/))
   247  - [x] Use `provisionDataStore` key in the values.yaml file instead of `tags` to configure data store provisioning.
   248  - [x] Refactor chart to remove unnecessary quotes
   249  - [x] Remove the command overrides of the docker images and use [environment variables configuration](http://jaeger.readthedocs.io/en/latest/deployment/#configuration) instead
   250  - [x] Fix hard-coded replica count
   251  - [x] Collector service works both as `NodePort` and `ClusterIP` service types
   252  - [ ] Sidecar deployment support