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