anchor.diff:          limits:
             memory: 16Gi
   ----
  +
  +.Storage example with persistent storage:
  +[source,yaml]
  +----
  +apiVersion: jaegertracing.io/v1
  +kind: Jaeger
  +metadata:
  +  name: simple-prod
  +spec:
  +  strategy: production
  +  storage:
  +    type: elasticsearch
  +    elasticsearch:
  +      nodeCount: 1
  +      storage: # <1>
  +        storageClassName: gp2
  +        size: 5Gi
  +      resources:
  +        requests:
  +          cpu: 200m
  +          memory: 4Gi
  +        limits:
  +          memory: 4Gi
  +      redundancyPolicy: ZeroRedundancy
  +----
  +
  +<1> Persistent storage configuration. In this case AWS `gp2` with `5Gi` size. When no value is specified, Jaeger uses `emptyDir`. The Elasticsearch Operator provisions `PersistentVolumeClaim` and `PersistentVolume` which are not removed with Jaeger instance. You can mount the same volumes if you create a Jaeger instance with the same name and namespace.
  +
  +
  +[id="jaeger-config-external-es_{context}"]
  +== Connecting to an existing Elasticsearch instance
  +
  +Jaeger also allows you to use an existing (self-provisioned) Elasticsearch cluster for storage.  You do this by specifying the URL of the existing cluster as the `spec:storage:options:es:server-urls` value in your configuration.
  +
  +.Restrictions
  +
  +* There can be only one Jaeger with self-provisioned Elasticsearch instance per namespace.
  +
  +[NOTE]
  +====
  +Red Hat does not provide support for your external Elasticsearch instance. You can review the tested integrations matrix on the link:https://access.redhat.com/articles/5381021[Customer Portal].
  +====
  +
  +The following configuration parameters are for an _external_ Elasticsearch instance, that is, an instance that was not created using the Elasticsearch Operator. You specify configuration options for external Elasticsearch under `spec:storage:options:es` in your configuration file.
  +
  +.General ES configuration parameters
  +[options="header"]
  +[cols="l, a, a, a"]
  +|===
  +|Parameter |Description |Values |Default value
  +|es:
  +  server-urls:
  +|URL of the Elasticsearch instance.
  +|The fully-qualified domain name of the Elasticsearch server.
  +|`http://elasticsearch.<namespace>.svc:9200`
  +
  +|es:
  +  max-doc-count:
  +|The maximum document count to return from an Elasticsearch query. This will also apply to aggregations. If you set both `es.max-doc-count` and `es.max-num-spans`, Elasticsearch will use the smaller value of the two.
  +|
  +|10000
  +
  +|es:
  +  max-num-spans:
  +|[*Deprecated* - Will be removed in a future release, use `es.max-doc-count` instead.] The maximum number of spans to fetch at a time, per query, in Elasticsearch. If you set both `es.max-num-spans` and `es.max-doc-count`, Elasticsearch will use the smaller value of the two.
  +|
  +|10000
  +
  +|es:
  +  max-span-age:
  +|The maximum lookback for spans in Elasticsearch.
  +|
  +|72h0m0s
  +
  +|es:
  +  sniffer:
  +|The sniffer configuration for Elasticsearch.  The client uses the sniffing process to find all nodes automatically. Disabled by default.
  +|`true`/ `false`
  +|`false`
  +
  +|es:
  +  sniffer-tls-enabled:
  +|Option to enable TLS when sniffing an Elasticsearch Cluster,  The client uses the sniffing process to find all nodes automatically.  Disabled by default
  +|`true`/ `false`
  +|`false`
  +
  +|es:
  +  timeout:
  +|Timeout used for queries. When set to zero there is no  timeout.
  +|
  +|0s
  +
  +|es:
  +  username:
  +|The username required by Elasticsearch. The basic authentication also loads CA if it is specified.  See also `es.password`.
  +|
  +|
  +
  +|es:
  +  password:
  +|The password required by Elasticsearch.   See also, `es.username`.
  +|
  +|
  +
  +|es:
  +  version:
  +|The major Elasticsearch version. If not specified, the value will be auto-detected from Elasticsearch.
  +|
  +|0
  +|===
  +
  +.ES data replication parameters
  +[options="header"]
  +[cols="l, a, a, a"]
  +|===
  +|Parameter |Description |Values |Default value
  +|es:
  +  num-replicas:
  +|The number of replicas per index in Elasticsearch.
  +|
  +|1
  +
  +|es:
  +  num-shards:
  +|The number of shards per index in Elasticsearch.
  +|
  +|5
  +|===
  +
  +.ES index configuration parameters
  +[options="header"]
  +[cols="l, a, a, a"]
  +|===
  +|Parameter |Description |Values |Default value
  +|es:
  +  create-index-templates:
  +|Automatically create index templates at application startup when set to `true`. When templates are installed manually, set to `false`.
  +|`true`/ `false`
  +|`true`
  +
  +|es:
  +  index-prefix:
  +|Optional prefix for Jaeger indices. For example, setting this to "production" creates indices named "production-jaeger-*".
  +|
  +|
  +|===
  +
  +.ES bulk processor configuration parameters
  +[options="header"]
  +[cols="l, a, a, a"]
  +|===
  +|Parameter |Description |Values |Default value
  +|es:
  +  bulk:
  +    actions:
  +|The number of requests that can be added to the queue before the bulk processor decides to commit updates to disk.
  +|
  +|1000
  +
  +//What is the default here?  The original text said "Set to zero to disable. By default, this is disabled."
  +|es:
  +  bulk:
  +    flush-interval:
  +|A `time.Duration` after which bulk requests are committed, regardless of other thresholds.  To disable the bulk processor flush interval, set this to zero.
  +|
  +|200ms
  +
  +|es:
  +  bulk:
  +    size:
  +|The number of bytes that the bulk requests can take up before the bulk processor decides to commit updates to disk.
  +|
  +|5000000
  +
  +|es:
  +  bulk:
  +    workers:
  +|The number of workers that are able to receive and commit bulk requests to Elasticsearch.
  +|
  +|1
  +|===
  +
  +.ES TLS configuration parameters
  +[options="header"]
  +[cols="l, a, a, a"]
  +|===
  +|Parameter |Description |Values |Default value
  +|es:
  +  tls:
  +    ca:
  +|Path to a TLS Certification Authority (CA) file used to verify the remote server(s).
  +|
  +|Will use the system truststore by default.
  +
  +|es:
  +  tls:
  +    cert:
  +|Path to a TLS Certificate file, used to identify this process to the remote server(s).
  +|
  +|
  +
  +|es:
  +  tls:
  +    enabled:
  +|Enable transport layer security (TLS) when talking to the remote server(s). Disabled by default.
  +|`true`/ `false`
  +|`false`
  +
  +|es:
  +  tls:
  +    key:
  +|Path to a TLS Private Key file, used to identify this process to the remote server(s).
  +|
  +|
  +
  +|es:
  +  tls:
  +    server-name:
  +|Override the expected TLS server name in the certificate of the remote server(s).
  +|
  +|
  +//Clarification of "if specified" for `token-file` and `username`, does that mean if this is set?  Or that it only loads the CA if one is specified (that is, if es.tls.ca has a value?)
  +|es:
  +  token-file:
  +|Path to a file containing the bearer token. This flag also loads the Certification Authority (CA) file if it is specified.
  +|
  +|
  +|===
  +
  +.ES archive configuration parameters
  +[options="header"]
  +[cols="l, a, a, a"]
  +|===
  +|Parameter |Description |Values |Default value
  +|es-archive:
  +  bulk:
  +    actions:
  +|The number of requests that can be added to the queue before the bulk processor decides to commit updates to disk.
  +|
  +|0
  +
  +//What is the default here?  The original text said "Set to zero to disable. By default, this is disabled."
  +|es-archive:
  +  bulk:
  +    flush-interval:
  +|A `time.Duration` after which bulk requests are committed, regardless of other thresholds.  To disable the bulk processor flush interval, set this to zero.
  +|
  +|0s
  +
  +|es-archive:
  +  bulk:
  +    size:
  +|The number of bytes that the bulk requests can take up before the bulk processor decides to commit updates to disk.
  +|
  +|0
  +
  +|es-archive:
  +  bulk:
  +    workers:
  +|The number of workers that are able to receive and commit bulk requests to Elasticsearch.
  +|
  +|0
  +
  +|es-archive:
  +  create-index-templates:
  +|Automatically create index templates at application startup when set to `true`. When templates are installed manually, set to `false`.
  +|`true`/ `false`
  +|`false`
  +
  +|es-archive:
  +  enabled:
  +|Enable extra storage.
  +|`true`/ `false`
  +|`false`
  +
  +|es-archive:
  +  index-prefix:
  +|Optional prefix for Jaeger indices. For example, setting this to "production" creates indices named "production-jaeger-*".
  +|
  +|
  +
  +|es-archive:
  +  max-doc-count:
  +|The maximum document count to return from an Elasticsearch query. This will also apply to aggregations.
  +|
  +|0
  +
  +|es-archive:
  +  max-num-spans:
  +|[*Deprecated* - Will be removed in a future release, use `es-archive.max-doc-count` instead.] The maximum number of spans to fetch at a time, per query, in Elasticsearch.
  +|
  +|0
  +
  +|es-archive:
  +  max-span-age:
  +|The maximum lookback for spans in Elasticsearch.
  +|
  +|0s
  +
  +|es-archive:
  +  num-replicas:
  +|The number of replicas per index in Elasticsearch.
  +|
  +|0
  +
  +|es-archive:
  +  num-shards:
  +|The number of shards per index in Elasticsearch.
  +|
  +|0
  +
  +|es-archive:
  +  password:
  +|The password required by Elasticsearch.   See also, `es.username`.
  +|
  +|
  +
  +|es-archive:
  +  server-urls:
  +|The comma-separated list of Elasticsearch servers.  Must be specified as fully qualified URLs, for example, `\http://localhost:9200`.
  +|
  +|
  +
  +|es-archive:
  +  sniffer:
  +|The sniffer configuration for Elasticsearch.  The client uses the sniffing process to find all nodes automatically. Disabled by default.
  +|`true`/ `false`
  +|`false`
  +
  +|es-archive:
  +  sniffer-tls-enabled:
  +|Option to enable TLS when sniffing an Elasticsearch Cluster,  The client uses the sniffing process to find all nodes automatically.  Disabled by default.
  +|`true`/ `false`
  +|`false`
  +
  +|es-archive:
  +  timeout:
  +|Timeout used for queries. When set to zero there is no  timeout.
  +|
  +|0s
  +
  +|es-archive:
  +  tls:
  +    ca:
  +|Path to a TLS Certification Authority (CA) file used to verify the remote server(s).
  +|
  +|Will use the system truststore by default.
  +
  +|es-archive:
  +  tls:
  +    cert:
  +|Path to a TLS Certificate file, used to identify this process to the remote server(s).
  +|
  +|
  +
  +|es-archive:
  +  tls:
  +    enabled:
  +|Enable transport layer security (TLS) when talking to the remote server(s). Disabled by default.
  +|`true`/ `false`
  +|`false`
  +
  +|es-archive:
  +  tls:
  +    key:
  +|Path to a TLS Private Key file, used to identify this process to the remote server(s).
  +|
  +|
  +
  +|es-archive:
  +  tls:
  +    server-name:
  +|Override the expected TLS server name in the certificate of the remote server(s).
  +|
  +|
  +
  +//Clarification of "if specified" for next two rows, does that mean if this is set?  Or that it only loads the CA if one is specified (that is, if es-archive.tls.ca has a value?)
  +|es-archive:
  +  token-file:
  +|Path to a file containing the bearer token. This flag also loads the Certification Authority (CA) file if it is specified.
  +|
  +|
  +
  +|es-archive:
  +  username:
  +|The username required by Elasticsearch. The basic authentication also loads CA if it is specified.  See also `es-archive.password`.
  +|
  +|
  +
  +|es-archive:
  +  version:
  +|The major Elasticsearch version. If not specified, the value will be auto-detected from Elasticsearch.
  +|
  +|0
  +|===
   
   
   .Storage example with volume mounts
  
positive.code:         secretName: quickstart-es-http-certs-public
  ----
  
  
  .Storage example with persistent storage:
  [source,yaml]
  ----
  apiVersion: jaegertracing.io/v1
  
negative.code: Minimum deployment = 16Gi*
  |
  
  |elasticsearch:
    redundancyPolicy:
  |Data replication policy defines how Elasticsearch shards are replicated across data nodes in the cluster. If not specified,the Jaeger Operator automatically determines the most appropriate replication based on number of nodes.
  |`ZeroRedundancy`(no replica shards), `SingleRedundancy`(one replica shard), `MultipleRedundancy`(each index is spread over half of the Data nodes), `FullRedundancy` (each index is fully replicated on every Data node in the cluster).
  |
  
  |
  3+|*Each Elasticsearch node can operate with a lower memory setting though this is NOT recommended for production deployments. For production use, you should have no less than 16Gi allocated to each Pod by default, but preferably allocate as much as you can, up to 64Gi per Pod.
  |===
  
  .Production storage example
  