@@ -29,9 +29,9 @@ connect to these products. Currently we expose some of these information, but no
29
29
product uses). On the other hand it could be the case that users have external services which Stackable services should
30
30
use, e.g. an non-stackable HDFS where an Stackable Trino should connect to.
31
31
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?
35
35
36
36
== Decision Drivers
37
37
@@ -100,13 +100,13 @@ spec:
100
100
authenticationSecretClass: client-kerberos
101
101
----
102
102
103
- ===== Pros
103
+ ===== * Pros*
104
104
105
105
* Easier to use for consuming applications outside of Stackable, as they can simply mount the CM or download it to a
106
106
file. On the other hand when we start to put in yaml objects that need to be parsed we would loose the benefit.
107
107
* Single API call to retrieve all running products
108
108
109
- ===== Cons
109
+ ===== * Cons*
110
110
111
111
* No complex structure such as enums (we can mitigate this by sticking in custom yaml into the CM). Users don't have any
112
112
form of validation when creating their own discovery CM e.g. pointing to their existing HDFS.
@@ -137,13 +137,13 @@ spec:
137
137
secretClass: client-tls # Use this SecretClass to obtain a keytab
138
138
----
139
139
140
- ===== Pros
140
+ ===== * Pros*
141
141
142
142
* Validation by using e.g. complex enums
143
143
* Commons structure can be shared between all operators, such as `Listener` endpoints or tls server certificate
144
144
information
145
145
146
- ===== Cons
146
+ ===== * Cons*
147
147
148
148
* Operator A needs to compile against operator B to have access to it's discovery struct. An alternative would be to put
149
149
the Discovery CRDs in operator-rs.
@@ -212,11 +212,13 @@ spec:
212
212
# No CM needed
213
213
----
214
214
215
- ===== Pros
215
+ ===== * Pros*
216
216
217
217
* Fixes mount problem from `Discovery Object: Use dedicated CRD object for every product`
218
218
219
- ===== Cons
219
+ ===== *Cons*
220
+
221
+ * Currently none
220
222
221
223
==== Discovery Object: Option 4 - Dedicated CRD Object shared between all Products
222
224
@@ -245,13 +247,13 @@ spec:
245
247
# ...
246
248
----
247
249
248
- ===== Pros
250
+ ===== * Pros*
249
251
250
252
* Only one struct in operator-rs => No cross-operator dependencies.
251
253
* Single API call to retrieve all stackable products. Question is if this really helps a lot, as callers probably also
252
254
are interested in the status of the product, which needs further API calls (irrelevant - see Cons).
253
255
254
- ===== Cons
256
+ ===== * Cons*
255
257
256
258
* All product discoveries are versioned together. E.g. a new mandatory field for hdfs requires all operators to bump the
257
259
Discovery CRD to `v2`. We hope that this does not happen too often.
@@ -265,11 +267,11 @@ spec:
265
267
Instead of writing discovery information to dedicated objects - such as CM or custom CR - we "simply" write the
266
268
discovery information to the status of the Cluster CR.
267
269
268
- ===== Pros
270
+ ===== * Pros*
269
271
270
272
* None currently
271
273
272
- ===== Cons
274
+ ===== * Cons*
273
275
274
276
* It does not enable users to bring their own product and talk to it from Stackable, e.g. a user-provided HDFS.
275
277
* 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
310
312
discovery: my-trino
311
313
----
312
314
313
- ===== Pros
315
+ ===== * Pros*
314
316
315
317
* Currently none
316
318
317
- ===== Cons
319
+ ===== * Cons*
318
320
319
321
* Currently none
320
322
@@ -350,14 +352,14 @@ backends: # Don't look at the Superset CRD structure, we are only interested in
350
352
tlsSecretClass: my-second-pki
351
353
----
352
354
353
- ===== Pros
355
+ ===== * Pros*
354
356
355
357
* Operator does not need to read/look at the DiscoveryConfig (as we can statically set up the secret-op tls secretClass
356
358
volumes rather than retrieving them from the DiscoveryConfig).
357
359
* Some clients only support a single pki, in that case we could not give the ability to overwrite the secretClass coming
358
360
from the product itself.
359
361
360
- ===== Cons
362
+ ===== * Cons*
361
363
362
364
* The client has to know what pki/secretClass the server is using.
363
365
* 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:
382
384
=== END CERTIFICATE ===
383
385
----
384
386
385
- ===== Pros
387
+ ===== * Pros*
386
388
387
389
* Easier for external clients to use as they don't need to know the concept of SecretClasses and don't even need to run
388
390
withing k8s.
389
391
* The client has to *not* know what pki/secretClass the server is using.
390
392
391
- ===== Cons
393
+ ===== * Cons*
392
394
393
395
* BIG QUESTION: How should the product operator get the CA cert from the SecretClass it uses to get the *server* cert
394
396
from?
@@ -426,11 +428,11 @@ backends: # Don't look at the Superset CRD structure, we are only interested in
426
428
tlsSecretClass: my-second-pki
427
429
----
428
430
429
- ===== Pros
431
+ ===== * Pros*
430
432
431
433
* Compromise with all usability and flexibility
432
434
433
- ===== Cons
435
+ ===== * Cons*
434
436
435
437
* Less secure by default
436
438
@@ -448,14 +450,14 @@ authentication:
448
450
authenticationClass: my-class
449
451
----
450
452
451
- ===== Pros
453
+ ===== * Pros*
452
454
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
455
457
now what SecretClass provides credentials accepted by LDAP. (Most cases it will be a user logging into a WebUI and the
456
458
LDAP credentials of the user are not even stored anywhere but just remembered by the user)
457
459
458
- ===== Cons
460
+ ===== * Cons*
459
461
460
462
* Operator has to read the AuthenticationClass to determine its type (pw/tls/keytab) and set up the needed volumes and
461
463
commands.
@@ -473,11 +475,11 @@ authentication:
473
475
secretClass: client-tls # Use this SecretClass to obtain your credentials (regardless of type of SecretClass)
474
476
----
475
477
476
- ===== Pros
478
+ ===== * Pros*
477
479
478
480
* Currently none
479
481
480
- ===== Cons
482
+ ===== * Cons*
481
483
482
484
* Operator has to read the SecretClass to determine its type (pw/tls/keytab) and set up the needed volumes and commands.
483
485
* Image then SecretClass is of type `k8sSearch`. The connection client (e.g. controlled via superset-operator) than has
@@ -499,24 +501,24 @@ authentication:
499
501
secretClass: client-kerberos # Use this SecretClass to obtain a keytab
500
502
----
501
503
502
- ===== Pros
504
+ ===== * Pros*
503
505
504
506
* Operator has *not* to read the SecretClass to determine its type (pw/tls/keytab), as the type is already encoded in
505
507
the Discovery config.
506
508
507
- ===== Cons
509
+ ===== * Cons*
508
510
509
511
* Currently none
510
512
511
513
==== Authentication: Option 4 - Provide no Authentication Information
512
514
513
515
Trino discovery does not provide any information on how to authenticate
514
516
515
- ===== Pros
517
+ ===== * Pros*
516
518
517
519
* Currently none
518
520
519
- ===== Cons
521
+ ===== * Cons*
520
522
521
523
* Not viable, as users need to know how to connect, and are not expected to try 50 different auth methods. We need to
522
524
give them a AuthenticationClass, that says them e.g. what LDAP or PKI is used.
0 commit comments