From bf18ef0499768b8e980284cdee0df346f849b046 Mon Sep 17 00:00:00 2001 From: William Date: Fri, 3 May 2024 16:24:37 +0100 Subject: [PATCH] feat: add clickhouse operator crds --- .../clickhouseinstallation_v1.json | 1850 +++++++++++++++++ .../clickhouseinstallationtemplate_v1.json | 1850 +++++++++++++++++ .../clickhouseoperatorconfiguration_v1.json | 543 +++++ 3 files changed, 4243 insertions(+) create mode 100644 clickhouse.altinity.com/clickhouseinstallation_v1.json create mode 100644 clickhouse.altinity.com/clickhouseinstallationtemplate_v1.json create mode 100644 clickhouse.altinity.com/clickhouseoperatorconfiguration_v1.json diff --git a/clickhouse.altinity.com/clickhouseinstallation_v1.json b/clickhouse.altinity.com/clickhouseinstallation_v1.json new file mode 100644 index 00000000..8e44c810 --- /dev/null +++ b/clickhouse.altinity.com/clickhouseinstallation_v1.json @@ -0,0 +1,1850 @@ +{ + "description": "define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more ClickHouse clusters", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "Specification of the desired behavior of one or more ClickHouse clusters\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md\n", + "properties": { + "configuration": { + "description": "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource", + "properties": { + "clusters": { + "description": "describes ClickHouse clusters layout and allows change settings on cluster-level, shard-level and replica-level\nevery cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server`\nall Pods will rendered in part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml`\nClusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\nIf `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables\n", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "layout": { + "description": "describe current cluster layout, how much shards in cluster, how much replica in shard\nallows override settings on each shard and replica separatelly\n", + "properties": { + "replicas": { + "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", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "optional, by default replica name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\noverride 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\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "shards": { + "description": "optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "httpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort`\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "httpsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "interserverHTTPPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "optional, by default shard name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "secure": { + "description": "optional, open secure ports\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "tcpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort`\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "shardsCount": { + "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`", + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "replicasCount": { + "description": "how much replicas in each shards for current ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance, every shard contains 1 replica by default", + "type": "integer" + }, + "shards": { + "description": "optional, allows override top-level `chi.spec.configuration`, cluster-level `chi.spec.configuration.clusters` settings for each shard separately, use it only if you fully understand what you do", + "items": { + "properties": { + "definitionType": { + "description": "DEPRECATED - to be removed soon", + "type": "string" + }, + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "internalReplication": { + "description": "optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` > 1 and 0 otherwise\nallows setup 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,\nwill apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "name": { + "description": "optional, by default shard name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "replicas": { + "description": "optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards`\n", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "httpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort`\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "httpsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "interserverHTTPPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "optional, by default replica name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "secure": { + "description": "optional, open secure ports\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "tcpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort`\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "replicasCount": { + "description": "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,\nshard contains 1 replica by default\noverride cluster-level `chi.spec.configuration.clusters.layout.replicasCount`\n", + "minimum": 1, + "type": "integer" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\noverride top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard\noverride top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "weight": { + "description": "optional, 1 by default, allows setup shard setting which will use during insert into tables with `Distributed` engine,\nwill apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\n", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "shardsCount": { + "description": "how much shards for current ClickHouse cluster will run in Kubernetes, each shard contains shared-nothing part of data and contains set of replicas, cluster contains 1 shard by default", + "type": "integer" + }, + "type": { + "description": "DEPRECATED - to be removed soon", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "name": { + "description": "cluster name, used to identify set of ClickHouse servers and wide used during generate names of related Kubernetes resources", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "schemaPolicy": { + "description": "describes how schema is propagated within replicas and shards\n", + "properties": { + "replica": { + "description": "how schema is propagated within a replica", + "enum": [ + "", + "None", + "All" + ], + "type": "string" + }, + "shard": { + "description": "how schema is propagated between shards", + "enum": [ + "", + "None", + "All", + "DistributedTablesOnly" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "secret": { + "description": "optional, shared secret value to secure cluster communications", + "properties": { + "auto": { + "description": "Auto-generate shared secret value to secure cluster communications", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "value": { + "description": "Cluster shared secret value in plain text", + "type": "string" + }, + "valueFrom": { + "description": "Cluster shared secret source", + "properties": { + "secretKeyRef": { + "description": "Selects a key of a secret in the clickhouse installation namespace.\nShould not be used if value is not empty.\n", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "description": "Name of the referent. More info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "name", + "key" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "secure": { + "description": "optional, open secure ports for cluster", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in each `Pod` only in one cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\noverride top-level `chi.spec.configuration.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster\noverride top-level `chi.spec.configuration.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "zookeeper": { + "description": "optional, allows configure .. section in each `Pod` only in current ClickHouse cluster, during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\noverride top-level `chi.spec.configuration.zookeeper` settings\n", + "properties": { + "identity": { + "description": "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper", + "type": "string" + }, + "nodes": { + "description": "describe every available zookeeper cluster node for interaction", + "items": { + "properties": { + "host": { + "description": "dns name or ip address for Zookeeper node", + "type": "string" + }, + "port": { + "description": "TCP port which used to connect to Zookeeper node", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "secure": { + "description": "if a secure connection to Zookeeper is required", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "operation_timeout_ms": { + "description": "one operation timeout during Zookeeper transactions", + "type": "integer" + }, + "root": { + "description": "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)", + "type": "string" + }, + "session_timeout_ms": { + "description": "session timeout during connect to Zookeeper", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "files": { + "description": "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/`\nevery key in this object is the file name\nevery value in this object is the file content\nyou can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html\neach key could contains prefix like USERS, COMMON, HOST or config.d, users.d, cond.d, wrong prefixes will ignored, subfolders also will ignored\nMore details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "profiles": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\nyou can configure any aspect of settings profile\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "quotas": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\nyou can configure any aspect of resource quotas\nMore details: https://clickhouse.tech/docs/en/operations/quotas/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "settings": { + "description": "allows configure `clickhouse-server` settings inside ... tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "users": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\nyou can configure password hashed, authorization restrictions, database level security row filters etc.\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-users/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "zookeeper": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\n`clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/\ncurrently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl`\nMore details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper\n", + "properties": { + "identity": { + "description": "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper", + "type": "string" + }, + "nodes": { + "description": "describe every available zookeeper cluster node for interaction", + "items": { + "properties": { + "host": { + "description": "dns name or ip address for Zookeeper node", + "type": "string" + }, + "port": { + "description": "TCP port which used to connect to Zookeeper node", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "secure": { + "description": "if a secure connection to Zookeeper is required", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "operation_timeout_ms": { + "description": "one operation timeout during Zookeeper transactions", + "type": "integer" + }, + "root": { + "description": "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)", + "type": "string" + }, + "session_timeout_ms": { + "description": "session timeout during connect to Zookeeper", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "defaults": { + "description": "define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults\n", + "properties": { + "distributedDDL": { + "description": "allows change `` settings\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl\n", + "properties": { + "profile": { + "description": "Settings from this profile will be used to execute DDL queries", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "replicasUseFQDN": { + "description": "define should replicas be specified by FQDN in ``.\nIn case of \"no\" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup\n\"yes\" by default\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "storageManagement": { + "description": "default storage management options", + "properties": { + "provisioner": { + "description": "defines `PVC` provisioner - be it StatefulSet or the Operator", + "enum": [ + "", + "StatefulSet", + "Operator" + ], + "type": "string" + }, + "reclaimPolicy": { + "description": "defines behavior of `PVC` deletion.\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\n", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "templates": { + "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", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "namespaceDomainPattern": { + "description": "Custom domain pattern which will be used for DNS names of `Service` or `Pod`.\nTypical use scenario - custom cluster domain in Kubernetes cluster\nExample: %s.svc.my.test\n", + "type": "string" + }, + "reconciling": { + "description": "Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side", + "properties": { + "cleanup": { + "description": "Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle", + "properties": { + "reconcileFailedObjects": { + "description": "Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile.\nDefault behavior is `Retain`\"\n", + "properties": { + "configMap": { + "description": "Behavior policy for failed ConfigMap, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "pvc": { + "description": "Behavior policy for failed PVC, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "service": { + "description": "Behavior policy for failed Service, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "statefulSet": { + "description": "Behavior policy for failed StatefulSet, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "unknownObjects": { + "description": "Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator,\nbut do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource.\nDefault behavior is `Delete`\"\n", + "properties": { + "configMap": { + "description": "Behavior policy for unknown ConfigMap, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "pvc": { + "description": "Behavior policy for unknown PVC, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "service": { + "description": "Behavior policy for unknown Service, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "statefulSet": { + "description": "Behavior policy for unknown StatefulSet, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "configMapPropagationTimeout": { + "description": "Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod`\nMore details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically\n", + "maximum": 3600, + "minimum": 0, + "type": "integer" + }, + "policy": { + "description": "DISCUSSED TO BE DEPRECATED\nSyntax sugar\nOverrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config\nPossible values:\n - wait - should wait to exclude host, complete queries and include host back into the cluster\n - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster\n", + "enum": [ + "", + "wait", + "nowait" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "restart": { + "description": "In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile.\nThis options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts.\n", + "enum": [ + "", + "RollingUpdate" + ], + "type": "string" + }, + "stop": { + "description": "Allows to stop all ClickHouse clusters defined in a CHI.\nWorks as the following:\n - 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.\n - 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.\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "taskID": { + "description": "Allows to define custom taskID for CHI update and watch status of this update execution.\nDisplayed in all .status.taskID* fields.\nBy default (if not filled) every update of CHI manifest will generate random taskID\n", + "type": "string" + }, + "templates": { + "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", + "properties": { + "hostTemplates": { + "description": "hostTemplate will use during apply to generate `clickhose-server` config files", + "items": { + "properties": { + "name": { + "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`", + "type": "string" + }, + "portDistribution": { + "description": "define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs", + "items": { + "properties": { + "type": { + "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", + "enum": [ + "", + "Unspecified", + "ClusterScopeIndex" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "spec": { + "properties": { + "files": { + "description": "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/`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "httpPort": { + "description": "optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]`\nMore info: https://clickhouse.tech/docs/en/interfaces/http/\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "httpsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "interserverHTTPPort": { + "description": "optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]`\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "by default, hostname will generate, but this allows define custom name for each `clickhuse-server`", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "secure": { + "description": "optional, open secure ports\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "tcpPort": { + "description": "optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]`\nMore info: https://clickhouse.tech/docs/en/interfaces/tcp/\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "podTemplates": { + "description": "podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone\nMore information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates\n", + "items": { + "properties": { + "distribution": { + "description": "DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`", + "enum": [ + "", + "Unspecified", + "OnePerHost" + ], + "type": "string" + }, + "generateName": { + "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 aviailable template variables", + "type": "string" + }, + "metadata": { + "description": "allows pass standard object's metadata from template to Pod\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "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`", + "type": "string" + }, + "podDistribution": { + "description": "define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster", + "items": { + "properties": { + "number": { + "description": "define, how much ClickHouse Pods could be inside selected scope with selected distribution type", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "scope": { + "description": "scope for apply each podDistribution", + "enum": [ + "", + "Unspecified", + "Shard", + "Replica", + "Cluster", + "ClickHouseInstallation", + "Namespace" + ], + "type": "string" + }, + "topologyKey": { + "description": "use for inter-pod affinity look to `pod.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey`, More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity", + "type": "string" + }, + "type": { + "description": "you can define multiple affinity policy types", + "enum": [ + "", + "Unspecified", + "ClickHouseAntiAffinity", + "ShardAntiAffinity", + "ReplicaAntiAffinity", + "AnotherNamespaceAntiAffinity", + "AnotherClickHouseInstallationAntiAffinity", + "AnotherClusterAntiAffinity", + "MaxNumberPerNode", + "NamespaceAffinity", + "ClickHouseInstallationAffinity", + "ClusterAffinity", + "ShardAffinity", + "ReplicaAffinity", + "PreviousTailAffinity", + "CircularReplication" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "spec": { + "description": "allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "zone": { + "description": "allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`", + "properties": { + "key": { + "description": "optional, if defined, allows select kubernetes nodes by label with `name` equal `key`", + "type": "string" + }, + "values": { + "description": "optional, if defined, allows select kubernetes nodes by label with `value` in `values`", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "serviceTemplates": { + "description": "allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level\n", + "items": { + "properties": { + "generateName": { + "description": "allows define format for generated `Service` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about aviailable template variables", + "type": "string" + }, + "metadata": { + "description": "allows pass standard object's metadata from template to Service\nCould be use for define specificly for Cloud Provider metadata which impact to behavior of service\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "template name, could use to link inside\nchi-level `chi.spec.defaults.templates.serviceTemplate`\ncluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate`\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate`\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate`\n", + "type": "string" + }, + "spec": { + "description": "describe behavior of generated Service\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "volumeClaimTemplates": { + "description": "allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else", + "items": { + "properties": { + "metadata": { + "description": "allows to pass standard object's metadata from template to PVC\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "template name, could use to link inside\ntop-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`,\ncluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`,\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate`\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate`\n", + "type": "string" + }, + "provisioner": { + "description": "defines `PVC` provisioner - be it StatefulSet or the Operator", + "enum": [ + "", + "StatefulSet", + "Operator" + ], + "type": "string" + }, + "reclaimPolicy": { + "description": "defines behavior of `PVC` deletion.\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\n", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "spec": { + "description": "allows define all aspects of `PVC` resource\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "templating": { + "description": "Optional, applicable inside ClickHouseInstallationTemplate only.\nDefines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s).\"\n", + "properties": { + "chiSelector": { + "description": "Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "policy": { + "description": "When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate\nwill be auto-added into ClickHouseInstallation, selectable by `chiSelector`.\nDefault value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly.\n", + "enum": [ + "", + "auto", + "manual" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "troubleshoot": { + "description": "Allows to troubleshoot Pods during CrashLoopBack state.\nThis may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start.\nCommand within ClickHouse container is modified with `sleep` in order to avoid quick restarts\nand give time to troubleshoot via CLI.\nLiveness and Readiness probes are disabled as well.\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "useTemplates": { + "description": "list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `Chi` manifest during render Kubernetes resources to create related ClickHouse clusters", + "items": { + "properties": { + "name": { + "description": "name of `ClickHouseInstallationTemplate` (chit) resource", + "type": "string" + }, + "namespace": { + "description": "Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clichouse-operator`", + "type": "string" + }, + "useType": { + "description": "optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit`", + "enum": [ + "", + "merge" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "Current ClickHouseInstallation manifest 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", + "properties": { + "action": { + "description": "Action", + "type": "string" + }, + "actions": { + "description": "Actions", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "chop-commit": { + "description": "ClickHouse operator git commit SHA", + "type": "string" + }, + "chop-date": { + "description": "ClickHouse operator build date", + "type": "string" + }, + "chop-ip": { + "description": "IP address of the operator's pod which managed this CHI", + "type": "string" + }, + "chop-version": { + "description": "ClickHouse operator version", + "type": "string" + }, + "clusters": { + "description": "Clusters count", + "minimum": 0, + "type": "integer" + }, + "endpoint": { + "description": "Endpoint", + "type": "string" + }, + "error": { + "description": "Last error", + "type": "string" + }, + "errors": { + "description": "Errors", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "fqdns": { + "description": "Pods FQDNs", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "generation": { + "description": "Generation", + "minimum": 0, + "type": "integer" + }, + "hosts": { + "description": "Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsAdded": { + "description": "Added Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsCompleted": { + "description": "Completed Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsDelete": { + "description": "About to delete Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsDeleted": { + "description": "Deleted Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsUnchanged": { + "description": "Unchanged Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsUpdated": { + "description": "Updated Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsWithTablesCreated": { + "description": "List of hosts with tables created by the operator", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "normalized": { + "description": "Normalized CHI requested", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "normalizedCompleted": { + "description": "Normalized CHI completed", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pod-ips": { + "description": "Pod IPs", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "pods": { + "description": "Pods", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "replicas": { + "description": "Replicas count", + "minimum": 0, + "type": "integer" + }, + "shards": { + "description": "Shards count", + "minimum": 0, + "type": "integer" + }, + "status": { + "description": "Status", + "type": "string" + }, + "taskID": { + "description": "Current task id", + "type": "string" + }, + "taskIDsCompleted": { + "description": "Completed task ids", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "taskIDsStarted": { + "description": "Started task ids", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "usedTemplates": { + "description": "List of templates used to build this CHI", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "nullable": true, + "type": "array", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "spec" + ], + "type": "object" +} diff --git a/clickhouse.altinity.com/clickhouseinstallationtemplate_v1.json b/clickhouse.altinity.com/clickhouseinstallationtemplate_v1.json new file mode 100644 index 00000000..8e44c810 --- /dev/null +++ b/clickhouse.altinity.com/clickhouseinstallationtemplate_v1.json @@ -0,0 +1,1850 @@ +{ + "description": "define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more ClickHouse clusters", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "Specification of the desired behavior of one or more ClickHouse clusters\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md\n", + "properties": { + "configuration": { + "description": "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource", + "properties": { + "clusters": { + "description": "describes ClickHouse clusters layout and allows change settings on cluster-level, shard-level and replica-level\nevery cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server`\nall Pods will rendered in part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml`\nClusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\nIf `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables\n", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "layout": { + "description": "describe current cluster layout, how much shards in cluster, how much replica in shard\nallows override settings on each shard and replica separatelly\n", + "properties": { + "replicas": { + "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", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "optional, by default replica name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\noverride 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\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "shards": { + "description": "optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "httpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort`\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "httpsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "interserverHTTPPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "optional, by default shard name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "secure": { + "description": "optional, open secure ports\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "tcpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort`\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "shardsCount": { + "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`", + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "replicasCount": { + "description": "how much replicas in each shards for current ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance, every shard contains 1 replica by default", + "type": "integer" + }, + "shards": { + "description": "optional, allows override top-level `chi.spec.configuration`, cluster-level `chi.spec.configuration.clusters` settings for each shard separately, use it only if you fully understand what you do", + "items": { + "properties": { + "definitionType": { + "description": "DEPRECATED - to be removed soon", + "type": "string" + }, + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "internalReplication": { + "description": "optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` > 1 and 0 otherwise\nallows setup 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,\nwill apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "name": { + "description": "optional, by default shard name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "replicas": { + "description": "optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards`\n", + "items": { + "properties": { + "files": { + "description": "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/`\noverride top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "httpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort`\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "httpsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "interserverHTTPPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "optional, by default replica name is generated, but you can override it and setup custom name", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "secure": { + "description": "optional, open secure ports\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "tcpPort": { + "description": "optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort`\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "replicasCount": { + "description": "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,\nshard contains 1 replica by default\noverride cluster-level `chi.spec.configuration.clusters.layout.replicasCount`\n", + "minimum": 1, + "type": "integer" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\noverride top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard\noverride top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "weight": { + "description": "optional, 1 by default, allows setup shard setting which will use during insert into tables with `Distributed` engine,\nwill apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\n", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "shardsCount": { + "description": "how much shards for current ClickHouse cluster will run in Kubernetes, each shard contains shared-nothing part of data and contains set of replicas, cluster contains 1 shard by default", + "type": "integer" + }, + "type": { + "description": "DEPRECATED - to be removed soon", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "name": { + "description": "cluster name, used to identify set of ClickHouse servers and wide used during generate names of related Kubernetes resources", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "schemaPolicy": { + "description": "describes how schema is propagated within replicas and shards\n", + "properties": { + "replica": { + "description": "how schema is propagated within a replica", + "enum": [ + "", + "None", + "All" + ], + "type": "string" + }, + "shard": { + "description": "how schema is propagated between shards", + "enum": [ + "", + "None", + "All", + "DistributedTablesOnly" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "secret": { + "description": "optional, shared secret value to secure cluster communications", + "properties": { + "auto": { + "description": "Auto-generate shared secret value to secure cluster communications", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "value": { + "description": "Cluster shared secret value in plain text", + "type": "string" + }, + "valueFrom": { + "description": "Cluster shared secret source", + "properties": { + "secretKeyRef": { + "description": "Selects a key of a secret in the clickhouse installation namespace.\nShould not be used if value is not empty.\n", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "description": "Name of the referent. More info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "name", + "key" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "secure": { + "description": "optional, open secure ports for cluster", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in each `Pod` only in one cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\noverride top-level `chi.spec.configuration.settings`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "templates": { + "description": "optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster\noverride top-level `chi.spec.configuration.templates`\n", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "zookeeper": { + "description": "optional, allows configure .. section in each `Pod` only in current ClickHouse cluster, during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\noverride top-level `chi.spec.configuration.zookeeper` settings\n", + "properties": { + "identity": { + "description": "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper", + "type": "string" + }, + "nodes": { + "description": "describe every available zookeeper cluster node for interaction", + "items": { + "properties": { + "host": { + "description": "dns name or ip address for Zookeeper node", + "type": "string" + }, + "port": { + "description": "TCP port which used to connect to Zookeeper node", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "secure": { + "description": "if a secure connection to Zookeeper is required", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "operation_timeout_ms": { + "description": "one operation timeout during Zookeeper transactions", + "type": "integer" + }, + "root": { + "description": "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)", + "type": "string" + }, + "session_timeout_ms": { + "description": "session timeout during connect to Zookeeper", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "files": { + "description": "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/`\nevery key in this object is the file name\nevery value in this object is the file content\nyou can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html\neach key could contains prefix like USERS, COMMON, HOST or config.d, users.d, cond.d, wrong prefixes will ignored, subfolders also will ignored\nMore details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "profiles": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\nyou can configure any aspect of settings profile\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "quotas": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\nyou can configure any aspect of resource quotas\nMore details: https://clickhouse.tech/docs/en/operations/quotas/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "settings": { + "description": "allows configure `clickhouse-server` settings inside ... tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "users": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\nyou can configure password hashed, authorization restrictions, database level security row filters etc.\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-users/\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "zookeeper": { + "description": "allows configure .. section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\n`clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/\ncurrently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl`\nMore details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper\n", + "properties": { + "identity": { + "description": "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper", + "type": "string" + }, + "nodes": { + "description": "describe every available zookeeper cluster node for interaction", + "items": { + "properties": { + "host": { + "description": "dns name or ip address for Zookeeper node", + "type": "string" + }, + "port": { + "description": "TCP port which used to connect to Zookeeper node", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "secure": { + "description": "if a secure connection to Zookeeper is required", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "operation_timeout_ms": { + "description": "one operation timeout during Zookeeper transactions", + "type": "integer" + }, + "root": { + "description": "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)", + "type": "string" + }, + "session_timeout_ms": { + "description": "session timeout during connect to Zookeeper", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "defaults": { + "description": "define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults\n", + "properties": { + "distributedDDL": { + "description": "allows change `` settings\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl\n", + "properties": { + "profile": { + "description": "Settings from this profile will be used to execute DDL queries", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "replicasUseFQDN": { + "description": "define should replicas be specified by FQDN in ``.\nIn case of \"no\" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup\n\"yes\" by default\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "storageManagement": { + "description": "default storage management options", + "properties": { + "provisioner": { + "description": "defines `PVC` provisioner - be it StatefulSet or the Operator", + "enum": [ + "", + "StatefulSet", + "Operator" + ], + "type": "string" + }, + "reclaimPolicy": { + "description": "defines behavior of `PVC` deletion.\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\n", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "templates": { + "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", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "namespaceDomainPattern": { + "description": "Custom domain pattern which will be used for DNS names of `Service` or `Pod`.\nTypical use scenario - custom cluster domain in Kubernetes cluster\nExample: %s.svc.my.test\n", + "type": "string" + }, + "reconciling": { + "description": "Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side", + "properties": { + "cleanup": { + "description": "Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle", + "properties": { + "reconcileFailedObjects": { + "description": "Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile.\nDefault behavior is `Retain`\"\n", + "properties": { + "configMap": { + "description": "Behavior policy for failed ConfigMap, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "pvc": { + "description": "Behavior policy for failed PVC, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "service": { + "description": "Behavior policy for failed Service, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "statefulSet": { + "description": "Behavior policy for failed StatefulSet, `Retain` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "unknownObjects": { + "description": "Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator,\nbut do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource.\nDefault behavior is `Delete`\"\n", + "properties": { + "configMap": { + "description": "Behavior policy for unknown ConfigMap, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "pvc": { + "description": "Behavior policy for unknown PVC, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "service": { + "description": "Behavior policy for unknown Service, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "statefulSet": { + "description": "Behavior policy for unknown StatefulSet, `Delete` by default", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "configMapPropagationTimeout": { + "description": "Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod`\nMore details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically\n", + "maximum": 3600, + "minimum": 0, + "type": "integer" + }, + "policy": { + "description": "DISCUSSED TO BE DEPRECATED\nSyntax sugar\nOverrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config\nPossible values:\n - wait - should wait to exclude host, complete queries and include host back into the cluster\n - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster\n", + "enum": [ + "", + "wait", + "nowait" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "restart": { + "description": "In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile.\nThis options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts.\n", + "enum": [ + "", + "RollingUpdate" + ], + "type": "string" + }, + "stop": { + "description": "Allows to stop all ClickHouse clusters defined in a CHI.\nWorks as the following:\n - 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.\n - 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.\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "taskID": { + "description": "Allows to define custom taskID for CHI update and watch status of this update execution.\nDisplayed in all .status.taskID* fields.\nBy default (if not filled) every update of CHI manifest will generate random taskID\n", + "type": "string" + }, + "templates": { + "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", + "properties": { + "hostTemplates": { + "description": "hostTemplate will use during apply to generate `clickhose-server` config files", + "items": { + "properties": { + "name": { + "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`", + "type": "string" + }, + "portDistribution": { + "description": "define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs", + "items": { + "properties": { + "type": { + "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", + "enum": [ + "", + "Unspecified", + "ClusterScopeIndex" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "spec": { + "properties": { + "files": { + "description": "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/`\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "httpPort": { + "description": "optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]`\nMore info: https://clickhouse.tech/docs/en/interfaces/http/\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "httpsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "insecure": { + "description": "optional, open insecure ports for cluster, defaults to \"yes\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "interserverHTTPPort": { + "description": "optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]`\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "by default, hostname will generate, but this allows define custom name for each `clickhuse-server`", + "maxLength": 15, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]{0,15}$", + "type": "string" + }, + "secure": { + "description": "optional, open secure ports\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "settings": { + "description": "optional, allows configure `clickhouse-server` settings inside ... tag in each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "tcpPort": { + "description": "optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]`\nMore info: https://clickhouse.tech/docs/en/interfaces/tcp/\n", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "templates": { + "description": "be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do", + "properties": { + "clusterServiceTemplate": { + "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`", + "type": "string" + }, + "dataVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "hostTemplate": { + "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`", + "type": "string" + }, + "logVolumeClaimTemplate": { + "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`", + "type": "string" + }, + "podTemplate": { + "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`", + "type": "string" + }, + "replicaServiceTemplate": { + "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`", + "type": "string" + }, + "serviceTemplate": { + "description": "optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource", + "type": "string" + }, + "shardServiceTemplate": { + "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`", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tlsPort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "podTemplates": { + "description": "podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone\nMore information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates\n", + "items": { + "properties": { + "distribution": { + "description": "DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`", + "enum": [ + "", + "Unspecified", + "OnePerHost" + ], + "type": "string" + }, + "generateName": { + "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 aviailable template variables", + "type": "string" + }, + "metadata": { + "description": "allows pass standard object's metadata from template to Pod\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "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`", + "type": "string" + }, + "podDistribution": { + "description": "define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster", + "items": { + "properties": { + "number": { + "description": "define, how much ClickHouse Pods could be inside selected scope with selected distribution type", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "scope": { + "description": "scope for apply each podDistribution", + "enum": [ + "", + "Unspecified", + "Shard", + "Replica", + "Cluster", + "ClickHouseInstallation", + "Namespace" + ], + "type": "string" + }, + "topologyKey": { + "description": "use for inter-pod affinity look to `pod.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey`, More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity", + "type": "string" + }, + "type": { + "description": "you can define multiple affinity policy types", + "enum": [ + "", + "Unspecified", + "ClickHouseAntiAffinity", + "ShardAntiAffinity", + "ReplicaAntiAffinity", + "AnotherNamespaceAntiAffinity", + "AnotherClickHouseInstallationAntiAffinity", + "AnotherClusterAntiAffinity", + "MaxNumberPerNode", + "NamespaceAffinity", + "ClickHouseInstallationAffinity", + "ClusterAffinity", + "ShardAffinity", + "ReplicaAffinity", + "PreviousTailAffinity", + "CircularReplication" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "spec": { + "description": "allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "zone": { + "description": "allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`", + "properties": { + "key": { + "description": "optional, if defined, allows select kubernetes nodes by label with `name` equal `key`", + "type": "string" + }, + "values": { + "description": "optional, if defined, allows select kubernetes nodes by label with `value` in `values`", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "serviceTemplates": { + "description": "allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level\n", + "items": { + "properties": { + "generateName": { + "description": "allows define format for generated `Service` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about aviailable template variables", + "type": "string" + }, + "metadata": { + "description": "allows pass standard object's metadata from template to Service\nCould be use for define specificly for Cloud Provider metadata which impact to behavior of service\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "template name, could use to link inside\nchi-level `chi.spec.defaults.templates.serviceTemplate`\ncluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate`\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate`\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate`\n", + "type": "string" + }, + "spec": { + "description": "describe behavior of generated Service\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "volumeClaimTemplates": { + "description": "allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else", + "items": { + "properties": { + "metadata": { + "description": "allows to pass standard object's metadata from template to PVC\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "name": { + "description": "template name, could use to link inside\ntop-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`,\ncluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`,\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate`\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate`\n", + "type": "string" + }, + "provisioner": { + "description": "defines `PVC` provisioner - be it StatefulSet or the Operator", + "enum": [ + "", + "StatefulSet", + "Operator" + ], + "type": "string" + }, + "reclaimPolicy": { + "description": "defines behavior of `PVC` deletion.\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\n", + "enum": [ + "", + "Retain", + "Delete" + ], + "type": "string" + }, + "spec": { + "description": "allows define all aspects of `PVC` resource\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims\n", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "templating": { + "description": "Optional, applicable inside ClickHouseInstallationTemplate only.\nDefines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s).\"\n", + "properties": { + "chiSelector": { + "description": "Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "policy": { + "description": "When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate\nwill be auto-added into ClickHouseInstallation, selectable by `chiSelector`.\nDefault value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly.\n", + "enum": [ + "", + "auto", + "manual" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "troubleshoot": { + "description": "Allows to troubleshoot Pods during CrashLoopBack state.\nThis may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start.\nCommand within ClickHouse container is modified with `sleep` in order to avoid quick restarts\nand give time to troubleshoot via CLI.\nLiveness and Readiness probes are disabled as well.\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "useTemplates": { + "description": "list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `Chi` manifest during render Kubernetes resources to create related ClickHouse clusters", + "items": { + "properties": { + "name": { + "description": "name of `ClickHouseInstallationTemplate` (chit) resource", + "type": "string" + }, + "namespace": { + "description": "Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clichouse-operator`", + "type": "string" + }, + "useType": { + "description": "optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit`", + "enum": [ + "", + "merge" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "Current ClickHouseInstallation manifest 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", + "properties": { + "action": { + "description": "Action", + "type": "string" + }, + "actions": { + "description": "Actions", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "chop-commit": { + "description": "ClickHouse operator git commit SHA", + "type": "string" + }, + "chop-date": { + "description": "ClickHouse operator build date", + "type": "string" + }, + "chop-ip": { + "description": "IP address of the operator's pod which managed this CHI", + "type": "string" + }, + "chop-version": { + "description": "ClickHouse operator version", + "type": "string" + }, + "clusters": { + "description": "Clusters count", + "minimum": 0, + "type": "integer" + }, + "endpoint": { + "description": "Endpoint", + "type": "string" + }, + "error": { + "description": "Last error", + "type": "string" + }, + "errors": { + "description": "Errors", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "fqdns": { + "description": "Pods FQDNs", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "generation": { + "description": "Generation", + "minimum": 0, + "type": "integer" + }, + "hosts": { + "description": "Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsAdded": { + "description": "Added Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsCompleted": { + "description": "Completed Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsDelete": { + "description": "About to delete Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsDeleted": { + "description": "Deleted Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsUnchanged": { + "description": "Unchanged Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsUpdated": { + "description": "Updated Hosts count", + "minimum": 0, + "type": "integer" + }, + "hostsWithTablesCreated": { + "description": "List of hosts with tables created by the operator", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "normalized": { + "description": "Normalized CHI requested", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "normalizedCompleted": { + "description": "Normalized CHI completed", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pod-ips": { + "description": "Pod IPs", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "pods": { + "description": "Pods", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "replicas": { + "description": "Replicas count", + "minimum": 0, + "type": "integer" + }, + "shards": { + "description": "Shards count", + "minimum": 0, + "type": "integer" + }, + "status": { + "description": "Status", + "type": "string" + }, + "taskID": { + "description": "Current task id", + "type": "string" + }, + "taskIDsCompleted": { + "description": "Completed task ids", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "taskIDsStarted": { + "description": "Started task ids", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "usedTemplates": { + "description": "List of templates used to build this CHI", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "nullable": true, + "type": "array", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "spec" + ], + "type": "object" +} diff --git a/clickhouse.altinity.com/clickhouseoperatorconfiguration_v1.json b/clickhouse.altinity.com/clickhouseoperatorconfiguration_v1.json new file mode 100644 index 00000000..90e5b1cd --- /dev/null +++ b/clickhouse.altinity.com/clickhouseoperatorconfiguration_v1.json @@ -0,0 +1,543 @@ +{ + "description": "allows customize `clickhouse-operator` settings, need restart clickhouse-operator pod after adding, more details https://github.com/Altinity/clickhouse-operator/blob/master/docs/operator_configuration.md", + "properties": { + "spec": { + "description": "Allows to define settings of the clickhouse-operator.\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/config/config.yaml\nCheck into etc-clickhouse-operator* ConfigMaps if you need more control\n", + "properties": { + "annotation": { + "description": "defines which metadata.annotations items will include or exclude during render StatefulSet, Pod, PVC resources", + "properties": { + "exclude": { + "description": "When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`,\nexclude annotations with names from the following list\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "include": { + "description": "When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`,\ninclude annotations with names from the following list\n", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "clickhouse": { + "description": "Clickhouse related parameters used by clickhouse-operator", + "properties": { + "access": { + "description": "parameters which use for connect to clickhouse from clickhouse-operator deployment", + "properties": { + "password": { + "description": "ClickHouse password to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName", + "type": "string" + }, + "port": { + "description": "Port to be used by operator to connect to ClickHouse instances", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "rootCA": { + "description": "Root certificate authority that clients use when verifying server certificates. Used for https connection to ClickHouse", + "type": "string" + }, + "scheme": { + "description": "The scheme to user for connecting to ClickHouse. Possible values: http, https, auto", + "type": "string" + }, + "secret": { + "properties": { + "name": { + "description": "Name of k8s Secret with username and password to be used by operator to connect to ClickHouse instances", + "type": "string" + }, + "namespace": { + "description": "Location of k8s Secret with username and password to be used by operator to connect to ClickHouse instances", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "timeouts": { + "description": "Timeouts used to limit connection and queries from the operator to ClickHouse instances, In seconds", + "properties": { + "connect": { + "description": "Timout to setup connection from the operator to ClickHouse instances. In seconds.", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "query": { + "description": "Timout to perform SQL query from the operator to ClickHouse instances. In seconds.", + "maximum": 600, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "username": { + "description": "ClickHouse username to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "configuration": { + "properties": { + "file": { + "properties": { + "path": { + "description": "Each 'path' can be either absolute or relative.\nIn case path is absolute - it is used as is.\nIn case path is relative - it is relative to the folder where configuration file you are reading right now is located.\n", + "properties": { + "common": { + "description": "Path to the folder where ClickHouse configuration files common for all instances within a CHI are located.\nDefault value - config.d\n", + "type": "string" + }, + "host": { + "description": "Path to the folder where ClickHouse configuration files unique for each instance (host) within a CHI are located.\nDefault value - conf.d\n", + "type": "string" + }, + "user": { + "description": "Path to the folder where ClickHouse configuration files with users settings are located.\nFiles are common for all instances within a CHI.\nDefault value - users.d\n", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "network": { + "description": "Default network parameters for any user which will create", + "properties": { + "hostRegexpTemplate": { + "description": "ClickHouse server configuration `...` for any ", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "user": { + "description": "Default parameters for any user which will create", + "properties": { + "default": { + "properties": { + "networksIP": { + "description": "ClickHouse server configuration `...` for any ", + "items": { + "type": "string" + }, + "type": "array" + }, + "password": { + "description": "ClickHouse server configuration `...` for any ", + "type": "string" + }, + "profile": { + "description": "ClickHouse server configuration `...` for any ", + "type": "string" + }, + "quota": { + "description": "ClickHouse server configuration `...` for any ", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "configurationRestartPolicy": { + "description": "Configuration restart policy describes what configuration changes require ClickHouse restart", + "properties": { + "rules": { + "description": "Array of set of rules per specified ClickHouse versions", + "items": { + "properties": { + "rules": { + "description": "Set of configuration rules for specified ClickHouse version", + "items": { + "description": "setting: value pairs for configuration restart policy", + "type": "object" + }, + "type": "array" + }, + "version": { + "description": "ClickHouse version expression", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "metrics": { + "description": "parameters which use for connect to fetch metrics from clickhouse by clickhouse-operator", + "properties": { + "timeouts": { + "description": "Timeouts used to limit connection and queries from the metrics exporter to ClickHouse instances\nSpecified in seconds.\n", + "properties": { + "collect": { + "description": "Timeout used to limit metrics collection request. In seconds.\nUpon reaching this timeout metrics collection is aborted and no more metrics are collected in this cycle.\nAll collected metrics are returned.\n", + "maximum": 600, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "label": { + "description": "defines which metadata.labels will include or exclude during render StatefulSet, Pod, PVC resources", + "properties": { + "appendScope": { + "description": "Whether to append *Scope* labels to StatefulSet and Pod\n- \"LabelShardScopeIndex\"\n- \"LabelReplicaScopeIndex\"\n- \"LabelCHIScopeIndex\"\n- \"LabelCHIScopeCycleSize\"\n- \"LabelCHIScopeCycleIndex\"\n- \"LabelCHIScopeCycleOffset\"\n- \"LabelClusterScopeIndex\"\n- \"LabelClusterScopeCycleSize\"\n- \"LabelClusterScopeCycleIndex\"\n- \"LabelClusterScopeCycleOffset\"\n", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "exclude": { + "description": "When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`,\nexclude labels from the following list\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "include": { + "description": "When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`,\ninclude labels from the following list\n", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "logger": { + "description": "allow setup clickhouse-operator logger behavior", + "properties": { + "alsologtostderr": { + "description": "boolean allows logs to stderr and files both", + "type": "string" + }, + "log_backtrace_at": { + "description": "It can be set to a file and line number with a logging line.\nEx.: file.go:123\nEach time when this line is being executed, a stack trace will be written to the Info log.\n", + "type": "string" + }, + "logtostderr": { + "description": "boolean, allows logs to stderr", + "type": "string" + }, + "stderrthreshold": { + "type": "string" + }, + "v": { + "description": "verbosity level of clickhouse-operator log, default - 1 max - 9", + "type": "string" + }, + "vmodule": { + "description": "Comma-separated list of filename=N, where filename (can be a pattern) must have no .go ext, and N is a V level.\nEx.: file*=2 sets the 'V' to 2 in all files with names like file*.\n", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "pod": { + "description": "define pod specific parameters", + "properties": { + "terminationGracePeriod": { + "description": "Optional duration in seconds the pod needs to terminate gracefully. \nLook details in `pod.spec.terminationGracePeriodSeconds`\n", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "reconcile": { + "description": "allow tuning reconciling process", + "properties": { + "host": { + "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host:\n - to be excluded from a ClickHouse cluster\n - to complete all running queries\n - to be included into a ClickHouse cluster\nrespectfully before moving forward\n", + "properties": { + "wait": { + "properties": { + "exclude": { + "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host to be excluded from a ClickHouse cluster", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "include": { + "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host to be included into a ClickHouse cluster", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + }, + "queries": { + "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host to complete all running queries", + "enum": [ + "", + "0", + "1", + "False", + "false", + "True", + "true", + "No", + "no", + "Yes", + "yes", + "Off", + "off", + "On", + "on", + "Disable", + "disable", + "Enable", + "enable", + "Disabled", + "disabled", + "Enabled", + "enabled" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "runtime": { + "description": "runtime parameters for clickhouse-operator process which are used during reconcile cycle", + "properties": { + "reconcileCHIsThreadsNumber": { + "description": "How many goroutines will be used to reconcile CHIs in parallel, 10 by default", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "reconcileShardsMaxConcurrencyPercent": { + "description": "The maximum percentage of cluster shards that may be reconciled in parallel, 50 percent by default.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "reconcileShardsThreadsNumber": { + "description": "How many goroutines will be used to reconcile shards of a cluster in parallel, 1 by default", + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "statefulSet": { + "description": "Allow change default behavior for reconciling StatefulSet which generated by clickhouse-operator", + "properties": { + "create": { + "description": "Behavior during create StatefulSet", + "properties": { + "onFailure": { + "description": "What to do in case created StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds\nPossible options:\n1. abort - do nothing, just break the process and wait for admin.\n2. delete - delete newly created problematic StatefulSet.\n3. ignore (default) - ignore error, pretend nothing happened and move on to the next StatefulSet.\n", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "update": { + "description": "Behavior during update StatefulSet", + "properties": { + "onFailure": { + "description": "What to do in case updated StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds\nPossible options:\n1. abort - do nothing, just break the process and wait for admin.\n2. rollback (default) - delete Pod and rollback StatefulSet to previous Generation. Pod would be recreated by StatefulSet based on rollback-ed configuration.\n3. ignore - ignore error, pretend nothing happened and move on to the next StatefulSet.\n", + "type": "string" + }, + "pollInterval": { + "description": "How many seconds to wait between checks for created/updated StatefulSet status", + "type": "integer" + }, + "timeout": { + "description": "How many seconds to wait for created/updated StatefulSet to be Ready", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "statefulSet": { + "description": "define StatefulSet-specific parameters", + "properties": { + "revisionHistoryLimit": { + "description": "revisionHistoryLimit is the maximum number of revisions that will be\nmaintained in the StatefulSet's revision history. \nLook details in `statefulset.spec.revisionHistoryLimit`\n", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "template": { + "description": "Parameters which are used if you want to generate ClickHouseInstallationTemplate custom resources from files which are stored inside clickhouse-operator deployment", + "properties": { + "chi": { + "properties": { + "path": { + "description": "Path to folder where ClickHouseInstallationTemplate .yaml manifests are located.", + "type": "string" + }, + "policy": { + "description": "CHI template updates handling policy\nPossible policy values:\n - ReadOnStart. Accept CHIT updates on the operators start only.\n - ApplyOnNextReconcile. Accept CHIT updates at all time. Apply news CHITs on next regular reconcile of the CHI\n", + "enum": [ + "", + "ReadOnStart", + "ApplyOnNextReconcile" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "watch": { + "description": "Parameters for watch kubernetes resources which used by clickhouse-operator deployment", + "properties": { + "namespaces": { + "description": "List of namespaces where clickhouse-operator watches for events.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "x-kubernetes-preserve-unknown-fields": true, + "additionalProperties": false + }, + "status": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "x-kubernetes-preserve-unknown-fields": true +}