@r8s/crds 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/crds/certmanager-certificate.yaml +794 -0
  2. package/crds/certmanager-clusterissuer.yaml +3739 -0
  3. package/crds/clickhouse-installation.yaml +1847 -0
  4. package/crds/cnpg-cluster.yaml +6794 -0
  5. package/crds/cnpg-pooler.yaml +9311 -0
  6. package/crds/cnpg-scheduledbackup.yaml +191 -0
  7. package/crds/envoy-backendtrafficpolicy.yaml +1 -0
  8. package/crds/envoy-clienttrafficpolicy.yaml +1 -0
  9. package/crds/envoy-envoyproxy.yaml +1 -0
  10. package/crds/envoy-proxy.yaml +16626 -0
  11. package/crds/envoy-securitypolicy.yaml +1 -0
  12. package/crds/externaldns-endpoint.yaml +94 -0
  13. package/crds/gatewayapi-gateway.yaml +2253 -0
  14. package/crds/gatewayapi-httproute.yaml +5643 -0
  15. package/crds/keycloak-keycloak.yaml +3192 -0
  16. package/crds/keycloak-realmimport.yaml +2878 -0
  17. package/crds/logging-flow.yaml +1768 -0
  18. package/crds/logging-logging.yaml +16770 -0
  19. package/crds/logging-output.yaml +14658 -0
  20. package/crds/loki-lokistack.yaml +5390 -0
  21. package/crds/prometheus-alertmanager.yaml +10013 -0
  22. package/crds/prometheus-podmonitor.yaml +741 -0
  23. package/crds/prometheus-prometheus.yaml +13928 -0
  24. package/crds/prometheus-prometheusrule.yaml +267 -0
  25. package/crds/prometheus-scrapeconfig.yaml +12938 -0
  26. package/crds/prometheus-servicemonitor.yaml +764 -0
  27. package/crds/prometheus-thanosruler.yaml +9795 -0
  28. package/crds/redis-cluster.yaml +7862 -0
  29. package/crds/redis-failover.yaml +1 -0
  30. package/crds/redis-replication.yaml +5593 -0
  31. package/crds/velero-backups.yaml +630 -0
  32. package/crds/velero-backupstoragelocations.yaml +174 -0
  33. package/crds/velero-schedules.yaml +584 -0
  34. package/dist/generated/cert-manager.d.ts +873 -0
  35. package/dist/generated/cert-manager.d.ts.map +1 -0
  36. package/dist/generated/cert-manager.js +24 -0
  37. package/dist/generated/cert-manager.js.map +1 -0
  38. package/dist/generated/clickhouse.d.ts +692 -0
  39. package/dist/generated/clickhouse.d.ts.map +1 -0
  40. package/dist/generated/clickhouse.js +14 -0
  41. package/dist/generated/clickhouse.js.map +1 -0
  42. package/dist/generated/externaldns.d.ts +47 -0
  43. package/dist/generated/externaldns.d.ts.map +1 -0
  44. package/dist/generated/externaldns.js +14 -0
  45. package/dist/generated/externaldns.js.map +1 -0
  46. package/dist/generated/gateway.d.ts +2396 -0
  47. package/dist/generated/gateway.d.ts.map +1 -0
  48. package/dist/generated/gateway.js +34 -0
  49. package/dist/generated/gateway.js.map +1 -0
  50. package/dist/generated/index.d.ts +24 -0
  51. package/dist/generated/index.d.ts.map +1 -0
  52. package/dist/generated/index.js +61 -0
  53. package/dist/generated/index.js.map +1 -0
  54. package/dist/generated/keycloak.d.ts +1607 -0
  55. package/dist/generated/keycloak.d.ts.map +1 -0
  56. package/dist/generated/keycloak.js +24 -0
  57. package/dist/generated/keycloak.js.map +1 -0
  58. package/dist/generated/logging.d.ts +3487 -0
  59. package/dist/generated/logging.d.ts.map +1 -0
  60. package/dist/generated/logging.js +34 -0
  61. package/dist/generated/logging.js.map +1 -0
  62. package/dist/generated/loki.d.ts +578 -0
  63. package/dist/generated/loki.d.ts.map +1 -0
  64. package/dist/generated/loki.js +14 -0
  65. package/dist/generated/loki.js.map +1 -0
  66. package/dist/generated/monitoring.d.ts +4230 -0
  67. package/dist/generated/monitoring.d.ts.map +1 -0
  68. package/dist/generated/monitoring.js +74 -0
  69. package/dist/generated/monitoring.js.map +1 -0
  70. package/dist/generated/operators.d.ts +18 -0
  71. package/dist/generated/operators.d.ts.map +1 -0
  72. package/dist/generated/operators.js +191 -0
  73. package/dist/generated/operators.js.map +1 -0
  74. package/dist/generated/postgresql.d.ts +2820 -0
  75. package/dist/generated/postgresql.d.ts.map +1 -0
  76. package/dist/generated/postgresql.js +34 -0
  77. package/dist/generated/postgresql.js.map +1 -0
  78. package/dist/generated/redis.d.ts +1253 -0
  79. package/dist/generated/redis.d.ts.map +1 -0
  80. package/dist/generated/redis.js +24 -0
  81. package/dist/generated/redis.js.map +1 -0
  82. package/dist/generated/velero.d.ts +351 -0
  83. package/dist/generated/velero.d.ts.map +1 -0
  84. package/dist/generated/velero.js +34 -0
  85. package/dist/generated/velero.js.map +1 -0
  86. package/dist/index.d.ts +18 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +34 -0
  89. package/dist/index.js.map +1 -0
  90. package/operators.yaml +196 -0
  91. package/package.json +49 -0
@@ -0,0 +1,1847 @@
1
+ # Template Parameters:
2
+ #
3
+ # KIND=ClickHouseInstallation
4
+ # SINGULAR=clickhouseinstallation
5
+ # PLURAL=clickhouseinstallations
6
+ # SHORT=chi
7
+ # OPERATOR_VERSION=0.27.2
8
+ #
9
+ apiVersion: apiextensions.k8s.io/v1
10
+ kind: CustomResourceDefinition
11
+ metadata:
12
+ name: clickhouseinstallations.clickhouse.altinity.com
13
+ labels:
14
+ clickhouse.altinity.com/chop: 0.27.2
15
+ spec:
16
+ group: clickhouse.altinity.com
17
+ scope: Namespaced
18
+ names:
19
+ kind: ClickHouseInstallation
20
+ singular: clickhouseinstallation
21
+ plural: clickhouseinstallations
22
+ shortNames:
23
+ - chi
24
+ versions:
25
+ - name: v1
26
+ served: true
27
+ storage: true
28
+ additionalPrinterColumns:
29
+ - name: status
30
+ type: string
31
+ description: Resource status
32
+ jsonPath: .status.status
33
+ - name: version
34
+ type: string
35
+ description: Operator version
36
+ priority: 1 # show in wide view
37
+ jsonPath: .status.chop-version
38
+ - name: clusters
39
+ type: integer
40
+ description: Clusters count
41
+ jsonPath: .status.clusters
42
+ - name: shards
43
+ type: integer
44
+ description: Shards count
45
+ priority: 1 # show in wide view
46
+ jsonPath: .status.shards
47
+ - name: hosts
48
+ type: integer
49
+ description: Hosts count
50
+ jsonPath: .status.hosts
51
+ - name: taskID
52
+ type: string
53
+ description: TaskID
54
+ priority: 1 # show in wide view
55
+ jsonPath: .status.taskID
56
+ - name: hosts-completed
57
+ type: integer
58
+ description: Completed hosts count
59
+ jsonPath: .status.hostsCompleted
60
+ - name: hosts-updated
61
+ type: integer
62
+ description: Updated hosts count
63
+ priority: 1 # show in wide view
64
+ jsonPath: .status.hostsUpdated
65
+ - name: hosts-added
66
+ type: integer
67
+ description: Added hosts count
68
+ priority: 1 # show in wide view
69
+ jsonPath: .status.hostsAdded
70
+ - name: hosts-deleted
71
+ type: integer
72
+ description: Hosts deleted count
73
+ priority: 1 # show in wide view
74
+ jsonPath: .status.hostsDeleted
75
+ - name: endpoint
76
+ type: string
77
+ description: Client access endpoint
78
+ priority: 1 # show in wide view
79
+ jsonPath: .status.endpoint
80
+ - name: age
81
+ type: date
82
+ description: Age of the resource
83
+ # Displayed in all priorities
84
+ jsonPath: .metadata.creationTimestamp
85
+ - name: suspend
86
+ type: string
87
+ description: Suspend reconciliation
88
+ # Displayed in all priorities
89
+ jsonPath: .spec.suspend
90
+ subresources:
91
+ status: {}
92
+ schema:
93
+ openAPIV3Schema:
94
+ description: "define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more clusters"
95
+ type: object
96
+ required:
97
+ - spec
98
+ properties:
99
+ apiVersion:
100
+ description: |
101
+ APIVersion defines the versioned schema of this representation
102
+ of an object. Servers should convert recognized schemas to the latest
103
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
104
+ type: string
105
+ kind:
106
+ description: |
107
+ Kind is a string value representing the REST resource this
108
+ object represents. Servers may infer this from the endpoint the client
109
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
110
+ type: string
111
+ metadata:
112
+ type: object
113
+ status:
114
+ type: object
115
+ description: |
116
+ Status contains many fields like a normalized configuration, clickhouse-operator version, current action and all applied action list, current taskID and all applied taskIDs and other
117
+ properties:
118
+ chop-version:
119
+ type: string
120
+ description: "Operator version"
121
+ chop-commit:
122
+ type: string
123
+ description: "Operator git commit SHA"
124
+ chop-date:
125
+ type: string
126
+ description: "Operator build date"
127
+ chop-ip:
128
+ type: string
129
+ description: "IP address of the operator's pod which managed this resource"
130
+ clusters:
131
+ type: integer
132
+ minimum: 0
133
+ description: "Clusters count"
134
+ shards:
135
+ type: integer
136
+ minimum: 0
137
+ description: "Shards count"
138
+ replicas:
139
+ type: integer
140
+ minimum: 0
141
+ description: "Replicas count"
142
+ hosts:
143
+ type: integer
144
+ minimum: 0
145
+ description: "Hosts count"
146
+ status:
147
+ type: string
148
+ description: "Status"
149
+ taskID:
150
+ type: string
151
+ description: "Current task id"
152
+ taskIDsStarted:
153
+ type: array
154
+ description: "Started task ids"
155
+ nullable: true
156
+ items:
157
+ type: string
158
+ taskIDsCompleted:
159
+ type: array
160
+ description: "Completed task ids"
161
+ nullable: true
162
+ items:
163
+ type: string
164
+ action:
165
+ type: string
166
+ description: "Action"
167
+ actions:
168
+ type: array
169
+ description: "Actions"
170
+ nullable: true
171
+ items:
172
+ type: string
173
+ error:
174
+ type: string
175
+ description: "Last error"
176
+ errors:
177
+ type: array
178
+ description: "Errors"
179
+ nullable: true
180
+ items:
181
+ type: string
182
+ hostsUnchanged:
183
+ type: integer
184
+ minimum: 0
185
+ description: "Unchanged Hosts count"
186
+ hostsUpdated:
187
+ type: integer
188
+ minimum: 0
189
+ description: "Updated Hosts count"
190
+ hostsAdded:
191
+ type: integer
192
+ minimum: 0
193
+ description: "Added Hosts count"
194
+ hostsCompleted:
195
+ type: integer
196
+ minimum: 0
197
+ description: "Completed Hosts count"
198
+ hostsDeleted:
199
+ type: integer
200
+ minimum: 0
201
+ description: "Deleted Hosts count"
202
+ hostsDelete:
203
+ type: integer
204
+ minimum: 0
205
+ description: "About to delete Hosts count"
206
+ pods:
207
+ type: array
208
+ description: "Pods"
209
+ nullable: true
210
+ items:
211
+ type: string
212
+ pod-ips:
213
+ type: array
214
+ description: "Pod IPs"
215
+ nullable: true
216
+ items:
217
+ type: string
218
+ fqdns:
219
+ type: array
220
+ description: "Pods FQDNs"
221
+ nullable: true
222
+ items:
223
+ type: string
224
+ endpoint:
225
+ type: string
226
+ description: "Endpoint"
227
+ endpoints:
228
+ type: array
229
+ description: "All endpoints"
230
+ nullable: true
231
+ items:
232
+ type: string
233
+ generation:
234
+ type: integer
235
+ minimum: 0
236
+ description: "Generation"
237
+ normalized:
238
+ type: object
239
+ description: "Normalized resource requested"
240
+ nullable: true
241
+ x-kubernetes-preserve-unknown-fields: true
242
+ normalizedCompleted:
243
+ type: object
244
+ description: "Normalized resource completed"
245
+ nullable: true
246
+ x-kubernetes-preserve-unknown-fields: true
247
+ actionPlan:
248
+ type: object
249
+ description: "Action Plan"
250
+ nullable: true
251
+ x-kubernetes-preserve-unknown-fields: true
252
+ hostsWithTablesCreated:
253
+ type: array
254
+ description: "List of hosts with tables created by the operator"
255
+ nullable: true
256
+ items:
257
+ type: string
258
+ hostsWithReplicaCaughtUp:
259
+ type: array
260
+ description: "List of hosts with replica caught up"
261
+ nullable: true
262
+ items:
263
+ type: string
264
+ usedTemplates:
265
+ type: array
266
+ description: "List of templates used to build this CHI"
267
+ nullable: true
268
+ x-kubernetes-preserve-unknown-fields: true
269
+ items:
270
+ type: object
271
+ x-kubernetes-preserve-unknown-fields: true
272
+ spec:
273
+ type: object
274
+ # x-kubernetes-preserve-unknown-fields: true
275
+ description: |
276
+ Specification of the desired behavior of one or more ClickHouse clusters
277
+ More info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md
278
+ properties:
279
+ taskID:
280
+ type: string
281
+ description: |
282
+ Allows to define custom taskID for CHI update and watch status of this update execution.
283
+ Displayed in all .status.taskID* fields.
284
+ By default (if not filled) every update of CHI manifest will generate random taskID
285
+ stop: &TypeStringBool
286
+ description: |
287
+ Allows to stop all ClickHouse clusters defined in a CHI.
288
+ Works as the following:
289
+ - When `stop` is `1` operator sets `Replicas: 0` in each StatefulSet. Thie leads to having all `Pods` and `Service` deleted. All PVCs are kept intact.
290
+ - When `stop` is `0` operator sets `Replicas: 1` and `Pod`s and `Service`s will created again and all retained PVCs will be attached to `Pod`s.
291
+ # StringBool is polymorphic — accepts native YAML bool (true/false),
292
+ # integer (0/1), or string from the recognized vocabulary
293
+ # (true/True/TRUE, yes/Yes, on/On, 1, enable/enabled, and their
294
+ # false/no/off/0/disable/disabled counterparts). Validation moves
295
+ # into the operator: pkg/apis/common/types StringBool.UnmarshalJSON
296
+ # normalizes input, IsValid() rejects garbage at normalize time.
297
+ # Structural-schema rules don't natively support bool|int|string
298
+ # union, so we use x-kubernetes-preserve-unknown-fields: true as
299
+ # the documented escape hatch (k8s apiextensions.k8s.io/v1).
300
+ x-kubernetes-preserve-unknown-fields: true
301
+ restart:
302
+ type: string
303
+ description: |
304
+ In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile.
305
+ This options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts.
306
+ enum:
307
+ # both humped and all-lowercase accepted
308
+ - ""
309
+ - "RollingUpdate"
310
+ - "rollingupdate"
311
+ suspend:
312
+ !!merge <<: *TypeStringBool
313
+ description: |
314
+ Suspend reconciliation of resources managed by a ClickHouse Installation.
315
+ Works as the following:
316
+ - When `suspend` is `true` operator stops reconciling all resources.
317
+ - When `suspend` is `false` or not set, operator reconciles all resources.
318
+ troubleshoot:
319
+ !!merge <<: *TypeStringBool
320
+ description: |
321
+ Allows to troubleshoot Pods during CrashLoopBack state.
322
+ This may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start.
323
+ Command within ClickHouse container is modified with `sleep` in order to avoid quick restarts
324
+ and give time to troubleshoot via CLI.
325
+ Liveness and Readiness probes are disabled as well.
326
+ namespaceDomainPattern:
327
+ type: string
328
+ description: |
329
+ Custom domain pattern which will be used for DNS names of `Service` or `Pod`.
330
+ Typical use scenario - custom cluster domain in Kubernetes cluster
331
+ Example: %s.svc.my.test
332
+ templating:
333
+ type: object
334
+ # nullable: true
335
+ description: |
336
+ Optional, applicable inside ClickHouseInstallationTemplate only.
337
+ Defines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s)."
338
+ properties:
339
+ policy:
340
+ type: string
341
+ description: |
342
+ When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate
343
+ will be auto-added into ClickHouseInstallation, selectable by `chiSelector`.
344
+ Default value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly.
345
+ enum:
346
+ - ""
347
+ - "Auto"
348
+ - "auto"
349
+ - "Manual"
350
+ - "manual"
351
+ chiSelector:
352
+ type: object
353
+ description: "Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate"
354
+ # nullable: true
355
+ x-kubernetes-preserve-unknown-fields: true
356
+ reconciling: &TypeReconcile
357
+ type: object
358
+ description: "[OBSOLETED] Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side"
359
+ # nullable: true
360
+ properties:
361
+ policy:
362
+ type: string
363
+ description: |
364
+ DISCUSSED TO BE DEPRECATED
365
+ Syntax sugar
366
+ Overrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config
367
+ Possible values:
368
+ - wait - should wait to exclude host, complete queries and include host back into the cluster
369
+ - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster
370
+ (case-insensitive)
371
+ enum:
372
+ - ""
373
+ - "Wait"
374
+ - "wait"
375
+ - "NoWait"
376
+ - "nowait"
377
+ configMapPropagationTimeout:
378
+ type: integer
379
+ description: |
380
+ Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod`
381
+ More details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically
382
+ minimum: 0
383
+ maximum: 3600
384
+ cleanup:
385
+ type: object
386
+ description: "Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle"
387
+ # nullable: true
388
+ properties:
389
+ unknownObjects:
390
+ type: object
391
+ description: |
392
+ Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator,
393
+ but do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource.
394
+ Default behavior is `Delete`"
395
+ # nullable: true
396
+ properties:
397
+ statefulSet: &TypeObjectsCleanup
398
+ type: string
399
+ description: "Behavior policy for unknown StatefulSet, `Delete` by default (case-insensitive)"
400
+ enum:
401
+ # List ObjectsCleanupXXX constants from model (both humped and all-lowercase accepted)
402
+ - ""
403
+ - "Retain"
404
+ - "retain"
405
+ - "Delete"
406
+ - "delete"
407
+ pvc:
408
+ type: string
409
+ !!merge <<: *TypeObjectsCleanup
410
+ description: "Behavior policy for unknown PVC, `Delete` by default"
411
+ configMap:
412
+ !!merge <<: *TypeObjectsCleanup
413
+ description: "Behavior policy for unknown ConfigMap, `Delete` by default"
414
+ service:
415
+ !!merge <<: *TypeObjectsCleanup
416
+ description: "Behavior policy for unknown Service, `Delete` by default"
417
+ reconcileFailedObjects:
418
+ type: object
419
+ description: |
420
+ Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile.
421
+ Default behavior is `Retain`"
422
+ # nullable: true
423
+ properties:
424
+ statefulSet:
425
+ !!merge <<: *TypeObjectsCleanup
426
+ description: "Behavior policy for failed StatefulSet, `Retain` by default"
427
+ pvc:
428
+ !!merge <<: *TypeObjectsCleanup
429
+ description: "Behavior policy for failed PVC, `Retain` by default"
430
+ configMap:
431
+ !!merge <<: *TypeObjectsCleanup
432
+ description: "Behavior policy for failed ConfigMap, `Retain` by default"
433
+ service:
434
+ !!merge <<: *TypeObjectsCleanup
435
+ description: "Behavior policy for failed Service, `Retain` by default"
436
+ macros:
437
+ type: object
438
+ description: "macros parameters"
439
+ properties:
440
+ sections:
441
+ type: object
442
+ description: "sections behaviour for macros"
443
+ properties:
444
+ users:
445
+ type: object
446
+ description: "sections behaviour for macros on users"
447
+ properties:
448
+ enabled:
449
+ !!merge <<: *TypeStringBool
450
+ description: "enabled or not"
451
+ profiles:
452
+ type: object
453
+ description: "sections behaviour for macros on profiles"
454
+ properties:
455
+ enabled:
456
+ !!merge <<: *TypeStringBool
457
+ description: "enabled or not"
458
+ quotas:
459
+ type: object
460
+ description: "sections behaviour for macros on quotas"
461
+ properties:
462
+ enabled:
463
+ !!merge <<: *TypeStringBool
464
+ description: "enabled or not"
465
+ settings:
466
+ type: object
467
+ description: "sections behaviour for macros on settings"
468
+ properties:
469
+ enabled:
470
+ !!merge <<: *TypeStringBool
471
+ description: "enabled or not"
472
+ files:
473
+ type: object
474
+ description: "sections behaviour for macros on files"
475
+ properties:
476
+ enabled:
477
+ !!merge <<: *TypeStringBool
478
+ description: "enabled or not"
479
+ runtime: &TypeReconcileRuntime
480
+ type: object
481
+ description: "runtime parameters for clickhouse-operator process which are used during reconcile cycle"
482
+ properties:
483
+ reconcileShardsThreadsNumber:
484
+ type: integer
485
+ minimum: 1
486
+ maximum: 65535
487
+ description: "The maximum number of cluster shards that may be reconciled in parallel, 1 by default"
488
+ reconcileShardsMaxConcurrencyPercent:
489
+ type: integer
490
+ minimum: 0
491
+ maximum: 100
492
+ description: "The maximum percentage of cluster shards that may be reconciled in parallel, 50 percent by default."
493
+ statefulSet: &TypeReconcileStatefulSet
494
+ type: object
495
+ description: "Optional, StatefulSet reconcile behavior tuning"
496
+ properties:
497
+ create:
498
+ type: object
499
+ description: "Behavior during create StatefulSet"
500
+ properties:
501
+ onFailure:
502
+ type: string
503
+ description: |
504
+ What to do in case created StatefulSet is not in 'Ready' after `reconcile.statefulSet.update.timeout` seconds.
505
+ Possible options:
506
+ 1. abort - abort the process, do nothing with the problematic StatefulSet, leave it as it is.
507
+ 2. delete - delete newly created problematic StatefulSet and follow 'abort' path afterwards.
508
+ 3. ignore - ignore an error, pretend nothing happened, continue reconcile and move on to the next StatefulSet.
509
+ enum:
510
+ - ""
511
+ - "Abort"
512
+ - "abort"
513
+ - "Delete"
514
+ - "delete"
515
+ - "Ignore"
516
+ - "ignore"
517
+ update:
518
+ type: object
519
+ description: "Behavior during update StatefulSet"
520
+ properties:
521
+ timeout:
522
+ type: integer
523
+ description: "How many seconds to wait for StatefulSet to be 'Ready' during update"
524
+ minimum: 0
525
+ maximum: 3600
526
+ pollInterval:
527
+ type: integer
528
+ description: "How many seconds to wait between checks for StatefulSet status during update"
529
+ minimum: 1
530
+ maximum: 600
531
+ onFailure:
532
+ type: string
533
+ description: |
534
+ What to do in case updated StatefulSet is not in 'Ready' after `reconcile.statefulSet.update.timeout` seconds.
535
+ Possible options:
536
+ 1. abort - abort the process, do nothing with the problematic StatefulSet, leave it as it is.
537
+ 2. rollback - delete Pod and rollback StatefulSet to previous Generation. Follow 'abort' path afterwards.
538
+ 3. ignore - ignore an error, pretend nothing happened, continue reconcile and move on to the next StatefulSet.
539
+ enum:
540
+ - ""
541
+ - "Abort"
542
+ - "abort"
543
+ - "Rollback"
544
+ - "rollback"
545
+ - "Ignore"
546
+ - "ignore"
547
+ recreate:
548
+ type: object
549
+ description: "Behavior during recreate StatefulSet"
550
+ properties:
551
+ onDataLoss:
552
+ type: string
553
+ description: |
554
+ What to do in case operator needs to recreate StatefulSet due to PVC data loss or missing volumes.
555
+ Possible options:
556
+ 1. abort - abort the process, do nothing with the problematic StatefulSet.
557
+ 2. recreate - proceed and recreate StatefulSet.
558
+ enum:
559
+ - ""
560
+ - "Abort"
561
+ - "abort"
562
+ - "Recreate"
563
+ - "recreate"
564
+ onUpdateFailure:
565
+ type: string
566
+ description: |
567
+ What to do in case operator needs to recreate StatefulSet due to update failure or StatefulSet not ready.
568
+ Possible options:
569
+ 1. abort - abort the process, do nothing with the problematic StatefulSet.
570
+ 2. recreate - proceed and recreate StatefulSet.
571
+ enum:
572
+ - ""
573
+ - "Abort"
574
+ - "abort"
575
+ - "Recreate"
576
+ - "recreate"
577
+ host: &TypeReconcileHost
578
+ type: object
579
+ description: |
580
+ Whether the operator during reconcile procedure should wait for a ClickHouse host:
581
+ - to be excluded from a ClickHouse cluster
582
+ - to complete all running queries
583
+ - to be included into a ClickHouse cluster
584
+ respectfully before moving forward
585
+ properties:
586
+ wait:
587
+ type: object
588
+ properties:
589
+ exclude:
590
+ !!merge <<: *TypeStringBool
591
+ queries:
592
+ !!merge <<: *TypeStringBool
593
+ description: "Whether the operator during reconcile procedure should wait for a ClickHouse host to complete all running queries"
594
+ include:
595
+ !!merge <<: *TypeStringBool
596
+ description: "Whether the operator during reconcile procedure should wait for a ClickHouse host to be included into a ClickHouse cluster"
597
+ replicas:
598
+ type: object
599
+ description: "Whether the operator during reconcile procedure should wait for replicas to catch-up"
600
+ properties:
601
+ all:
602
+ !!merge <<: *TypeStringBool
603
+ description: "Whether the operator during reconcile procedure should wait for all replicas to catch-up"
604
+ new:
605
+ !!merge <<: *TypeStringBool
606
+ description: "Whether the operator during reconcile procedure should wait for new replicas to catch-up"
607
+ delay:
608
+ type: integer
609
+ description: "replication max absolute delay to consider replica is not delayed"
610
+ probes:
611
+ type: object
612
+ description: "What probes the operator should wait during host launch procedure"
613
+ properties:
614
+ startup:
615
+ !!merge <<: *TypeStringBool
616
+ description: |
617
+ Whether the operator during host launch procedure should wait for startup probe to succeed.
618
+ In case probe is unspecified wait is assumed to be completed successfully.
619
+ Default option value is to do not wait.
620
+ readiness:
621
+ !!merge <<: *TypeStringBool
622
+ description: |
623
+ Whether the operator during host launch procedure should wait for ready probe to succeed.
624
+ In case probe is unspecified wait is assumed to be completed successfully.
625
+ Default option value is to wait.
626
+ drop:
627
+ type: object
628
+ properties:
629
+ replicas:
630
+ type: object
631
+ description: |
632
+ Whether the operator during reconcile procedure should drop replicas when replica is deleted or recreated
633
+ properties:
634
+ onDelete:
635
+ !!merge <<: *TypeStringBool
636
+ description: |
637
+ Whether the operator during reconcile procedure should drop replicas when replica is deleted
638
+ onLostVolume:
639
+ !!merge <<: *TypeStringBool
640
+ description: |
641
+ Whether the operator during reconcile procedure should drop replicas when replica volume is lost
642
+ active:
643
+ !!merge <<: *TypeStringBool
644
+ description: |
645
+ Whether the operator during reconcile procedure should drop active replicas when replica is deleted or recreated
646
+ hooks: &TypeReconcileHooks
647
+ type: object
648
+ description: "hooks to execute before and after host reconcile"
649
+ properties:
650
+ pre:
651
+ type: array
652
+ description: "actions to execute before reconcile"
653
+ nullable: true
654
+ items: &TypeHookAction
655
+ type: object
656
+ required:
657
+ - events
658
+ properties:
659
+ sql:
660
+ type: object
661
+ properties:
662
+ queries:
663
+ type: array
664
+ nullable: true
665
+ items:
666
+ type: string
667
+ shell:
668
+ type: object
669
+ properties:
670
+ command:
671
+ type: array
672
+ nullable: true
673
+ items:
674
+ type: string
675
+ container:
676
+ type: string
677
+ http:
678
+ type: object
679
+ properties:
680
+ url:
681
+ type: string
682
+ method:
683
+ type: string
684
+ target:
685
+ type: string
686
+ description: "where to execute hook for cluster-level hooks: FirstHost (default), AllHosts, AllShards"
687
+ # Both camelCase and all-lowercase forms are accepted; the
688
+ # runtime normalizes via strings.EqualFold (firstHost == firsthost).
689
+ enum:
690
+ - ""
691
+ - "FirstHost"
692
+ - "firsthost"
693
+ - "AllHosts"
694
+ - "allhosts"
695
+ - "AllShards"
696
+ - "allshards"
697
+ events:
698
+ type: array
699
+ minItems: 1
700
+ description: |
701
+ Reconcile lifecycle events that trigger this hook. Required, must be non-empty.
702
+ The hook is skipped on any reconcile whose classifier does not emit at least one
703
+ of the listed events. Supported values:
704
+ Any - wildcard match: fires on every hook-evaluation point,
705
+ including the pre-delete sweep on the dying host
706
+ HostCreate - first reconcile that creates a host (no ancestor); best
707
+ paired with POST hooks because PRE hooks on first creation
708
+ are skipped (no live pod yet)
709
+ HostUpdate - reconcile that has prior state for the host; catch-all
710
+ for ongoing reconciles
711
+ HostStart - host transitions from stopped to running
712
+ HostStop - host is being stopped (current spec marks it stopped)
713
+ HostConfigRestart - in-place software restart for a configuration change
714
+ HostRollout - pod-template change forces a StatefulSet rollout
715
+ HostShutdown - aggregate: fires whenever the pod is going down for any
716
+ reason (Stop, ConfigRestart, Rollout, or Delete)
717
+ HostDelete - host is being removed from the cluster (downsize); fires
718
+ on the dying host before tear-down. Always emitted
719
+ alongside HostShutdown.
720
+ items:
721
+ type: string
722
+ # Both PascalCase and all-lowercase forms are accepted; the
723
+ # runtime comparison is case-insensitive (strings.EqualFold).
724
+ enum:
725
+ - "Any"
726
+ - "any"
727
+ - "HostCreate"
728
+ - "hostcreate"
729
+ - "HostDelete"
730
+ - "hostdelete"
731
+ - "HostUpdate"
732
+ - "hostupdate"
733
+ - "HostStart"
734
+ - "hoststart"
735
+ - "HostStop"
736
+ - "hoststop"
737
+ - "HostConfigRestart"
738
+ - "hostconfigrestart"
739
+ - "HostRollout"
740
+ - "hostrollout"
741
+ - "HostShutdown"
742
+ - "hostshutdown"
743
+ failurePolicy:
744
+ type: string
745
+ description: |
746
+ Controls what happens when this hook returns an error.
747
+ Fail (default): error propagates — pre-hook aborts reconcile / host deletion.
748
+ Ignore: error is logged and the reconcile continues.
749
+ # Both PascalCase and all-lowercase forms are accepted; the
750
+ # runtime normalizes via strings.EqualFold (Fail == fail).
751
+ enum:
752
+ - "Fail"
753
+ - "fail"
754
+ - "Ignore"
755
+ - "ignore"
756
+ post:
757
+ type: array
758
+ description: "actions to execute after reconcile"
759
+ nullable: true
760
+ items:
761
+ !!merge <<: *TypeHookAction
762
+ cluster:
763
+ type: object
764
+ description: |
765
+ CHI-level cluster reconcile defaults inherited by every cluster's
766
+ spec.configuration.clusters[N].reconcile section. Use this as a single
767
+ place to define cluster-level hooks that should apply to all clusters
768
+ in this CHI; per-cluster hooks (under clusters[N].reconcile.hooks)
769
+ are appended to (and dedup'd against) the inherited set.
770
+ properties:
771
+ hooks:
772
+ type: object
773
+ description: "cluster-level hooks inherited by every cluster"
774
+ properties:
775
+ pre:
776
+ type: array
777
+ description: "actions to execute before each cluster reconcile"
778
+ nullable: true
779
+ items: &TypeClusterHookAction
780
+ type: object
781
+ required:
782
+ - events
783
+ properties:
784
+ sql:
785
+ type: object
786
+ properties:
787
+ queries:
788
+ type: array
789
+ nullable: true
790
+ items:
791
+ type: string
792
+ shell:
793
+ type: object
794
+ properties:
795
+ command:
796
+ type: array
797
+ nullable: true
798
+ items:
799
+ type: string
800
+ container:
801
+ type: string
802
+ http:
803
+ type: object
804
+ properties:
805
+ url:
806
+ type: string
807
+ method:
808
+ type: string
809
+ target:
810
+ type: string
811
+ description: "where to execute hook for cluster-level hooks: FirstHost (default), AllHosts, AllShards"
812
+ # Both camelCase and all-lowercase forms are accepted; the
813
+ # runtime normalizes via strings.EqualFold (firstHost == firsthost).
814
+ enum:
815
+ - ""
816
+ - "FirstHost"
817
+ - "firsthost"
818
+ - "AllHosts"
819
+ - "allhosts"
820
+ - "AllShards"
821
+ - "allshards"
822
+ events:
823
+ type: array
824
+ minItems: 1
825
+ description: |
826
+ Cluster-scope reconcile lifecycle events. Required, non-empty.
827
+ Any - wildcard match: fires on every cluster reconcile pass
828
+ and the cluster delete sweep
829
+ ClusterCreate - all hosts in the cluster are new (no ancestor); fires
830
+ only on the first reconcile of a brand-new cluster
831
+ ClusterReconcile - ongoing reconcile pass over an existing cluster (at
832
+ least one host has prior state). Fires on every
833
+ operator reconcile cycle the upstream gates allow,
834
+ including taskID-only force-reconciles. NOT a "spec
835
+ changed" signal.
836
+ ClusterDelete - cluster is being removed (delete sweep — wiring follow-up)
837
+ items:
838
+ type: string
839
+ # Both PascalCase and all-lowercase forms are accepted; the
840
+ # runtime comparison is case-insensitive (strings.EqualFold).
841
+ enum:
842
+ - "Any"
843
+ - "any"
844
+ - "ClusterCreate"
845
+ - "clustercreate"
846
+ - "ClusterDelete"
847
+ - "clusterdelete"
848
+ - "ClusterReconcile"
849
+ - "clusterreconcile"
850
+ failurePolicy:
851
+ type: string
852
+ description: |
853
+ Controls what happens when this hook returns an error.
854
+ Fail (default) propagates the error; Ignore logs a warning and continues.
855
+ # Both PascalCase and all-lowercase forms are accepted; the
856
+ # runtime normalizes via strings.EqualFold (Fail == fail).
857
+ enum:
858
+ - "Fail"
859
+ - "fail"
860
+ - "Ignore"
861
+ - "ignore"
862
+ post:
863
+ type: array
864
+ description: "actions to execute after each cluster reconcile"
865
+ nullable: true
866
+ items:
867
+ !!merge <<: *TypeClusterHookAction
868
+ reconcile:
869
+ !!merge <<: *TypeReconcile
870
+ description: "Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side"
871
+ defaults:
872
+ type: object
873
+ description: |
874
+ define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level
875
+ More info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults
876
+ # nullable: true
877
+ properties:
878
+ replicasUseFQDN:
879
+ !!merge <<: *TypeStringBool
880
+ description: |
881
+ define should replicas be specified by FQDN in `<host></host>`.
882
+ In case of "no" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup
883
+ "no" by default
884
+ distributedDDL:
885
+ type: object
886
+ description: |
887
+ allows change `<yandex><distributed_ddl></distributed_ddl></yandex>` settings
888
+ More info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl
889
+ # nullable: true
890
+ properties:
891
+ profile:
892
+ type: string
893
+ description: "Settings from this profile will be used to execute DDL queries"
894
+ storageManagement:
895
+ type: object
896
+ description: default storage management options
897
+ properties:
898
+ provisioner: &TypePVCProvisioner
899
+ type: string
900
+ description: "defines `PVC` provisioner - be it StatefulSet or the Operator (case-insensitive)"
901
+ enum:
902
+ - ""
903
+ - "StatefulSet"
904
+ - "statefulset"
905
+ - "Operator"
906
+ - "operator"
907
+ reclaimPolicy: &TypePVCReclaimPolicy
908
+ type: string
909
+ description: |
910
+ defines behavior of `PVC` deletion (case-insensitive).
911
+ `Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet
912
+ enum:
913
+ - ""
914
+ - "Retain"
915
+ - "retain"
916
+ - "Delete"
917
+ - "delete"
918
+ templates: &TypeTemplateNames
919
+ type: object
920
+ description: "optional, configuration of the templates names which will use for generate Kubernetes resources according to one or more ClickHouse clusters described in current ClickHouseInstallation (chi) resource"
921
+ # nullable: true
922
+ properties:
923
+ hostTemplate:
924
+ type: string
925
+ description: "optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`"
926
+ podTemplate:
927
+ type: string
928
+ description: "optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`"
929
+ dataVolumeClaimTemplate:
930
+ type: string
931
+ description: "optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`"
932
+ logVolumeClaimTemplate:
933
+ type: string
934
+ description: "optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`"
935
+ serviceTemplate:
936
+ type: string
937
+ description: "optional, template name from chi.spec.templates.serviceTemplates. used for customization of the `Service` resource, created by `clickhouse-operator` to cover all clusters in whole `chi` resource"
938
+ serviceTemplates:
939
+ type: array
940
+ description: "optional, template names from chi.spec.templates.serviceTemplates. used for customization of the `Service` resources, created by `clickhouse-operator` to cover all clusters in whole `chi` resource"
941
+ nullable: true
942
+ items:
943
+ type: string
944
+ clusterServiceTemplate:
945
+ type: string
946
+ description: "optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`"
947
+ shardServiceTemplate:
948
+ type: string
949
+ description: "optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`"
950
+ replicaServiceTemplate:
951
+ type: string
952
+ description: "optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`"
953
+ volumeClaimTemplate:
954
+ type: string
955
+ description: "optional, alias for dataVolumeClaimTemplate, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`"
956
+ configuration:
957
+ type: object
958
+ description: "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource"
959
+ # nullable: true
960
+ properties:
961
+ zookeeper: &TypeZookeeperConfig
962
+ type: object
963
+ description: |
964
+ allows configure <yandex><zookeeper>..</zookeeper></yandex> section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`
965
+ `clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/
966
+ currently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl`
967
+ More details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper
968
+ # nullable: true
969
+ properties:
970
+ nodes:
971
+ type: array
972
+ description: "describe every available zookeeper cluster node for interaction"
973
+ # nullable: true
974
+ items:
975
+ type: object
976
+ #required:
977
+ # - host
978
+ properties:
979
+ host:
980
+ type: string
981
+ description: "dns name or ip address for Zookeeper node"
982
+ port:
983
+ type: integer
984
+ description: "TCP port which used to connect to Zookeeper node"
985
+ minimum: 0
986
+ maximum: 65535
987
+ secure:
988
+ !!merge <<: *TypeStringBool
989
+ description: "if a secure connection to Zookeeper is required"
990
+ availabilityZone:
991
+ type: string
992
+ description: "availability zone for Zookeeper node"
993
+ keeper:
994
+ type: object
995
+ description: |
996
+ reference to a ClickHouseKeeperInstallation (CHK) resource.
997
+ The operator resolves this to ZooKeeper node addresses automatically.
998
+ properties:
999
+ name:
1000
+ type: string
1001
+ description: "name of the ClickHouseKeeperInstallation custom resource"
1002
+ namespace:
1003
+ type: string
1004
+ description: "namespace of the CHK resource, defaults to the CHI namespace if omitted"
1005
+ serviceType:
1006
+ type: string
1007
+ description: |
1008
+ how to discover keeper endpoints (case-insensitive):
1009
+ Replicas (default) — enumerate per-host services, one ZK node per keeper replica
1010
+ Service — use the CR-level headless service as a single ZK node entry
1011
+ enum:
1012
+ - ""
1013
+ - "Replicas"
1014
+ - "replicas"
1015
+ - "Service"
1016
+ - "service"
1017
+ session_timeout_ms:
1018
+ type: integer
1019
+ description: "session timeout during connect to Zookeeper"
1020
+ operation_timeout_ms:
1021
+ type: integer
1022
+ description: "one operation timeout during Zookeeper transactions"
1023
+ root:
1024
+ type: string
1025
+ description: "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)"
1026
+ identity:
1027
+ type: string
1028
+ description: "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper"
1029
+ use_compression:
1030
+ !!merge <<: *TypeStringBool
1031
+ description: "Enables compression in Keeper protocol if set to true"
1032
+ users:
1033
+ type: object
1034
+ description: |
1035
+ allows configure <yandex><users>..</users></yandex> section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`
1036
+ you can configure password hashed, authorization restrictions, database level security row filters etc.
1037
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings-users/
1038
+ Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers
1039
+
1040
+ any key could contains `valueFrom` with `secretKeyRef` which allow pass password from kubernetes secrets
1041
+ secret value will pass in `pod.spec.containers.evn`, and generate with from_env=XXX in XML in /etc/clickhouse-server/users.d/chop-generated-users.xml
1042
+ it not allow automatically updates when updates `secret`, change spec.taskID for manually trigger reconcile cycle
1043
+
1044
+ look into https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-01-overview.yaml for examples
1045
+
1046
+ any key with prefix `k8s_secret_` shall has value with format namespace/secret/key or secret/key
1047
+ in this case value from secret will write directly into XML tag during render *-usersd ConfigMap
1048
+
1049
+ any key with prefix `k8s_secret_env` shall has value with format namespace/secret/key or secret/key
1050
+ in this case value from secret will write into environment variable and write to XML tag via from_env=XXX
1051
+
1052
+ look into https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-01-overview.yaml for examples
1053
+ # nullable: true
1054
+ x-kubernetes-preserve-unknown-fields: true
1055
+ profiles:
1056
+ type: object
1057
+ description: |
1058
+ allows configure <yandex><profiles>..</profiles></yandex> section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`
1059
+ you can configure any aspect of settings profile
1060
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/
1061
+ Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles
1062
+ # nullable: true
1063
+ x-kubernetes-preserve-unknown-fields: true
1064
+ quotas:
1065
+ type: object
1066
+ description: |
1067
+ allows configure <yandex><quotas>..</quotas></yandex> section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`
1068
+ you can configure any aspect of resource quotas
1069
+ More details: https://clickhouse.tech/docs/en/operations/quotas/
1070
+ Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas
1071
+ # nullable: true
1072
+ x-kubernetes-preserve-unknown-fields: true
1073
+ settings: &TypeSettings
1074
+ type: object
1075
+ description: |
1076
+ allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`
1077
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1078
+ Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings
1079
+
1080
+ any key could contains `valueFrom` with `secretKeyRef` which allow pass password from kubernetes secrets
1081
+ look into https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-01-overview.yaml for examples
1082
+
1083
+ secret value will pass in `pod.spec.env`, and generate with from_env=XXX in XML in /etc/clickhouse-server/config.d/chop-generated-settings.xml
1084
+ it not allow automatically updates when updates `secret`, change spec.taskID for manually trigger reconcile cycle
1085
+ # nullable: true
1086
+ x-kubernetes-preserve-unknown-fields: true
1087
+ files: &TypeFiles
1088
+ type: object
1089
+ description: |
1090
+ allows define content of any setting file inside each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1091
+ every key in this object is the file name
1092
+ every value in this object is the file content
1093
+ you can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html
1094
+ each key could contains prefix like {common}, {users}, {hosts} or config.d, users.d, conf.d, wrong prefixes will be ignored, subfolders also will be ignored
1095
+ More details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml
1096
+
1097
+ any key could contains `valueFrom` with `secretKeyRef` which allow pass values from kubernetes secrets
1098
+ secrets will mounted into pod as separate volume in /etc/clickhouse-server/secrets.d/
1099
+ and will automatically update when update secret
1100
+ it useful for pass SSL certificates from cert-manager or similar tool
1101
+ look into https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-01-overview.yaml for examples
1102
+ # nullable: true
1103
+ x-kubernetes-preserve-unknown-fields: true
1104
+ clusters:
1105
+ type: array
1106
+ description: |
1107
+ describes clusters layout and allows change settings on cluster-level, shard-level and replica-level
1108
+ every cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server`
1109
+ all Pods will rendered in <remote_server> part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml`
1110
+ Clusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/
1111
+ If `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables
1112
+ # nullable: true
1113
+ items:
1114
+ type: object
1115
+ #required:
1116
+ # - name
1117
+ properties:
1118
+ name:
1119
+ type: string
1120
+ description: "cluster name, used to identify set of servers and wide used during generate names of related Kubernetes resources"
1121
+ minLength: 1
1122
+ # See namePartClusterMaxLen const
1123
+ maxLength: 15
1124
+ pattern: "^[a-zA-Z0-9-]{0,15}$"
1125
+ zookeeper:
1126
+ !!merge <<: *TypeZookeeperConfig
1127
+ description: |
1128
+ optional, allows configure <yandex><zookeeper>..</zookeeper></yandex> section in each `Pod` only in current ClickHouse cluster, during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`
1129
+ override top-level `chi.spec.configuration.zookeeper` settings
1130
+ settings:
1131
+ !!merge <<: *TypeSettings
1132
+ description: |
1133
+ optional, allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in each `Pod` only in one cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`
1134
+ override top-level `chi.spec.configuration.settings`
1135
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1136
+ files:
1137
+ !!merge <<: *TypeFiles
1138
+ description: |
1139
+ optional, allows define content of any setting file inside each `Pod` on current cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1140
+ override top-level `chi.spec.configuration.files`
1141
+ templates:
1142
+ !!merge <<: *TypeTemplateNames
1143
+ description: |
1144
+ optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster
1145
+ override top-level `chi.spec.configuration.templates`
1146
+ schemaPolicy:
1147
+ type: object
1148
+ description: |
1149
+ describes how schema is propagated within replicas and shards
1150
+ properties:
1151
+ replica:
1152
+ type: string
1153
+ description: "how schema is propagated within a replica (case-insensitive)"
1154
+ enum:
1155
+ # List SchemaPolicyReplicaXXX constants from model (both humped and all-lowercase accepted)
1156
+ - ""
1157
+ - "None"
1158
+ - "none"
1159
+ - "All"
1160
+ - "all"
1161
+ shard:
1162
+ type: string
1163
+ description: "how schema is propagated between shards (case-insensitive)"
1164
+ enum:
1165
+ # List SchemaPolicyShardXXX constants from model (both humped and all-lowercase accepted)
1166
+ - ""
1167
+ - "None"
1168
+ - "none"
1169
+ - "All"
1170
+ - "all"
1171
+ - "DistributedTablesOnly"
1172
+ - "distributedtablesonly"
1173
+ insecure:
1174
+ !!merge <<: *TypeStringBool
1175
+ description: optional, open insecure ports for cluster, defaults to "yes"
1176
+ secure:
1177
+ !!merge <<: *TypeStringBool
1178
+ description: optional, open secure ports for cluster
1179
+ secret:
1180
+ type: object
1181
+ description: "optional, shared secret value to secure cluster communications"
1182
+ properties:
1183
+ auto:
1184
+ !!merge <<: *TypeStringBool
1185
+ description: "Auto-generate shared secret value to secure cluster communications"
1186
+ value:
1187
+ description: "Cluster shared secret value in plain text"
1188
+ type: string
1189
+ valueFrom:
1190
+ description: "Cluster shared secret source"
1191
+ type: object
1192
+ properties:
1193
+ secretKeyRef:
1194
+ description: |
1195
+ Selects a key of a secret in the clickhouse installation namespace.
1196
+ Should not be used if value is not empty.
1197
+ type: object
1198
+ properties:
1199
+ name:
1200
+ description: |
1201
+ Name of the referent. More info:
1202
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
1203
+ type: string
1204
+ key:
1205
+ description: The key of the secret to select from. Must be a valid secret key.
1206
+ type: string
1207
+ optional:
1208
+ description: Specify whether the Secret or its key must be defined
1209
+ type: boolean
1210
+ required:
1211
+ - name
1212
+ - key
1213
+ security:
1214
+ type: object
1215
+ description: |
1216
+ Per-cluster security toggles for outbound TLS connections the operator makes
1217
+ to this cluster's ClickHouse and ZooKeeper / Keeper hosts. Nil fields fall
1218
+ through to the operator-wide defaults in ClickHouseOperatorConfiguration.
1219
+ See docs/security_hardening.md for details.
1220
+ x-kubernetes-preserve-unknown-fields: true
1221
+ pdbManaged:
1222
+ !!merge <<: *TypeStringBool
1223
+ description: |
1224
+ Specifies whether the Pod Disruption Budget (PDB) should be managed.
1225
+ During the next installation, if PDB management is enabled, the operator will
1226
+ attempt to retrieve any existing PDB. If none is found, it will create a new one
1227
+ and initiate a reconciliation loop. If PDB management is disabled, the existing PDB
1228
+ will remain intact, and the reconciliation loop will not be executed. By default,
1229
+ PDB management is enabled.
1230
+ pdbMaxUnavailable:
1231
+ type: integer
1232
+ description: |
1233
+ Pod eviction is allowed if at most "pdbMaxUnavailable" pods are unavailable after the eviction,
1234
+ i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions
1235
+ by specifying 0. This is a mutually exclusive setting with "minAvailable".
1236
+ minimum: 0
1237
+ maximum: 65535
1238
+ reconcile:
1239
+ type: object
1240
+ description: "allow tuning reconciling process"
1241
+ properties:
1242
+ runtime:
1243
+ !!merge <<: *TypeReconcileRuntime
1244
+ host:
1245
+ !!merge <<: *TypeReconcileHost
1246
+ hooks:
1247
+ # Per-cluster cluster-scope hooks. The schema (TypeClusterHookAction) is
1248
+ # defined once at spec.reconcile.cluster.hooks above; this block just
1249
+ # references it. Hooks defined here are merged with any inherited from
1250
+ # CHI-level spec.reconcile.cluster.hooks via dedup'd MergeFrom.
1251
+ type: object
1252
+ description: "cluster-level hooks to execute before and after cluster reconcile"
1253
+ properties:
1254
+ pre:
1255
+ type: array
1256
+ description: "actions to execute before cluster reconcile"
1257
+ nullable: true
1258
+ items:
1259
+ !!merge <<: *TypeClusterHookAction
1260
+ post:
1261
+ type: array
1262
+ description: "actions to execute after cluster reconcile"
1263
+ nullable: true
1264
+ items:
1265
+ !!merge <<: *TypeClusterHookAction
1266
+ layout:
1267
+ type: object
1268
+ description: |
1269
+ describe current cluster layout, how much shards in cluster, how much replica in shard
1270
+ allows override settings on each shard and replica separatelly
1271
+ # nullable: true
1272
+ properties:
1273
+ shardsCount:
1274
+ type: integer
1275
+ description: |
1276
+ how much shards for current ClickHouse cluster will run in Kubernetes,
1277
+ each shard contains shared-nothing part of data and contains set of replicas,
1278
+ cluster contains 1 shard by default"
1279
+ replicasCount:
1280
+ type: integer
1281
+ description: |
1282
+ how much replicas in each shards for current cluster will run in Kubernetes,
1283
+ each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance,
1284
+ every shard contains 1 replica by default"
1285
+ shards:
1286
+ type: array
1287
+ description: |
1288
+ optional, allows override top-level `chi.spec.configuration`, cluster-level
1289
+ `chi.spec.configuration.clusters` settings for each shard separately,
1290
+ use it only if you fully understand what you do"
1291
+ # nullable: true
1292
+ items:
1293
+ type: object
1294
+ properties:
1295
+ name:
1296
+ type: string
1297
+ description: "optional, by default shard name is generated, but you can override it and setup custom name"
1298
+ minLength: 1
1299
+ # See namePartShardMaxLen const
1300
+ maxLength: 15
1301
+ pattern: "^[a-zA-Z0-9-]{0,15}$"
1302
+ definitionType:
1303
+ type: string
1304
+ description: "DEPRECATED - to be removed soon"
1305
+ weight:
1306
+ type: integer
1307
+ description: |
1308
+ optional, 1 by default, allows setup shard <weight> setting which will use during insert into tables with `Distributed` engine,
1309
+ will apply in <remote_servers> inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml
1310
+ More details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/
1311
+ internalReplication:
1312
+ !!merge <<: *TypeStringBool
1313
+ description: |
1314
+ optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` > 1 and 0 otherwise
1315
+ allows setup <internal_replication> setting which will use during insert into tables with `Distributed` engine for insert only in one live replica and other replicas will download inserted data during replication,
1316
+ will apply in <remote_servers> inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml
1317
+ More details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/
1318
+ settings:
1319
+ !!merge <<: *TypeSettings
1320
+ description: |
1321
+ optional, allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`
1322
+ override top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings`
1323
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1324
+ files:
1325
+ !!merge <<: *TypeFiles
1326
+ description: |
1327
+ optional, allows define content of any setting file inside each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1328
+ override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`
1329
+ templates:
1330
+ !!merge <<: *TypeTemplateNames
1331
+ description: |
1332
+ optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard
1333
+ override top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates`
1334
+ replicasCount:
1335
+ type: integer
1336
+ description: |
1337
+ optional, how much replicas in selected shard for selected ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance,
1338
+ shard contains 1 replica by default
1339
+ override cluster-level `chi.spec.configuration.clusters.layout.replicasCount`
1340
+ minimum: 1
1341
+ replicas:
1342
+ type: array
1343
+ description: |
1344
+ optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards`
1345
+ # nullable: true
1346
+ items:
1347
+ # Host
1348
+ type: object
1349
+ properties:
1350
+ name:
1351
+ type: string
1352
+ description: "optional, by default replica name is generated, but you can override it and setup custom name"
1353
+ minLength: 1
1354
+ # See namePartReplicaMaxLen const
1355
+ maxLength: 15
1356
+ pattern: "^[a-zA-Z0-9-]{0,15}$"
1357
+ insecure:
1358
+ !!merge <<: *TypeStringBool
1359
+ description: |
1360
+ optional, open insecure ports for cluster, defaults to "yes"
1361
+ secure:
1362
+ !!merge <<: *TypeStringBool
1363
+ description: |
1364
+ optional, open secure ports
1365
+ tcpPort:
1366
+ type: integer
1367
+ description: |
1368
+ optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort`
1369
+ allows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`
1370
+ minimum: 1
1371
+ maximum: 65535
1372
+ tlsPort:
1373
+ type: integer
1374
+ minimum: 1
1375
+ maximum: 65535
1376
+ httpPort:
1377
+ type: integer
1378
+ description: |
1379
+ optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort`
1380
+ allows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`
1381
+ minimum: 1
1382
+ maximum: 65535
1383
+ httpsPort:
1384
+ type: integer
1385
+ minimum: 1
1386
+ maximum: 65535
1387
+ interserverHTTPPort:
1388
+ type: integer
1389
+ description: |
1390
+ optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`
1391
+ allows connect between replicas inside same shard during fetch replicated data parts HTTP protocol
1392
+ minimum: 1
1393
+ maximum: 65535
1394
+ settings:
1395
+ !!merge <<: *TypeSettings
1396
+ description: |
1397
+ optional, allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`
1398
+ override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings`
1399
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1400
+ files:
1401
+ !!merge <<: *TypeFiles
1402
+ description: |
1403
+ optional, allows define content of any setting file inside `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1404
+ override top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files`
1405
+ templates:
1406
+ !!merge <<: *TypeTemplateNames
1407
+ description: |
1408
+ optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica
1409
+ override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates`
1410
+ replicas:
1411
+ type: array
1412
+ description: "optional, allows override top-level `chi.spec.configuration` and cluster-level `chi.spec.configuration.clusters` configuration for each replica and each shard relates to selected replica, use it only if you fully understand what you do"
1413
+ # nullable: true
1414
+ items:
1415
+ type: object
1416
+ properties:
1417
+ name:
1418
+ type: string
1419
+ description: "optional, by default replica name is generated, but you can override it and setup custom name"
1420
+ minLength: 1
1421
+ # See namePartShardMaxLen const
1422
+ maxLength: 15
1423
+ pattern: "^[a-zA-Z0-9-]{0,15}$"
1424
+ settings:
1425
+ !!merge <<: *TypeSettings
1426
+ description: |
1427
+ optional, allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`
1428
+ override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and will ignore if shard-level `chi.spec.configuration.clusters.layout.shards` present
1429
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1430
+ files:
1431
+ !!merge <<: *TypeFiles
1432
+ description: |
1433
+ optional, allows define content of any setting file inside each `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1434
+ override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents
1435
+ templates:
1436
+ !!merge <<: *TypeTemplateNames
1437
+ description: |
1438
+ optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica
1439
+ override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`
1440
+ shardsCount:
1441
+ type: integer
1442
+ description: "optional, count of shards related to current replica, you can override each shard behavior on low-level `chi.spec.configuration.clusters.layout.replicas.shards`"
1443
+ minimum: 1
1444
+ shards:
1445
+ type: array
1446
+ description: "optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents"
1447
+ # nullable: true
1448
+ items:
1449
+ # Host
1450
+ type: object
1451
+ properties:
1452
+ name:
1453
+ type: string
1454
+ description: "optional, by default shard name is generated, but you can override it and setup custom name"
1455
+ minLength: 1
1456
+ # See namePartReplicaMaxLen const
1457
+ maxLength: 15
1458
+ pattern: "^[a-zA-Z0-9-]{0,15}$"
1459
+ insecure:
1460
+ !!merge <<: *TypeStringBool
1461
+ description: |
1462
+ optional, open insecure ports for cluster, defaults to "yes"
1463
+ secure:
1464
+ !!merge <<: *TypeStringBool
1465
+ description: |
1466
+ optional, open secure ports
1467
+ tcpPort:
1468
+ type: integer
1469
+ description: |
1470
+ optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort`
1471
+ allows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`
1472
+ minimum: 1
1473
+ maximum: 65535
1474
+ tlsPort:
1475
+ type: integer
1476
+ minimum: 1
1477
+ maximum: 65535
1478
+ httpPort:
1479
+ type: integer
1480
+ description: |
1481
+ optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort`
1482
+ allows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`
1483
+ minimum: 1
1484
+ maximum: 65535
1485
+ httpsPort:
1486
+ type: integer
1487
+ minimum: 1
1488
+ maximum: 65535
1489
+ interserverHTTPPort:
1490
+ type: integer
1491
+ description: |
1492
+ optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`
1493
+ allows connect between replicas inside same shard during fetch replicated data parts HTTP protocol
1494
+ minimum: 1
1495
+ maximum: 65535
1496
+ settings:
1497
+ !!merge <<: *TypeSettings
1498
+ description: |
1499
+ optional, allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`
1500
+ override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings`
1501
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1502
+ files:
1503
+ !!merge <<: *TypeFiles
1504
+ description: |
1505
+ optional, allows define content of any setting file inside each `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1506
+ override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents
1507
+ templates:
1508
+ !!merge <<: *TypeTemplateNames
1509
+ description: |
1510
+ optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica
1511
+ override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates`
1512
+ templates:
1513
+ type: object
1514
+ description: "allows define templates which will use for render Kubernetes resources like StatefulSet, ConfigMap, Service, PVC, by default, clickhouse-operator have own templates, but you can override it"
1515
+ # nullable: true
1516
+ properties:
1517
+ hostTemplates:
1518
+ type: array
1519
+ description: "hostTemplate will use during apply to generate `clickhose-server` config files"
1520
+ # nullable: true
1521
+ items:
1522
+ type: object
1523
+ #required:
1524
+ # - name
1525
+ properties:
1526
+ name:
1527
+ description: "template name, could use to link inside top-level `chi.spec.defaults.templates.hostTemplate`, cluster-level `chi.spec.configuration.clusters.templates.hostTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.hostTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.hostTemplate`"
1528
+ type: string
1529
+ portDistribution:
1530
+ type: array
1531
+ description: "define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs"
1532
+ # nullable: true
1533
+ items:
1534
+ type: object
1535
+ #required:
1536
+ # - type
1537
+ properties:
1538
+ type:
1539
+ type: string
1540
+ description: "type of distribution, when `Unspecified` (default value) then all listen ports on clickhouse-server configuration in all Pods will have the same value, when `ClusterScopeIndex` then ports will increment to offset from base value depends on shard and replica index inside cluster with combination of `chi.spec.templates.podTemlates.spec.HostNetwork` it allows setup ClickHouse cluster inside Kubernetes and provide access via external network bypass Kubernetes internal network"
1541
+ enum:
1542
+ # List PortDistributionXXX constants (both humped and all-lowercase accepted)
1543
+ - ""
1544
+ - "Unspecified"
1545
+ - "unspecified"
1546
+ - "ClusterScopeIndex"
1547
+ - "clusterscopeindex"
1548
+ spec:
1549
+ # Host
1550
+ type: object
1551
+ properties:
1552
+ name:
1553
+ type: string
1554
+ description: "by default, hostname will generate, but this allows define custom name for each `clickhouse-server`"
1555
+ minLength: 1
1556
+ # See namePartReplicaMaxLen const
1557
+ maxLength: 15
1558
+ pattern: "^[a-zA-Z0-9-]{0,15}$"
1559
+ insecure:
1560
+ !!merge <<: *TypeStringBool
1561
+ description: |
1562
+ optional, open insecure ports for cluster, defaults to "yes"
1563
+ secure:
1564
+ !!merge <<: *TypeStringBool
1565
+ description: |
1566
+ optional, open secure ports
1567
+ tcpPort:
1568
+ type: integer
1569
+ description: |
1570
+ optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply
1571
+ if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]`
1572
+ More info: https://clickhouse.tech/docs/en/interfaces/tcp/
1573
+ minimum: 1
1574
+ maximum: 65535
1575
+ tlsPort:
1576
+ type: integer
1577
+ minimum: 1
1578
+ maximum: 65535
1579
+ httpPort:
1580
+ type: integer
1581
+ description: |
1582
+ optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply
1583
+ if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]`
1584
+ More info: https://clickhouse.tech/docs/en/interfaces/http/
1585
+ minimum: 1
1586
+ maximum: 65535
1587
+ httpsPort:
1588
+ type: integer
1589
+ minimum: 1
1590
+ maximum: 65535
1591
+ interserverHTTPPort:
1592
+ type: integer
1593
+ description: |
1594
+ optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply
1595
+ if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]`
1596
+ More info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port
1597
+ minimum: 1
1598
+ maximum: 65535
1599
+ settings:
1600
+ !!merge <<: *TypeSettings
1601
+ description: |
1602
+ optional, allows configure `clickhouse-server` settings inside <yandex>...</yandex> tag in each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`
1603
+ More details: https://clickhouse.tech/docs/en/operations/settings/settings/
1604
+ files:
1605
+ !!merge <<: *TypeFiles
1606
+ description: |
1607
+ optional, allows define content of any setting file inside each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`
1608
+ templates:
1609
+ !!merge <<: *TypeTemplateNames
1610
+ description: "be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do"
1611
+ podTemplates:
1612
+ type: array
1613
+ description: |
1614
+ podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone
1615
+ More information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates
1616
+ # nullable: true
1617
+ items:
1618
+ type: object
1619
+ #required:
1620
+ # - name
1621
+ properties:
1622
+ name:
1623
+ type: string
1624
+ description: "template name, could use to link inside top-level `chi.spec.defaults.templates.podTemplate`, cluster-level `chi.spec.configuration.clusters.templates.podTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.podTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.podTemplate`"
1625
+ generateName:
1626
+ type: string
1627
+ description: "allows define format for generated `Pod` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about available template variables"
1628
+ zone:
1629
+ type: object
1630
+ description: "allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`"
1631
+ #required:
1632
+ # - values
1633
+ properties:
1634
+ key:
1635
+ type: string
1636
+ description: "optional, if defined, allows select kubernetes nodes by label with `name` equal `key`"
1637
+ values:
1638
+ type: array
1639
+ description: "optional, if defined, allows select kubernetes nodes by label with `value` in `values`"
1640
+ # nullable: true
1641
+ items:
1642
+ type: string
1643
+ distribution:
1644
+ type: string
1645
+ description: "DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`"
1646
+ enum:
1647
+ # both humped and all-lowercase accepted
1648
+ - ""
1649
+ - "Unspecified"
1650
+ - "unspecified"
1651
+ - "OnePerHost"
1652
+ - "oneperhost"
1653
+ podDistribution:
1654
+ type: array
1655
+ description: "define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster"
1656
+ # nullable: true
1657
+ items:
1658
+ type: object
1659
+ #required:
1660
+ # - type
1661
+ properties:
1662
+ type:
1663
+ type: string
1664
+ description: "you can define multiple affinity policy types"
1665
+ enum:
1666
+ # List PodDistributionXXX constants (both humped and all-lowercase accepted)
1667
+ - ""
1668
+ - "Unspecified"
1669
+ - "unspecified"
1670
+ - "ClickHouseAntiAffinity"
1671
+ - "clickhouseantiaffinity"
1672
+ - "ShardAntiAffinity"
1673
+ - "shardantiaffinity"
1674
+ - "ReplicaAntiAffinity"
1675
+ - "replicaantiaffinity"
1676
+ - "AnotherNamespaceAntiAffinity"
1677
+ - "anothernamespaceantiaffinity"
1678
+ - "AnotherClickHouseInstallationAntiAffinity"
1679
+ - "anotherclickhouseinstallationantiaffinity"
1680
+ - "AnotherClusterAntiAffinity"
1681
+ - "anotherclusterantiaffinity"
1682
+ - "MaxNumberPerNode"
1683
+ - "maxnumberpernode"
1684
+ - "NamespaceAffinity"
1685
+ - "namespaceaffinity"
1686
+ - "ClickHouseInstallationAffinity"
1687
+ - "clickhouseinstallationaffinity"
1688
+ - "ClusterAffinity"
1689
+ - "clusteraffinity"
1690
+ - "ShardAffinity"
1691
+ - "shardaffinity"
1692
+ - "ReplicaAffinity"
1693
+ - "replicaaffinity"
1694
+ - "PreviousTailAffinity"
1695
+ - "previoustailaffinity"
1696
+ - "CircularReplication"
1697
+ - "circularreplication"
1698
+ scope:
1699
+ type: string
1700
+ description: "scope for apply each podDistribution"
1701
+ enum:
1702
+ # list PodDistributionScopeXXX constants (both humped and all-lowercase accepted)
1703
+ - ""
1704
+ - "Unspecified"
1705
+ - "unspecified"
1706
+ - "Shard"
1707
+ - "shard"
1708
+ - "Replica"
1709
+ - "replica"
1710
+ - "Cluster"
1711
+ - "cluster"
1712
+ - "ClickHouseInstallation"
1713
+ - "clickhouseinstallation"
1714
+ - "Namespace"
1715
+ - "namespace"
1716
+ number:
1717
+ type: integer
1718
+ description: "define, how much ClickHouse Pods could be inside selected scope with selected distribution type"
1719
+ minimum: 0
1720
+ maximum: 65535
1721
+ topologyKey:
1722
+ type: string
1723
+ description: |
1724
+ use for inter-pod affinity look to `pod.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey`,
1725
+ more info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity"
1726
+ metadata:
1727
+ type: object
1728
+ description: |
1729
+ allows pass standard object's metadata from template to Pod
1730
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
1731
+ # nullable: true
1732
+ x-kubernetes-preserve-unknown-fields: true
1733
+ spec:
1734
+ # TODO specify PodSpec
1735
+ type: object
1736
+ description: "allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details"
1737
+ # nullable: true
1738
+ x-kubernetes-preserve-unknown-fields: true
1739
+ volumeClaimTemplates:
1740
+ type: array
1741
+ description: |
1742
+ allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else
1743
+ # nullable: true
1744
+ items:
1745
+ type: object
1746
+ #required:
1747
+ # - name
1748
+ # - spec
1749
+ properties:
1750
+ name:
1751
+ type: string
1752
+ description: |
1753
+ template name, could use to link inside
1754
+ top-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`,
1755
+ cluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`,
1756
+ shard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate`
1757
+ replica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate`
1758
+ provisioner: *TypePVCProvisioner
1759
+ reclaimPolicy: *TypePVCReclaimPolicy
1760
+ metadata:
1761
+ type: object
1762
+ description: |
1763
+ allows to pass standard object's metadata from template to PVC
1764
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
1765
+ # nullable: true
1766
+ x-kubernetes-preserve-unknown-fields: true
1767
+ spec:
1768
+ type: object
1769
+ description: |
1770
+ allows define all aspects of `PVC` resource
1771
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
1772
+ # nullable: true
1773
+ x-kubernetes-preserve-unknown-fields: true
1774
+ serviceTemplates:
1775
+ type: array
1776
+ description: |
1777
+ allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level
1778
+ # nullable: true
1779
+ items:
1780
+ type: object
1781
+ #required:
1782
+ # - name
1783
+ # - spec
1784
+ properties:
1785
+ name:
1786
+ type: string
1787
+ description: |
1788
+ template name, could use to link inside
1789
+ chi-level `chi.spec.defaults.templates.serviceTemplate`
1790
+ cluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate`
1791
+ shard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate`
1792
+ replica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate`
1793
+ generateName:
1794
+ type: string
1795
+ description: |
1796
+ allows define format for generated `Service` name,
1797
+ look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates
1798
+ for details about available template variables"
1799
+ metadata:
1800
+ # TODO specify ObjectMeta
1801
+ type: object
1802
+ description: |
1803
+ allows pass standard object's metadata from template to Service
1804
+ Could be use for define specificly for Cloud Provider metadata which impact to behavior of service
1805
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
1806
+ # nullable: true
1807
+ x-kubernetes-preserve-unknown-fields: true
1808
+ spec:
1809
+ # TODO specify ServiceSpec
1810
+ type: object
1811
+ description: |
1812
+ describe behavior of generated Service
1813
+ More info: https://kubernetes.io/docs/concepts/services-networking/service/
1814
+ # nullable: true
1815
+ x-kubernetes-preserve-unknown-fields: true
1816
+ security:
1817
+ type: object
1818
+ description: |
1819
+ CHI-level security defaults, applied to every cluster that does not override
1820
+ them. Each cluster can shadow these via spec.configuration.clusters[].security.
1821
+ See docs/security_hardening.md for details.
1822
+ x-kubernetes-preserve-unknown-fields: true
1823
+ useTemplates:
1824
+ type: array
1825
+ description: |
1826
+ list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `CHI`
1827
+ manifest during render Kubernetes resources to create related ClickHouse clusters"
1828
+ # nullable: true
1829
+ items:
1830
+ type: object
1831
+ #required:
1832
+ # - name
1833
+ properties:
1834
+ name:
1835
+ type: string
1836
+ description: "name of `ClickHouseInstallationTemplate` (chit) resource"
1837
+ namespace:
1838
+ type: string
1839
+ description: "Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clickhouse-operator`"
1840
+ useType:
1841
+ type: string
1842
+ description: "optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit` (case-insensitive)"
1843
+ enum:
1844
+ # List useTypeXXX constants from model (both humped and all-lowercase accepted)
1845
+ - ""
1846
+ - "Merge"
1847
+ - "merge"