Skip to content

Commit 071897b

Browse files
authored
Merge pull request #46088 from JStickler/OSSMDOC-554
OSSMDOC-554: Document new cert management settings for Elasticsearch.
2 parents e6b6e8d + 69a4662 commit 071897b

File tree

1 file changed

+117
-2
lines changed

1 file changed

+117
-2
lines changed

modules/distr-tracing-config-storage.adoc

Lines changed: 117 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,13 @@ Memory storage is only appropriate for development, testing, demonstrations, and
6565
[id="distributed-tracing-config-auto-provisioning-es_{context}"]
6666
== Auto-provisioning an Elasticsearch instance
6767
68-
When the `storage:type` is set to `elasticsearch` but there is no value set for `spec:storage:options:es:server-urls`, the {JaegerName} Operator uses the OpenShift Elasticsearch Operator to create an Elasticsearch cluster based on the configuration provided in the `storage` section of the custom resource file.
68+
When you deploy a Jaeger custom resource, the {JaegerName} Operator uses the OpenShift Elasticsearch Operator to create an Elasticsearch cluster based on the configuration provided in the `storage` section of the custom resource file. The {JaegerName} Operator will provision Elasticsearch if the following configurations are set:
69+
70+
* `spec.storage:type` is set to `elasticsearch`
71+
* `spec.storage.elasticsearch.doNotProvision` set to `false`
72+
* `spec.storage.options.es.server-urls` is not defined, that is, there is no connection to an Elasticsearch instance that was not provisioned by the Red Hat Elasticsearch Operator.
73+
74+
When provisioning Elasticsearch, the {JaegerName} Operator sets the Elasticsearch custom resource `name` to the value of `spec.storage.elasticsearch.name` from the Jaeger custom resource. If you do not specify a value for `spec.storage.elasticsearch.name`, the Operator uses `elasticsearch`.
6975
7076
.Restrictions
7177
@@ -84,6 +90,20 @@ The following configuration parameters are for a _self-provisioned_ Elasticsearc
8490
[cols="l, a, a, a"]
8591
|===
8692
|Parameter |Description |Values |Default value
93+
|elasticsearch:
94+
properties:
95+
doNotProvision:
96+
|Use to specify whether or not an Elasticsearch instance should be provisioned by the {JaegerName} Operator.
97+
|`true`/`false`
98+
|`true`
99+
100+
|elasticsearch:
101+
properties:
102+
name:
103+
|Name of the Elasticsearch instance. The {JaegerName} Operator uses the Elasticsearch instance specified in this parameter to connect to Elasticsearch.
104+
|string
105+
|`elasticsearch`
106+
87107
|elasticsearch:
88108
nodeCount:
89109
|Number of Elasticsearch nodes. For high availability use at least 3 nodes. Do not use 2 nodes as “split brain” problem can happen.
@@ -133,6 +153,12 @@ Minimum deployment = 16Gi*
133153
|`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).
134154
|
135155

156+
|elasticsearch:
157+
useCertManagement:
158+
|Use to specify whether or not {JaegerShortName} should use the certificate management feature of the Red Hat Elasticsearch Operator. This feature was added to {logging-title} 5.2 in {product-title} 4.7 and is the preferred setting for new Jaeger deployments.
159+
|`true`/`false`
160+
|`true`
161+
136162
|
137163
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.
138164
|===
@@ -189,7 +215,15 @@ spec:
189215
[id="distributed-tracing-config-external-es_{context}"]
190216
== Connecting to an existing Elasticsearch instance
191217
192-
You can use an existing Elasticsearch cluster for storage with {DTShortName}, that is, an instance that was not auto-provisioned by the {JaegerName} Operator. You do this by specifying the URL of the existing cluster as the `spec:storage:options:es:server-urls` value in your configuration.
218+
You can use an existing Elasticsearch cluster for storage with {DTShortName}. An existing Elasticsearch cluster, also known as an _external_ Elasticsearch instance, is an instance that was not installed by the {JaegerName} Operator or by the Red Hat Elasticsearch Operator.
219+
220+
When you deploy a Jaeger custom resource, the {JaegerName} Operator will not provision Elasticsearch if the following configurations are set:
221+
222+
* `spec.storage.elasticsearch.doNotProvision` set to `true`
223+
* `spec.storage.options.es.server-urls` has a value
224+
* `spec.storage.elasticsearch.name` has a value, or if the Elasticsearch instance name is `elasticsearch`.
225+
226+
The {JaegerName} Operator uses the Elasticsearch instance specified in `spec.storage.elasticsearch.name` to connect to Elasticsearch.
193227
194228
.Restrictions
195229
@@ -615,3 +649,84 @@ spec:
615649
<2> TLS configuration. In this case only CA certificate, but it can also contain es.tls.key and es.tls.cert when using mutual TLS.
616650
<3> Secret which defines environment variables ES_PASSWORD and ES_USERNAME. Created by kubectl create secret generic tracing-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic
617651
<4> Volume mounts and volumes which are mounted into all storage components.
652+
653+
[id="distr-tracing-manage-es-certificates_{context}"]
654+
= Managing certificates with Elasticsearch
655+
656+
You can create and manage certificates using the Red Hat Elasticsearch Operator. Managing certificates using the Red Hat Elasticsearch Operator also lets you use a single Elasticsearch cluster with multiple Jaeger Collectors.
657+
658+
[IMPORTANT]
659+
====
660+
Managing certificates with Elasticsearch is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production.
661+
662+
These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview/.
663+
====
664+
665+
Starting with version 2.4, the {JaegerName} Operator delegates certificate creation to the Red Hat Elasticsearch Operator by using the following annotations in the Elasticsearch custom resource:
666+
667+
* `logging.openshift.io/elasticsearch-cert-management: "true"`
668+
* `logging.openshift.io/elasticsearch-cert.jaeger-<shared-es-node-name>: "user.jaeger"`
669+
* `logging.openshift.io/elasticsearch-cert.curator-<shared-es-node-name>: "system.logging.curator"`
670+
671+
Where the `<shared-es-node-name>` is the name of the Elasticsearch node. For example, if you create an Elasticsearch node named `custom-es`, your custom resource might look like the following example.
672+
673+
.Example Elasticsearch CR showing annotations
674+
[source,yaml]
675+
----
676+
apiVersion: logging.openshift.io/v1
677+
kind: Elasticsearch
678+
metadata:
679+
annotations:
680+
logging.openshift.io/elasticsearch-cert-management: "true"
681+
logging.openshift.io/elasticsearch-cert.jaeger-custom-es: "user.jaeger"
682+
logging.openshift.io/elasticsearch-cert.curator-custom-es: "system.logging.curator"
683+
name: custom-es
684+
spec:
685+
managementState: Managed
686+
nodeSpec:
687+
resources:
688+
limits:
689+
memory: 16Gi
690+
requests:
691+
cpu: 1
692+
memory: 16Gi
693+
nodes:
694+
- nodeCount: 3
695+
proxyResources: {}
696+
resources: {}
697+
roles:
698+
- master
699+
- client
700+
- data
701+
storage: {}
702+
redundancyPolicy: ZeroRedundancy
703+
----
704+
705+
.Prerequisites
706+
707+
* {product-title} 4.7
708+
* {logging-title} 5.2
709+
* The Elasticsearch node and the Jaeger instances must be deployed in the same namespace. For example, `tracing-system`.
710+
711+
You enable certificate management by setting `spec.storage.elasticsearch.useCertManagement` to `true` in the Jaeger custom resource.
712+
713+
.Example showing `useCertManagement`
714+
[source,yaml]
715+
----
716+
apiVersion: jaegertracing.io/v1
717+
kind: Jaeger
718+
metadata:
719+
name: jaeger-prod
720+
spec:
721+
strategy: production
722+
storage:
723+
type: elasticsearch
724+
elasticsearch:
725+
name: custom-es
726+
doNotProvision: true
727+
useCertManagement: true
728+
----
729+
730+
The {JaegerName} Operator sets the Elasticsearch custom resource `name` to the value of `spec.storage.elasticsearch.name` from the Jaeger custom resource when provisioning Elasticsearch.
731+
732+
The certificates are provisioned by the Red Hat Elasticsearch Operator and the {JaegerName} Operator injects the certificates.

0 commit comments

Comments
 (0)