Skip to content

Commit 22737cb

Browse files
committed
More polish
1 parent b4bab29 commit 22737cb

File tree

2 files changed

+34
-31
lines changed

2 files changed

+34
-31
lines changed

modules/contributor/pages/adr/ADR028-discovery-revision.adoc

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ connect to these products. Currently we expose some of these information, but no
2929
product uses). On the other hand it could be the case that users have external services which Stackable services should
3030
use, e.g. an non-stackable HDFS where an Stackable Trino should connect to.
3131

32-
*Question 1:* How do we want to make products discoverable?
33-
*Question 2:* How should clients verify the identity of the server (e.g. the cert of the server)
34-
*Question 3:* How should clients authenticate themselves against the server?
32+
* *Question 1:* How do we want to make products discoverable?
33+
* *Question 2:* How should clients verify the identity of the server (e.g. the cert of the server)
34+
* *Question 3:* How should clients authenticate themselves against the server?
3535

3636
== Decision Drivers
3737

@@ -100,13 +100,13 @@ spec:
100100
authenticationSecretClass: client-kerberos
101101
----
102102

103-
===== Pros
103+
===== *Pros*
104104

105105
* Easier to use for consuming applications outside of Stackable, as they can simply mount the CM or download it to a
106106
file. On the other hand when we start to put in yaml objects that need to be parsed we would loose the benefit.
107107
* Single API call to retrieve all running products
108108

109-
===== Cons
109+
===== *Cons*
110110

111111
* No complex structure such as enums (we can mitigate this by sticking in custom yaml into the CM). Users don't have any
112112
form of validation when creating their own discovery CM e.g. pointing to their existing HDFS.
@@ -137,13 +137,13 @@ spec:
137137
secretClass: client-tls # Use this SecretClass to obtain a keytab
138138
----
139139

140-
===== Pros
140+
===== *Pros*
141141

142142
* Validation by using e.g. complex enums
143143
* Commons structure can be shared between all operators, such as `Listener` endpoints or tls server certificate
144144
information
145145

146-
===== Cons
146+
===== *Cons*
147147

148148
* Operator A needs to compile against operator B to have access to it's discovery struct. An alternative would be to put
149149
the Discovery CRDs in operator-rs.
@@ -212,11 +212,13 @@ spec:
212212
# No CM needed
213213
----
214214

215-
===== Pros
215+
===== *Pros*
216216

217217
* Fixes mount problem from `Discovery Object: Use dedicated CRD object for every product`
218218

219-
===== Cons
219+
===== *Cons*
220+
221+
* Currently none
220222

221223
==== Discovery Object: Option 4 - Dedicated CRD Object shared between all Products
222224

@@ -245,13 +247,13 @@ spec:
245247
# ...
246248
----
247249

248-
===== Pros
250+
===== *Pros*
249251

250252
* Only one struct in operator-rs => No cross-operator dependencies.
251253
* Single API call to retrieve all stackable products. Question is if this really helps a lot, as callers probably also
252254
are interested in the status of the product, which needs further API calls (irrelevant - see Cons).
253255

254-
===== Cons
256+
===== *Cons*
255257

256258
* All product discoveries are versioned together. E.g. a new mandatory field for hdfs requires all operators to bump the
257259
Discovery CRD to `v2`. We hope that this does not happen too often.
@@ -265,11 +267,11 @@ spec:
265267
Instead of writing discovery information to dedicated objects - such as CM or custom CR - we "simply" write the
266268
discovery information to the status of the Cluster CR.
267269

268-
===== Pros
270+
===== *Pros*
269271

270272
* None currently
271273

272-
===== Cons
274+
===== *Cons*
273275

274276
* It does not enable users to bring their own product and talk to it from Stackable, e.g. a user-provided HDFS.
275277
* It does not allow things such as a ZNode for Zookeeper as we either use the Zookeeper CR for discovery or we use a
@@ -310,11 +312,11 @@ backends: # Don't look at the Superset CRD structure, we are only interested in
310312
discovery: my-trino
311313
----
312314

313-
===== Pros
315+
===== *Pros*
314316

315317
* Currently none
316318

317-
===== Cons
319+
===== *Cons*
318320

319321
* Currently none
320322

@@ -350,14 +352,14 @@ backends: # Don't look at the Superset CRD structure, we are only interested in
350352
tlsSecretClass: my-second-pki
351353
----
352354

353-
===== Pros
355+
===== *Pros*
354356

355357
* Operator does not need to read/look at the DiscoveryConfig (as we can statically set up the secret-op tls secretClass
356358
volumes rather than retrieving them from the DiscoveryConfig).
357359
* Some clients only support a single pki, in that case we could not give the ability to overwrite the secretClass coming
358360
from the product itself.
359361

360-
===== Cons
362+
===== *Cons*
361363

362364
* The client has to know what pki/secretClass the server is using.
363365
* Superset TrinoConnection could not only say "Connect this Superset and this Trino", but need to say "using this ca.crt
@@ -382,13 +384,13 @@ endpoint:
382384
=== END CERTIFICATE ===
383385
----
384386

385-
===== Pros
387+
===== *Pros*
386388

387389
* Easier for external clients to use as they don't need to know the concept of SecretClasses and don't even need to run
388390
withing k8s.
389391
* The client has to *not* know what pki/secretClass the server is using.
390392

391-
===== Cons
393+
===== *Cons*
392394

393395
* BIG QUESTION: How should the product operator get the CA cert from the SecretClass it uses to get the *server* cert
394396
from?
@@ -426,11 +428,11 @@ backends: # Don't look at the Superset CRD structure, we are only interested in
426428
tlsSecretClass: my-second-pki
427429
----
428430

429-
===== Pros
431+
===== *Pros*
430432

431433
* Compromise with all usability and flexibility
432434

433-
===== Cons
435+
===== *Cons*
434436

435437
* Less secure by default
436438

@@ -448,14 +450,14 @@ authentication:
448450
authenticationClass: my-class
449451
----
450452

451-
===== Pros
453+
===== *Pros*
452454

453-
* IMPORTANT: This is the only thing the server can know (how he is verifying client identities). He can not recommend an
454-
SecretClass used to obtain the client credentials. E.g. he uses an LDAP AuthenticationClass, there is no way it can
455+
* *IMPORTANT:* This is the only thing the server can know (how he is verifying client identities). He can not recommend
456+
an SecretClass used to obtain the client credentials. E.g. he uses an LDAP AuthenticationClass, there is no way it can
455457
now what SecretClass provides credentials accepted by LDAP. (Most cases it will be a user logging into a WebUI and the
456458
LDAP credentials of the user are not even stored anywhere but just remembered by the user)
457459

458-
===== Cons
460+
===== *Cons*
459461

460462
* Operator has to read the AuthenticationClass to determine its type (pw/tls/keytab) and set up the needed volumes and
461463
commands.
@@ -473,11 +475,11 @@ authentication:
473475
secretClass: client-tls # Use this SecretClass to obtain your credentials (regardless of type of SecretClass)
474476
----
475477

476-
===== Pros
478+
===== *Pros*
477479

478480
* Currently none
479481

480-
===== Cons
482+
===== *Cons*
481483

482484
* Operator has to read the SecretClass to determine its type (pw/tls/keytab) and set up the needed volumes and commands.
483485
* Image then SecretClass is of type `k8sSearch`. The connection client (e.g. controlled via superset-operator) than has
@@ -499,24 +501,24 @@ authentication:
499501
secretClass: client-kerberos # Use this SecretClass to obtain a keytab
500502
----
501503

502-
===== Pros
504+
===== *Pros*
503505

504506
* Operator has *not* to read the SecretClass to determine its type (pw/tls/keytab), as the type is already encoded in
505507
the Discovery config.
506508

507-
===== Cons
509+
===== *Cons*
508510

509511
* Currently none
510512

511513
==== Authentication: Option 4 - Provide no Authentication Information
512514

513515
Trino discovery does not provide any information on how to authenticate
514516

515-
===== Pros
517+
===== *Pros*
516518

517519
* Currently none
518520

519-
===== Cons
521+
===== *Cons*
520522

521523
* Not viable, as users need to know how to connect, and are not expected to try 50 different auth methods. We need to
522524
give them a AuthenticationClass, that says them e.g. what LDAP or PKI is used.

modules/contributor/partials/current_adrs.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@
2424
**** xref:adr/ADR025-logging_architecture.adoc[]
2525
**** xref:adr/ADR026-affinities.adoc[]
2626
**** xref:adr/ADR027-status.adoc[]
27+
**** xref:adr/ADR028-discovery-revision.adoc[]

0 commit comments

Comments
 (0)