github.com/microsoft/fabrikate@v1.0.0-alpha.1.0.20210115014322-dc09194d0885/testdata/generate/infra/fabrikate-jaeger/helm_repos/jaeger/README.md (about)

     1  # DEPRECATED Jaeger
     2  
     3  **This chart has been deprecated and moved to its new home:**
     4  
     5  - **GitHub repo:** https://github.com/jaegertracing/helm-charts
     6  - **Charts repo:** https://jaegertracing.github.io/helm-charts
     7  
     8  To add the repo:
     9  ```
    10  $ helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
    11  ```
    12  
    13  [Jaeger](http://jaeger.readthedocs.io/en/latest/) is a distributed tracing system.
    14  
    15  ## Introduction
    16  
    17  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.
    18  
    19  ## Prerequisites
    20  
    21  - Has been tested on Kubernetes 1.7+
    22    - The `spark` cron job requires [K8s CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) support:
    23      > 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)).
    24  
    25  - The Cassandra chart calls out the following requirements (default) for a test environment (please see the important note in the installation section):
    26  ```
    27  resources:
    28    requests:
    29      memory: 4Gi
    30      cpu: 2
    31    limits:
    32      memory: 4Gi
    33      cpu: 2
    34  ```
    35  - The Cassandra chart calls out the following requirements for a production environment:
    36  ```
    37  resources:
    38    requests:
    39      memory: 8Gi
    40      cpu: 2
    41    limits:
    42      memory: 8Gi
    43      cpu: 2
    44  ```
    45  
    46  - The ElasticSearch chart calls out the following requirements for a production environment:
    47  ```
    48  client:
    49    ...
    50    resources:
    51      limits:
    52        cpu: "1"
    53        # memory: "1024Mi"
    54      requests:
    55        cpu: "25m"
    56        memory: "512Mi"
    57  
    58  master:
    59    ...
    60    resources:
    61      limits:
    62        cpu: "1"
    63        # memory: "1024Mi"
    64      requests:
    65        cpu: "25m"
    66        memory: "512Mi"
    67  
    68  data:
    69    ...
    70    resources:
    71      limits:
    72        cpu: "1"
    73        # memory: "2048Mi"
    74      requests:
    75        cpu: "25m"
    76        memory: "1536Mi"
    77  ```
    78  
    79  ## Installing the Chart
    80  
    81  To install the chart with the release name `myrel`, run the following command:
    82  
    83  ```bash
    84  $ helm install incubator/jaeger --name myrel
    85  ```
    86  
    87  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.
    88  
    89  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:
    90  
    91  ```bash
    92  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
    93  ```
    94  
    95  > **Tip**: List all releases using `helm list`
    96  
    97  ## Installing the Chart using an Existing Cassandra Cluster
    98  
    99  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):
   100  
   101  ```bash
   102  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>
   103  ```
   104  
   105  > **Tip**: It is highly encouraged to run the Cassandra cluster with storage persistence.
   106  
   107  ## Installing the Chart using an Existing Cassandra Cluster with TLS
   108  
   109  If you already have an existing running Cassandra cluster with TLS, you can configure the chart as follows to use it as your backing store:
   110  
   111  Content of the `values.yaml` file:
   112  
   113  ```YAML
   114  storage:
   115    type: cassandra
   116    cassandra:
   117      host: <HOST>
   118      port: <PORT>
   119      user: <USER>
   120      password: <PASSWORD>
   121      tls:
   122        enabled: true
   123        secretName: cassandra-tls-secret
   124  
   125  provisionDataStore:
   126    cassandra: false
   127  ```
   128  
   129  Content of the `jaeger-tls-cassandra-secret.yaml` file:
   130  
   131  ```YAML
   132  apiVersion: v1
   133  kind: Secret
   134  metadata:
   135    name: cassandra-tls-secret
   136  data:
   137    commonName: <SERVER NAME>
   138    ca-cert.pem: |
   139      -----BEGIN CERTIFICATE-----
   140      <CERT>
   141      -----END CERTIFICATE-----
   142    client-cert.pem: |
   143      -----BEGIN CERTIFICATE-----
   144      <CERT>
   145      -----END CERTIFICATE-----
   146    client-key.pem: |
   147      -----BEGIN RSA PRIVATE KEY-----
   148      -----END RSA PRIVATE KEY-----
   149    cqlshrc: |
   150      [ssl]
   151      certfile = ~/.cassandra/ca-cert.pem
   152      userkey = ~/.cassandra/client-key.pem
   153      usercert = ~/.cassandra/client-cert.pem
   154  
   155  ```
   156  
   157  ```bash
   158  kubectl apply -f jaeger-tls-cassandra-secret.yaml
   159  helm install incubator/jaeger --name myrel --values values.yaml
   160  ```
   161  
   162  ## Installing the Chart using a New ElasticSearch Cluster
   163  
   164  To install the chart with the release name `myrel` using a new ElasticSearch cluster instead of Cassandra (default), run the following command:
   165  
   166  ```bash
   167  $ helm install incubator/jaeger --name myrel --set provisionDataStore.cassandra=false  --set provisionDataStore.elasticsearch=true --set storage.type=elasticsearch
   168  ```
   169  
   170  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.
   171  
   172  > **Tip**: If the ElasticSearch client nodes do not enter the running state, try --set elasticsearch.rbac.create=true
   173  
   174  ## Installing the Chart using an Existing ElasticSearch Cluster
   175  
   176  If you already have an existing running ElasticSearch cluster, you can configure the chart as follows to use it as your backing store:
   177  
   178  ```bash
   179  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>
   180  ```
   181  
   182  > **Tip**: It is highly encouraged to run the ElasticSearch cluster with storage persistence.
   183  
   184  
   185  ## Installing the Chart using an Existing ElasticSearch Cluster with TLS
   186  
   187  If you already have an existing running ElasticSearch cluster with TLS, you can configure the chart as follows to use it as your backing store:
   188  
   189  Content of the `jaeger-values.yaml` file:
   190  
   191  ```YAML
   192  storage:
   193    type: elasticsearch
   194    elasticsearch:
   195      host: <HOST>
   196      port: <PORT>
   197      scheme: https
   198      user: <USER>
   199      password: <PASSWORD>
   200  provisionDataStore:
   201    cassandra: false
   202    elasticsearch: false
   203  query:
   204    cmdlineParams:
   205      es.tls.ca: "/tls/es.pem"
   206    extraConfigmapMounts:
   207      - name: jaeger-tls
   208        mountPath: /tls
   209        subPath: ""
   210        configMap: jaeger-tls
   211        readOnly: true
   212  collector:
   213    cmdlineParams:
   214      es.tls.ca: "/tls/es.pem"
   215    extraConfigmapMounts:
   216      - name: jaeger-tls
   217        mountPath: /tls
   218        subPath: ""
   219        configMap: jaeger-tls
   220        readOnly: true
   221  ```
   222  
   223  Content of the `jaeger-tls-cfgmap.yaml` file:
   224  
   225  ```YAML
   226  apiVersion: v1
   227  kind: ConfigMap
   228  metadata:
   229    name: jaeger-tls
   230  data:
   231    es.pem: |
   232      -----BEGIN CERTIFICATE-----
   233      <CERT>
   234      -----END CERTIFICATE-----
   235  ```
   236  
   237  ```bash
   238  kubectl apply -f jaeger-tls-cfgmap.yaml
   239  helm install incubator/jaeger --name myrel --values jaeger-values.yaml
   240  ```
   241  
   242  ## Uninstalling the Chart
   243  
   244  To uninstall/delete the `myrel` deployment:
   245  
   246  ```bash
   247  $ helm delete myrel
   248  ```
   249  
   250  The command removes all the Kubernetes components associated with the chart and deletes the release.
   251  
   252  > **Tip**: To completely remove the release, run `helm delete --purge myrel`
   253  
   254  ## Configuration
   255  
   256  The following table lists the configurable parameters of the Jaeger chart and their default values.
   257  
   258  |             Parameter                    |            Description              |                  Default               |
   259  |------------------------------------------|-------------------------------------|----------------------------------------|
   260  | `agent.annotations`                      | Annotations for Agent               |  `nil`                                   |
   261  | `agent.cmdlineParams`                    | Additional command line parameters  |  `nil`                                   |
   262  | `agent.dnsPolicy`                        | Configure DNS policy for agents     |  `ClusterFirst`                          |
   263  | `agent.service.annotations`              | Annotations for Agent SVC           |  `nil`                                   |
   264  | `agent.service.binaryPort`               | jaeger.thrift over binary thrift    |  `6832`                                  |
   265  | `agent.service.compactPort`              | jaeger.thrift over compact thrift   |  `6831`                                  |
   266  | `agent.image`                            | Image for Jaeger Agent              |  `jaegertracing/jaeger-agent`            |
   267  | `agent.podAnnotations`                   | Annotations for Agent pod           |  `nil`                                   |
   268  | `agent.pullPolicy`                       | Agent image pullPolicy              |  `IfNotPresent`                          |
   269  | `agent.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`       |
   270  | `agent.service.annotations`              | Annotations for Agent SVC           |  `nil`                                   |
   271  | `agent.service.binaryPort`               | jaeger.thrift over binary thrift    |  `6832`                                  |
   272  | `agent.service.compactPort`              | jaeger.thrift over compact thrift   |  `6831`                                  |
   273  | `agent.service.zipkinThriftPort`         | zipkin.thrift over compact thrift   |  `5775`                                  |
   274  | `agent.useHostNetwork`                   | Enable hostNetwork for agents       |  `false`                                 |
   275  | `agent.tolerations`                      | Node Tolerations                    | `[]`                                   |
   276  | `collector.autoscaling.enabled`       | Enable horizontal pod autoscaling |  `false`                                   |
   277  | `collector.autoscaling.minReplicas`   | Minimum replicas |  2                                   |
   278  | `collector.autoscaling.maxReplicas`   | Maximum replicas |  10                                   |
   279  | `collector.autoscaling.targetCPUUtilizationPercentage` | Target CPU utilization |  80                                  |
   280  | `collector.autoscaling.targetMemoryUtilizationPercentage` | Target memory utilization |  `nil`                                   |
   281  | `collector.cmdlineParams`                | Additional command line parameters  |  `nil`                                   |
   282  | `collector.podAnnotations`               | Annotations for Collector pod       |  `nil`                                   |
   283  | `collector.service.httpPort`             | Client port for HTTP thrift         |  `14268`                                 |
   284  | `collector.service.annotations`          | Annotations for Collector SVC       |  `nil`                                   |
   285  | `collector.image`                        | Image for jaeger collector          |  `jaegertracing/jaeger-collector`        |
   286  | `collector.pullPolicy`                   | Collector image pullPolicy          |  `IfNotPresent`                          |
   287  | `collector.tolerations`                  | Node Tolerations                    | `[]`                                   |
   288  | `collector.service.annotations`          | Annotations for Collector SVC       |  `nil`                                   |
   289  | `collector.service.httpPort`             | Client port for HTTP thrift         |  `14268`                                 |
   290  | `collector.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`   |
   291  | `collector.service.tchannelPort`         | Jaeger Agent port for thrift        |  `14267`                                 |
   292  | `collector.service.type`                 | Service type                        |  `ClusterIP`                             |
   293  | `collector.service.zipkinPort`           | Zipkin port for JSON/thrift HTTP    |  `9411`                                  |
   294  | `collector.extraConfigmapMounts`         | Additional collector configMap mounts |  `[]`                                  |
   295  | `collector.samplingConfig`         | [Sampling strategies json file](https://www.jaegertracing.io/docs/latest/sampling/#collector-sampling-configuration) |  `nil`                                  |
   296  | `elasticsearch.rbac.create`              | To enable RBAC                      |  `false`                                 |
   297  | `fullnameOverride`                       | Override full name                  |  `nil`                                 |
   298  | `hotrod.enabled`                         | Enables the Hotrod demo app         |  `false`                                 |
   299  | `hotrod.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`      |
   300  | `nameOverride`                           | Override name                       | `nil`                                  |
   301  | `provisionDataStore.cassandra`           | Provision Cassandra Data Store      |  `true`                                  |
   302  | `provisionDataStore.elasticsearch`       | Provision Elasticsearch Data Store  |  `false`                                 |
   303  | `query.agentSidecar.enabled`              | Enable agent sidecare for query deployment           |  `true`                                  |
   304  | `query.service.annotations`              | Annotations for Query SVC           |  `nil`                                   |
   305  | `query.cmdlineParams`                    | Additional command line parameters  |  `nil`                                   |
   306  | `query.image`                            | Image for Jaeger Query UI           |  `jaegertracing/jaeger-query `           |
   307  | `query.ingress.enabled`                  | Allow external traffic access       |  `false`                                 |
   308  | `query.ingress.annotations`              | Configure annotations for Ingress   |  `{}`                                    |
   309  | `query.ingress.hosts`                    | Configure host for Ingress          |  `nil`                                   |
   310  | `query.ingress.tls`                      | Configure tls for Ingress           |  `nil`                                   |
   311  | `query.podAnnotations`                   | Annotations for Query pod           |  `nil`                                   |
   312  | `query.pullPolicy`                       | Query UI image pullPolicy           |  `IfNotPresent`                          |
   313  | `query.tolerations`                      | Node Tolerations                    | `[]`                                   |
   314  | `query.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`       |
   315  | `query.service.port`                | External accessible port            |  `80`                                    |
   316  | `query.service.type`                     | Service type                        |  `ClusterIP`                             |
   317  | `query.basePath`                         | Base path of Query UI, used for ingress as well (if it is enabled)   |  `/`    |
   318  | `query.extraConfigmapMounts`             | Additional query configMap mounts   |  `[]`                                    |
   319  | `schema.annotations`                     | Annotations for the schema job      |  `nil`                                   |
   320  | `schema.extraConfigmapMounts`            | Additional cassandra schema job configMap mounts |  `[]`                                  |
   321  | `schema.image`                           | Image to setup cassandra schema     |  `jaegertracing/jaeger-cassandra-schema` |
   322  | `schema.mode`                            | Schema mode (prod or test)          |  `prod`                                  |
   323  | `schema.pullPolicy`                      | Schema image pullPolicy             |  `IfNotPresent`                          |
   324  | `schema.activeDeadlineSeconds`           | Deadline in seconds for cassandra schema creation job to complete |  `120`                            |
   325  | `schema.traceTtl`                     | Time to live for trace data in seconds      |  `nil`                                |
   326  | `schema.keyspace`                     | Set explicit keyspace name      |  `nil`                                |
   327  | `schema.dependenciesTtl`              | Time to live for dependencies data in seconds  |  `nil`                          |
   328  | `serviceAccounts.agent.create`              | Create service account   |  `true`                                  |
   329  | `serviceAccounts.agent.name`              | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template  |  ``                                  |
   330  | `serviceAccounts.cassandraSchema.create`              | Create service account   |  `true`                                  |
   331  | `serviceAccounts.cassandraSchema.name`              | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template  |  ``                                  |
   332  | `serviceAccounts.collector.create`              | Create service account   |  `true`                                  |
   333  | `serviceAccounts.collector.name`              | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template  |  ``                                  |
   334  | `serviceAccounts.hotrod.create`              | Create service account   |  `true`                                  |
   335  | `serviceAccounts.hotrod.name`              | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template  |  ``                                  |
   336  | `serviceAccounts.query.create`              | Create service account   |  `true`                                  |
   337  | `serviceAccounts.query.name`              | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template  |  ``                                  |
   338  | `serviceAccounts.spark.create`              | Create service account   |  `true`                                  |
   339  | `serviceAccounts.spark.name`              | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template  |  ``                                  |
   340  | `spark.enabled`                          | Enables the dependencies job        |  `false`                                 |
   341  | `spark.image`                            | Image for the dependencies job      |  `jaegertracing/spark-dependencies`      |
   342  | `spark.pullPolicy`                       | Image pull policy of the deps image |  `Always`                                |
   343  | `spark.schedule`                         | Schedule of the cron job            |  `"49 23 * * *"`                         |
   344  | `spark.successfulJobsHistoryLimit`       | Cron job successfulJobsHistoryLimit |  `5`                                     |
   345  | `spark.failedJobsHistoryLimit`           | Cron job failedJobsHistoryLimit     |  `5`                                     |
   346  | `spark.tag`                              | Tag of the dependencies job image   |  `latest`                                |
   347  | `spark.tolerations`                      | Node Tolerations                    | `[]`                                   |
   348  | `storage.cassandra.existingSecret`                 | Name of existing password secret object (for password authentication)          |  `nil`
   349  | `storage.cassandra.host`                 | Provisioned cassandra host          |  `cassandra`                             |
   350  | `storage.cassandra.password`             | Provisioned cassandra password  (ignored if storage.cassandra.existingSecret set)     |  `password`                              |
   351  | `storage.cassandra.port`                 | Provisioned cassandra port          |  `9042`                                  |
   352  | `storage.cassandra.tls.enabled`          | Provisioned cassandra TLS connection enabled |  `false`                                    |
   353  | `storage.cassandra.tls.secretName`       | Provisioned cassandra TLS connection existing secret name (possible keys in secret: `ca-cert.pem`, `client-key.pem`, `client-cert.pem`, `cqlshrc`, `commonName`) |  ``                                      |
   354  | `storage.cassandra.usePassword`                 | Use password          |  `true`                                 |
   355  | `storage.cassandra.user`                 | Provisioned cassandra username      |  `user`                                  |
   356  | `storage.elasticsearch.existingSecret`                 | Name of existing password secret object (for password authentication)          |  `nil`                                 |
   357  | `storage.elasticsearch.host`             | Provisioned elasticsearch host      |  `elasticsearch`                         |
   358  | `storage.elasticsearch.password`         | Provisioned elasticsearch password  (ignored if storage.elasticsearch.existingSecret set)  |  `changeme`                              |
   359  | `storage.elasticsearch.port`             | Provisioned elasticsearch port      |  `9200`                                  |
   360  | `storage.elasticsearch.scheme`           | Provisioned elasticsearch scheme    |  `http`                                  |
   361  | `storage.elasticsearch.usePassword`                 | Use password          |  `true`                                 |
   362  | `storage.elasticsearch.user`             | Provisioned elasticsearch user      |  `elastic`                               |
   363  | `storage.elasticsearch.nodesWanOnly`     | Only access specified es host       |  `false`                                 |
   364  | `storage.type`                           | Storage type (ES or Cassandra)      |  `cassandra`                             |
   365  | `tag`                                    | Image tag/version                   |  `1.15.1`                                 |
   366  
   367  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.
   368  
   369  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.
   370  
   371  Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
   372  
   373  ```bash
   374  $ helm install --name myrel \
   375      --set cassandra.config.rack_name=rack2 \
   376      incubator/jaeger
   377  ```
   378  
   379  Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart.
   380  
   381  ### Storage persistence
   382  
   383  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.
   384  
   385  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`
   386  
   387  ### Pending enhancements
   388  - [ ] Sidecar deployment support