diff --git a/.github/workflows/lint_helm_chart.yaml b/.github/workflows/lint_helm_chart.yaml index c5986b89a..f088039a6 100644 --- a/.github/workflows/lint_helm_chart.yaml +++ b/.github/workflows/lint_helm_chart.yaml @@ -26,6 +26,7 @@ jobs: set -e cd deployment/helm_chart/opik helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add clickhouse-operator https://docs.altinity.com/clickhouse-operator helm dependency build helm lint --values values.yaml . cd - diff --git a/.github/workflows/publish_helm_chart.yaml b/.github/workflows/publish_helm_chart.yaml index 0e71f7ef9..028a75cbe 100644 --- a/.github/workflows/publish_helm_chart.yaml +++ b/.github/workflows/publish_helm_chart.yaml @@ -52,6 +52,7 @@ jobs: set -e cd deployment/helm_chart/opik helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add clickhouse-operator https://docs.altinity.com/clickhouse-operator helm dependency build helm lint --values values.yaml . cd - diff --git a/deployment/helm_chart/opik/Chart.lock b/deployment/helm_chart/opik/Chart.lock index 2b5f35400..ada6daf57 100644 --- a/deployment/helm_chart/opik/Chart.lock +++ b/deployment/helm_chart/opik/Chart.lock @@ -8,5 +8,8 @@ dependencies: - name: redis repository: https://charts.bitnami.com/bitnami version: 18.19.2 -digest: sha256:aff7158d368c78d7fcb68102bf04e7b5631eff0a80bddcd6404d4c2eb95e5200 -generated: "2024-08-25T14:11:27.399354+03:00" +- name: altinity-clickhouse-operator + repository: https://docs.altinity.com/clickhouse-operator/ + version: 0.23.7 +digest: sha256:1863002507fafe0a986af167356bbb3178a4870994225b728efac3cfd9db617e +generated: "2024-10-13T14:38:17.89184+03:00" diff --git a/deployment/helm_chart/opik/Chart.yaml b/deployment/helm_chart/opik/Chart.yaml index 0ff481efa..534a54d2d 100644 --- a/deployment/helm_chart/opik/Chart.yaml +++ b/deployment/helm_chart/opik/Chart.yaml @@ -39,3 +39,7 @@ dependencies: version: "18.19.2" repository: https://charts.bitnami.com/bitnami condition: redis.enabled +- name: altinity-clickhouse-operator + version: "0.23.7" + repository: https://docs.altinity.com/clickhouse-operator/ + diff --git a/deployment/helm_chart/opik/README.md b/deployment/helm_chart/opik/README.md index 06232776d..b1961e1a7 100644 --- a/deployment/helm_chart/opik/README.md +++ b/deployment/helm_chart/opik/README.md @@ -80,11 +80,14 @@ Call opik api on http://localhost:5173/api | https://charts.bitnami.com/bitnami | mysql | 11.1.9 | | https://charts.bitnami.com/bitnami | redis | 18.19.2 | | https://charts.bitnami.com/bitnami | zookeeper | 12.12.1 | +| https://docs.altinity.com/clickhouse-operator/ | altinity-clickhouse-operator | 0.23.7 | ## Values | Key | Type | Default | Description | |-----|------|---------|-------------| +| altinity-clickhouse-operator.metrics.enabled | bool | `false` | | +| altinity-clickhouse-operator.serviceMonitor.enabled | bool | `false` | | | basicAuth | bool | `false` | | | clickhouse.adminUser.password | string | `"opik"` | | | clickhouse.adminUser.useSecret.enabled | bool | `false` | | @@ -93,11 +96,8 @@ Call opik api on http://localhost:5173/api | clickhouse.image | string | `"altinity/clickhouse-server:24.3.5.47.altinitystable"` | | | clickhouse.logsLevel | string | `"information"` | | | clickhouse.monitoring.enabled | bool | `false` | | -| clickhouse.monitoring.monitoringReleaseName | string | `nil` | | | clickhouse.monitoring.password | string | `"opikmon"` | | | clickhouse.monitoring.username | string | `"opikmon"` | | -| clickhouse.namePrefix | string | `"opik"` | | -| clickhouse.operator.enabled | bool | `true` | | | clickhouse.replicasCount | int | `1` | | | clickhouse.service.serviceTemplate | string | `"clickhouse-cluster-svc-template"` | | | clickhouse.shardsCount | int | `1` | | diff --git a/deployment/helm_chart/opik/crds/clickhouse-operator-crds.yaml b/deployment/helm_chart/opik/crds/clickhouse-operator-crds.yaml deleted file mode 100644 index af195cfb6..000000000 --- a/deployment/helm_chart/opik/crds/clickhouse-operator-crds.yaml +++ /dev/null @@ -1,3138 +0,0 @@ -# Template Parameters:# -# -# KIND=ClickHouseInstallation -# SINGULAR=clickhouseinstallation -# PLURAL=clickhouseinstallations -# SHORT=chi -# OPERATOR_VERSION=0.23.6 -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: clickhouseinstallations.clickhouse.altinity.com - labels: - clickhouse.altinity.com/chop: 0.23.6 -spec: - group: clickhouse.altinity.com - scope: Namespaced - names: - kind: ClickHouseInstallation - singular: clickhouseinstallation - plural: clickhouseinstallations - shortNames: - - chi - versions: - - name: v1 - served: true - storage: true - additionalPrinterColumns: - - name: version - type: string - description: Operator version - priority: 1 # show in wide view - jsonPath: .status.chop-version - - name: clusters - type: integer - description: Clusters count - jsonPath: .status.clusters - - name: shards - type: integer - description: Shards count - priority: 1 # show in wide view - jsonPath: .status.shards - - name: hosts - type: integer - description: Hosts count - jsonPath: .status.hosts - - name: taskID - type: string - description: TaskID - priority: 1 # show in wide view - jsonPath: .status.taskID - - name: status - type: string - description: CHI status - jsonPath: .status.status - - name: hosts-unchanged - type: integer - description: Unchanged hosts count - priority: 1 # show in wide view - jsonPath: .status.hostsUnchanged - - name: hosts-updated - type: integer - description: Updated hosts count - priority: 1 # show in wide view - jsonPath: .status.hostsUpdated - - name: hosts-added - type: integer - description: Added hosts count - priority: 1 # show in wide view - jsonPath: .status.hostsAdded - - name: hosts-completed - type: integer - description: Completed hosts count - jsonPath: .status.hostsCompleted - - name: hosts-deleted - type: integer - description: Hosts deleted count - priority: 1 # show in wide view - jsonPath: .status.hostsDeleted - - name: hosts-delete - type: integer - description: Hosts to be deleted count - priority: 1 # show in wide view - jsonPath: .status.hostsDelete - - name: endpoint - type: string - description: Client access endpoint - priority: 1 # show in wide view - jsonPath: .status.endpoint - - name: age - type: date - description: Age of the resource - # Displayed in all priorities - jsonPath: .metadata.creationTimestamp - subresources: - status: {} - schema: - openAPIV3Schema: - description: "define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more ClickHouse clusters" - type: object - required: - - spec - 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 - status: - type: object - 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: - chop-version: - type: string - description: "ClickHouse operator version" - chop-commit: - type: string - description: "ClickHouse operator git commit SHA" - chop-date: - type: string - description: "ClickHouse operator build date" - chop-ip: - type: string - description: "IP address of the operator's pod which managed this CHI" - clusters: - type: integer - minimum: 0 - description: "Clusters count" - shards: - type: integer - minimum: 0 - description: "Shards count" - replicas: - type: integer - minimum: 0 - description: "Replicas count" - hosts: - type: integer - minimum: 0 - description: "Hosts count" - status: - type: string - description: "Status" - taskID: - type: string - description: "Current task id" - taskIDsStarted: - type: array - description: "Started task ids" - nullable: true - items: - type: string - taskIDsCompleted: - type: array - description: "Completed task ids" - nullable: true - items: - type: string - action: - type: string - description: "Action" - actions: - type: array - description: "Actions" - nullable: true - items: - type: string - error: - type: string - description: "Last error" - errors: - type: array - description: "Errors" - nullable: true - items: - type: string - hostsUnchanged: - type: integer - minimum: 0 - description: "Unchanged Hosts count" - hostsUpdated: - type: integer - minimum: 0 - description: "Updated Hosts count" - hostsAdded: - type: integer - minimum: 0 - description: "Added Hosts count" - hostsCompleted: - type: integer - minimum: 0 - description: "Completed Hosts count" - hostsDeleted: - type: integer - minimum: 0 - description: "Deleted Hosts count" - hostsDelete: - type: integer - minimum: 0 - description: "About to delete Hosts count" - pods: - type: array - description: "Pods" - nullable: true - items: - type: string - pod-ips: - type: array - description: "Pod IPs" - nullable: true - items: - type: string - fqdns: - type: array - description: "Pods FQDNs" - nullable: true - items: - type: string - endpoint: - type: string - description: "Endpoint" - generation: - type: integer - minimum: 0 - description: "Generation" - normalized: - type: object - description: "Normalized CHI requested" - x-kubernetes-preserve-unknown-fields: true - normalizedCompleted: - type: object - description: "Normalized CHI completed" - x-kubernetes-preserve-unknown-fields: true - hostsWithTablesCreated: - type: array - description: "List of hosts with tables created by the operator" - nullable: true - items: - type: string - usedTemplates: - type: array - description: "List of templates used to build this CHI" - nullable: true - x-kubernetes-preserve-unknown-fields: true - items: - type: object - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - # x-kubernetes-preserve-unknown-fields: true - description: | - Specification of the desired behavior of one or more ClickHouse clusters - More info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md - properties: - taskID: - type: string - description: | - Allows to define custom taskID for CHI update and watch status of this update execution. - Displayed in all .status.taskID* fields. - By default (if not filled) every update of CHI manifest will generate random taskID - stop: &TypeStringBool - type: string - description: | - Allows to stop all ClickHouse clusters defined in a CHI. - Works as the following: - - 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. - - 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. - enum: - # List StringBoolXXX constants from model - - "" - - "0" - - "1" - - "False" - - "false" - - "True" - - "true" - - "No" - - "no" - - "Yes" - - "yes" - - "Off" - - "off" - - "On" - - "on" - - "Disable" - - "disable" - - "Enable" - - "enable" - - "Disabled" - - "disabled" - - "Enabled" - - "enabled" - restart: - type: string - description: | - In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile. - This options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts. - enum: - - "" - - "RollingUpdate" - troubleshoot: - <<: *TypeStringBool - description: | - Allows to troubleshoot Pods during CrashLoopBack state. - This may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start. - Command within ClickHouse container is modified with `sleep` in order to avoid quick restarts - and give time to troubleshoot via CLI. - Liveness and Readiness probes are disabled as well. - namespaceDomainPattern: - type: string - description: | - Custom domain pattern which will be used for DNS names of `Service` or `Pod`. - Typical use scenario - custom cluster domain in Kubernetes cluster - Example: %s.svc.my.test - templating: - type: object - # nullable: true - description: | - Optional, applicable inside ClickHouseInstallationTemplate only. - Defines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s)." - properties: - policy: - type: string - description: | - When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate - will be auto-added into ClickHouseInstallation, selectable by `chiSelector`. - Default value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly. - enum: - - "" - - "auto" - - "manual" - chiSelector: - type: object - description: "Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate" - # nullable: true - x-kubernetes-preserve-unknown-fields: true - reconciling: - type: object - description: "Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side" - # nullable: true - properties: - policy: - type: string - description: | - DISCUSSED TO BE DEPRECATED - Syntax sugar - Overrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config - Possible values: - - wait - should wait to exclude host, complete queries and include host back into the cluster - - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster - enum: - - "" - - "wait" - - "nowait" - configMapPropagationTimeout: - type: integer - description: | - Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod` - More details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically - minimum: 0 - maximum: 3600 - cleanup: - type: object - description: "Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle" - # nullable: true - properties: - unknownObjects: - type: object - description: | - Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator, - but do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource. - Default behavior is `Delete`" - # nullable: true - properties: - statefulSet: &TypeObjectsCleanup - type: string - description: "Behavior policy for unknown StatefulSet, `Delete` by default" - enum: - # List ObjectsCleanupXXX constants from model - - "" - - "Retain" - - "Delete" - pvc: - type: string - <<: *TypeObjectsCleanup - description: "Behavior policy for unknown PVC, `Delete` by default" - configMap: - <<: *TypeObjectsCleanup - description: "Behavior policy for unknown ConfigMap, `Delete` by default" - service: - <<: *TypeObjectsCleanup - description: "Behavior policy for unknown Service, `Delete` by default" - reconcileFailedObjects: - type: object - description: | - Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile. - Default behavior is `Retain`" - # nullable: true - properties: - statefulSet: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed StatefulSet, `Retain` by default" - pvc: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed PVC, `Retain` by default" - configMap: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed ConfigMap, `Retain` by default" - service: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed Service, `Retain` by default" - defaults: - type: object - description: | - define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level - More info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults - # nullable: true - properties: - replicasUseFQDN: - <<: *TypeStringBool - description: | - define should replicas be specified by FQDN in ``. - In case of "no" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup - "yes" by default - distributedDDL: - type: object - description: | - allows change `` settings - More info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl - # nullable: true - properties: - profile: - type: string - description: "Settings from this profile will be used to execute DDL queries" - storageManagement: - type: object - description: default storage management options - properties: - provisioner: &TypePVCProvisioner - type: string - description: "defines `PVC` provisioner - be it StatefulSet or the Operator" - enum: - - "" - - "StatefulSet" - - "Operator" - reclaimPolicy: &TypePVCReclaimPolicy - type: string - description: | - defines behavior of `PVC` deletion. - `Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet - enum: - - "" - - "Retain" - - "Delete" - templates: &TypeTemplateNames - type: object - 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" - # nullable: true - properties: - hostTemplate: - type: string - 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`" - podTemplate: - type: string - 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`" - dataVolumeClaimTemplate: - type: string - 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`" - logVolumeClaimTemplate: - type: string - 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`" - serviceTemplate: - type: string - 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" - clusterServiceTemplate: - type: string - 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`" - shardServiceTemplate: - type: string - 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`" - replicaServiceTemplate: - type: string - 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`" - volumeClaimTemplate: - type: string - description: "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate" - configuration: - type: object - description: "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource" - # nullable: true - properties: - zookeeper: &TypeZookeeperConfig - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/` - `clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/ - currently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl` - More details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper - # nullable: true - properties: - nodes: - type: array - description: "describe every available zookeeper cluster node for interaction" - # nullable: true - items: - type: object - #required: - # - host - properties: - host: - type: string - description: "dns name or ip address for Zookeeper node" - port: - type: integer - description: "TCP port which used to connect to Zookeeper node" - minimum: 0 - maximum: 65535 - secure: - <<: *TypeStringBool - description: "if a secure connection to Zookeeper is required" - session_timeout_ms: - type: integer - description: "session timeout during connect to Zookeeper" - operation_timeout_ms: - type: integer - description: "one operation timeout during Zookeeper transactions" - root: - type: string - description: "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)" - identity: - type: string - description: "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper" - users: - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/` - you can configure password hashed, authorization restrictions, database level security row filters etc. - More details: https://clickhouse.tech/docs/en/operations/settings/settings-users/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers - # nullable: true - x-kubernetes-preserve-unknown-fields: true - profiles: - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/` - you can configure any aspect of settings profile - More details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles - # nullable: true - x-kubernetes-preserve-unknown-fields: true - quotas: - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/` - you can configure any aspect of resource quotas - More details: https://clickhouse.tech/docs/en/operations/quotas/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas - # nullable: true - x-kubernetes-preserve-unknown-fields: true - settings: &TypeSettings - type: object - description: | - allows configure `clickhouse-server` settings inside ... tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings - # nullable: true - x-kubernetes-preserve-unknown-fields: true - files: &TypeFiles - type: object - 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/` - every key in this object is the file name - every value in this object is the file content - you can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html - each key could contains prefix like USERS, COMMON, HOST or config.d, users.d, cond.d, wrong prefixes will ignored, subfolders also will ignored - More details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml - # nullable: true - x-kubernetes-preserve-unknown-fields: true - clusters: - type: array - description: | - describes ClickHouse clusters layout and allows change settings on cluster-level, shard-level and replica-level - every cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server` - all Pods will rendered in part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml` - Clusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ - If `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - description: "cluster name, used to identify set of ClickHouse servers and wide used during generate names of related Kubernetes resources" - minLength: 1 - # See namePartClusterMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - zookeeper: - <<: *TypeZookeeperConfig - 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/` - override top-level `chi.spec.configuration.zookeeper` settings - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster - override top-level `chi.spec.configuration.templates` - schemaPolicy: - type: object - description: | - describes how schema is propagated within replicas and shards - properties: - replica: - type: string - description: "how schema is propagated within a replica" - enum: - # List SchemaPolicyReplicaXXX constants from model - - "" - - "None" - - "All" - shard: - type: string - description: "how schema is propagated between shards" - enum: - # List SchemaPolicyShardXXX constants from model - - "" - - "None" - - "All" - - "DistributedTablesOnly" - insecure: - <<: *TypeStringBool - description: optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: optional, open secure ports for cluster - secret: - type: object - description: "optional, shared secret value to secure cluster communications" - properties: - auto: - <<: *TypeStringBool - description: "Auto-generate shared secret value to secure cluster communications" - value: - description: "Cluster shared secret value in plain text" - type: string - valueFrom: - description: "Cluster shared secret source" - type: object - properties: - secretKeyRef: - description: | - Selects a key of a secret in the clickhouse installation namespace. - Should not be used if value is not empty. - type: object - properties: - name: - description: | - Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - name - - key - layout: - type: object - description: | - describe current cluster layout, how much shards in cluster, how much replica in shard - allows override settings on each shard and replica separatelly - # nullable: true - properties: - type: - type: string - description: "DEPRECATED - to be removed soon" - shardsCount: - type: integer - 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" - replicasCount: - type: integer - 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" - shards: - type: array - 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" - # nullable: true - items: - type: object - properties: - name: - type: string - description: "optional, by default shard name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartShardMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - definitionType: - type: string - description: "DEPRECATED - to be removed soon" - weight: - type: integer - description: | - optional, 1 by default, allows setup shard setting which will use during insert into tables with `Distributed` engine, - will apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml - More details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ - internalReplication: - <<: *TypeStringBool - description: | - optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` > 1 and 0 otherwise - allows 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, - will apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml - More details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files` - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard - override top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates` - replicasCount: - type: integer - 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, - shard contains 1 replica by default - override cluster-level `chi.spec.configuration.clusters.layout.replicasCount` - minimum: 1 - replicas: - type: array - description: | - optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards` - # nullable: true - items: - # Host - type: object - properties: - name: - type: string - description: "optional, by default replica name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartReplicaMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - insecure: - <<: *TypeStringBool - description: | - optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: | - optional, open secure ports - tcpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort` - allows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - tlsPort: - type: integer - minimum: 1 - maximum: 65535 - httpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort` - allows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - httpsPort: - type: integer - minimum: 1 - maximum: 65535 - interserverHTTPPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort` - allows connect between replicas inside same shard during fetch replicated data parts HTTP protocol - minimum: 1 - maximum: 65535 - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files` - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica - override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates` - replicas: - type: array - 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" - # nullable: true - items: - type: object - properties: - name: - type: string - description: "optional, by default replica name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartShardMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and will ignore if shard-level `chi.spec.configuration.clusters.layout.shards` present - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica - override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` - shardsCount: - type: integer - 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 - shards: - type: array - description: "optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents" - # nullable: true - items: - # Host - type: object - properties: - name: - type: string - description: "optional, by default shard name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartReplicaMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - insecure: - <<: *TypeStringBool - description: | - optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: | - optional, open secure ports - tcpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort` - allows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - tlsPort: - type: integer - minimum: 1 - maximum: 65535 - httpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort` - allows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - httpsPort: - type: integer - minimum: 1 - maximum: 65535 - interserverHTTPPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort` - allows connect between replicas inside same shard during fetch replicated data parts HTTP protocol - minimum: 1 - maximum: 65535 - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica - override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates` - templates: - type: object - 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" - # nullable: true - properties: - hostTemplates: - type: array - description: "hostTemplate will use during apply to generate `clickhose-server` config files" - # nullable: true - items: - type: object - #required: - # - name - 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: - type: array - description: "define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs" - # nullable: true - items: - type: object - #required: - # - type - properties: - type: - type: string - 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: - # List PortDistributionXXX constants - - "" - - "Unspecified" - - "ClusterScopeIndex" - spec: - # Host - type: object - properties: - name: - type: string - description: "by default, hostname will generate, but this allows define custom name for each `clickhuse-server`" - minLength: 1 - # See namePartReplicaMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - insecure: - <<: *TypeStringBool - description: | - optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: | - optional, open secure ports - tcpPort: - type: integer - description: | - optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply - if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]` - More info: https://clickhouse.tech/docs/en/interfaces/tcp/ - minimum: 1 - maximum: 65535 - tlsPort: - type: integer - minimum: 1 - maximum: 65535 - httpPort: - type: integer - description: | - optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply - if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]` - More info: https://clickhouse.tech/docs/en/interfaces/http/ - minimum: 1 - maximum: 65535 - httpsPort: - type: integer - minimum: 1 - maximum: 65535 - interserverHTTPPort: - type: integer - description: | - optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply - if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]` - More info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port - minimum: 1 - maximum: 65535 - settings: - <<: *TypeSettings - 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/` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - templates: - <<: *TypeTemplateNames - description: "be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do" - - podTemplates: - type: array - description: | - podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone - More information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - 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`" - generateName: - type: string - 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" - zone: - type: object - description: "allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`" - #required: - # - values - properties: - key: - type: string - description: "optional, if defined, allows select kubernetes nodes by label with `name` equal `key`" - values: - type: array - description: "optional, if defined, allows select kubernetes nodes by label with `value` in `values`" - # nullable: true - items: - type: string - distribution: - type: string - description: "DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`" - enum: - - "" - - "Unspecified" - - "OnePerHost" - podDistribution: - type: array - description: "define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster" - # nullable: true - items: - type: object - #required: - # - type - properties: - type: - type: string - description: "you can define multiple affinity policy types" - enum: - # List PodDistributionXXX constants - - "" - - "Unspecified" - - "ClickHouseAntiAffinity" - - "ShardAntiAffinity" - - "ReplicaAntiAffinity" - - "AnotherNamespaceAntiAffinity" - - "AnotherClickHouseInstallationAntiAffinity" - - "AnotherClusterAntiAffinity" - - "MaxNumberPerNode" - - "NamespaceAffinity" - - "ClickHouseInstallationAffinity" - - "ClusterAffinity" - - "ShardAffinity" - - "ReplicaAffinity" - - "PreviousTailAffinity" - - "CircularReplication" - scope: - type: string - description: "scope for apply each podDistribution" - enum: - # list PodDistributionScopeXXX constants - - "" - - "Unspecified" - - "Shard" - - "Replica" - - "Cluster" - - "ClickHouseInstallation" - - "Namespace" - number: - type: integer - description: "define, how much ClickHouse Pods could be inside selected scope with selected distribution type" - minimum: 0 - maximum: 65535 - topologyKey: - type: string - 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" - metadata: - type: object - description: | - allows pass standard object's metadata from template to Pod - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - # TODO specify PodSpec - type: object - description: "allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details" - # nullable: true - x-kubernetes-preserve-unknown-fields: true - - volumeClaimTemplates: - type: array - description: "allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else" - # nullable: true - items: - type: object - #required: - # - name - # - spec - properties: - name: - type: string - description: | - template name, could use to link inside - top-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`, - cluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`, - shard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate` - replica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate` - provisioner: *TypePVCProvisioner - reclaimPolicy: *TypePVCReclaimPolicy - metadata: - type: object - description: | - allows to pass standard object's metadata from template to PVC - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - description: | - allows define all aspects of `PVC` resource - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims - # nullable: true - x-kubernetes-preserve-unknown-fields: true - serviceTemplates: - type: array - description: | - allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level - # nullable: true - items: - type: object - #required: - # - name - # - spec - properties: - name: - type: string - description: | - template name, could use to link inside - chi-level `chi.spec.defaults.templates.serviceTemplate` - cluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate` - shard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate` - replica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate` - generateName: - type: string - 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" - metadata: - # TODO specify ObjectMeta - type: object - description: | - allows pass standard object's metadata from template to Service - Could be use for define specificly for Cloud Provider metadata which impact to behavior of service - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - # TODO specify ServiceSpec - type: object - description: | - describe behavior of generated Service - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - # nullable: true - x-kubernetes-preserve-unknown-fields: true - useTemplates: - type: array - description: "list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `Chi` manifest during render Kubernetes resources to create related ClickHouse clusters" - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - description: "name of `ClickHouseInstallationTemplate` (chit) resource" - namespace: - type: string - description: "Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clichouse-operator`" - useType: - type: string - description: "optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit`" - enum: - # List useTypeXXX constants from model - - "" - - "merge" ---- -# Template Parameters: -# -# KIND=ClickHouseInstallationTemplate -# SINGULAR=clickhouseinstallationtemplate -# PLURAL=clickhouseinstallationtemplates -# SHORT=chit -# OPERATOR_VERSION=0.23.6 -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: clickhouseinstallationtemplates.clickhouse.altinity.com - labels: - clickhouse.altinity.com/chop: 0.23.6 -spec: - group: clickhouse.altinity.com - scope: Namespaced - names: - kind: ClickHouseInstallationTemplate - singular: clickhouseinstallationtemplate - plural: clickhouseinstallationtemplates - shortNames: - - chit - versions: - - name: v1 - served: true - storage: true - additionalPrinterColumns: - - name: version - type: string - description: Operator version - priority: 1 # show in wide view - jsonPath: .status.chop-version - - name: clusters - type: integer - description: Clusters count - jsonPath: .status.clusters - - name: shards - type: integer - description: Shards count - priority: 1 # show in wide view - jsonPath: .status.shards - - name: hosts - type: integer - description: Hosts count - jsonPath: .status.hosts - - name: taskID - type: string - description: TaskID - priority: 1 # show in wide view - jsonPath: .status.taskID - - name: status - type: string - description: CHI status - jsonPath: .status.status - - name: hosts-unchanged - type: integer - description: Unchanged hosts count - priority: 1 # show in wide view - jsonPath: .status.hostsUnchanged - - name: hosts-updated - type: integer - description: Updated hosts count - priority: 1 # show in wide view - jsonPath: .status.hostsUpdated - - name: hosts-added - type: integer - description: Added hosts count - priority: 1 # show in wide view - jsonPath: .status.hostsAdded - - name: hosts-completed - type: integer - description: Completed hosts count - jsonPath: .status.hostsCompleted - - name: hosts-deleted - type: integer - description: Hosts deleted count - priority: 1 # show in wide view - jsonPath: .status.hostsDeleted - - name: hosts-delete - type: integer - description: Hosts to be deleted count - priority: 1 # show in wide view - jsonPath: .status.hostsDelete - - name: endpoint - type: string - description: Client access endpoint - priority: 1 # show in wide view - jsonPath: .status.endpoint - - name: age - type: date - description: Age of the resource - # Displayed in all priorities - jsonPath: .metadata.creationTimestamp - subresources: - status: {} - schema: - openAPIV3Schema: - description: "define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more ClickHouse clusters" - type: object - required: - - spec - 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 - status: - type: object - 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: - chop-version: - type: string - description: "ClickHouse operator version" - chop-commit: - type: string - description: "ClickHouse operator git commit SHA" - chop-date: - type: string - description: "ClickHouse operator build date" - chop-ip: - type: string - description: "IP address of the operator's pod which managed this CHI" - clusters: - type: integer - minimum: 0 - description: "Clusters count" - shards: - type: integer - minimum: 0 - description: "Shards count" - replicas: - type: integer - minimum: 0 - description: "Replicas count" - hosts: - type: integer - minimum: 0 - description: "Hosts count" - status: - type: string - description: "Status" - taskID: - type: string - description: "Current task id" - taskIDsStarted: - type: array - description: "Started task ids" - nullable: true - items: - type: string - taskIDsCompleted: - type: array - description: "Completed task ids" - nullable: true - items: - type: string - action: - type: string - description: "Action" - actions: - type: array - description: "Actions" - nullable: true - items: - type: string - error: - type: string - description: "Last error" - errors: - type: array - description: "Errors" - nullable: true - items: - type: string - hostsUnchanged: - type: integer - minimum: 0 - description: "Unchanged Hosts count" - hostsUpdated: - type: integer - minimum: 0 - description: "Updated Hosts count" - hostsAdded: - type: integer - minimum: 0 - description: "Added Hosts count" - hostsCompleted: - type: integer - minimum: 0 - description: "Completed Hosts count" - hostsDeleted: - type: integer - minimum: 0 - description: "Deleted Hosts count" - hostsDelete: - type: integer - minimum: 0 - description: "About to delete Hosts count" - pods: - type: array - description: "Pods" - nullable: true - items: - type: string - pod-ips: - type: array - description: "Pod IPs" - nullable: true - items: - type: string - fqdns: - type: array - description: "Pods FQDNs" - nullable: true - items: - type: string - endpoint: - type: string - description: "Endpoint" - generation: - type: integer - minimum: 0 - description: "Generation" - normalized: - type: object - description: "Normalized CHI requested" - x-kubernetes-preserve-unknown-fields: true - normalizedCompleted: - type: object - description: "Normalized CHI completed" - x-kubernetes-preserve-unknown-fields: true - hostsWithTablesCreated: - type: array - description: "List of hosts with tables created by the operator" - nullable: true - items: - type: string - usedTemplates: - type: array - description: "List of templates used to build this CHI" - nullable: true - x-kubernetes-preserve-unknown-fields: true - items: - type: object - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - # x-kubernetes-preserve-unknown-fields: true - description: | - Specification of the desired behavior of one or more ClickHouse clusters - More info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md - properties: - taskID: - type: string - description: | - Allows to define custom taskID for CHI update and watch status of this update execution. - Displayed in all .status.taskID* fields. - By default (if not filled) every update of CHI manifest will generate random taskID - stop: &TypeStringBool - type: string - description: | - Allows to stop all ClickHouse clusters defined in a CHI. - Works as the following: - - 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. - - 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. - enum: - # List StringBoolXXX constants from model - - "" - - "0" - - "1" - - "False" - - "false" - - "True" - - "true" - - "No" - - "no" - - "Yes" - - "yes" - - "Off" - - "off" - - "On" - - "on" - - "Disable" - - "disable" - - "Enable" - - "enable" - - "Disabled" - - "disabled" - - "Enabled" - - "enabled" - restart: - type: string - description: | - In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile. - This options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts. - enum: - - "" - - "RollingUpdate" - troubleshoot: - <<: *TypeStringBool - description: | - Allows to troubleshoot Pods during CrashLoopBack state. - This may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start. - Command within ClickHouse container is modified with `sleep` in order to avoid quick restarts - and give time to troubleshoot via CLI. - Liveness and Readiness probes are disabled as well. - namespaceDomainPattern: - type: string - description: | - Custom domain pattern which will be used for DNS names of `Service` or `Pod`. - Typical use scenario - custom cluster domain in Kubernetes cluster - Example: %s.svc.my.test - templating: - type: object - # nullable: true - description: | - Optional, applicable inside ClickHouseInstallationTemplate only. - Defines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s)." - properties: - policy: - type: string - description: | - When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate - will be auto-added into ClickHouseInstallation, selectable by `chiSelector`. - Default value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly. - enum: - - "" - - "auto" - - "manual" - chiSelector: - type: object - description: "Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate" - # nullable: true - x-kubernetes-preserve-unknown-fields: true - reconciling: - type: object - description: "Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side" - # nullable: true - properties: - policy: - type: string - description: | - DISCUSSED TO BE DEPRECATED - Syntax sugar - Overrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config - Possible values: - - wait - should wait to exclude host, complete queries and include host back into the cluster - - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster - enum: - - "" - - "wait" - - "nowait" - configMapPropagationTimeout: - type: integer - description: | - Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod` - More details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically - minimum: 0 - maximum: 3600 - cleanup: - type: object - description: "Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle" - # nullable: true - properties: - unknownObjects: - type: object - description: | - Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator, - but do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource. - Default behavior is `Delete`" - # nullable: true - properties: - statefulSet: &TypeObjectsCleanup - type: string - description: "Behavior policy for unknown StatefulSet, `Delete` by default" - enum: - # List ObjectsCleanupXXX constants from model - - "" - - "Retain" - - "Delete" - pvc: - type: string - <<: *TypeObjectsCleanup - description: "Behavior policy for unknown PVC, `Delete` by default" - configMap: - <<: *TypeObjectsCleanup - description: "Behavior policy for unknown ConfigMap, `Delete` by default" - service: - <<: *TypeObjectsCleanup - description: "Behavior policy for unknown Service, `Delete` by default" - reconcileFailedObjects: - type: object - description: | - Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile. - Default behavior is `Retain`" - # nullable: true - properties: - statefulSet: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed StatefulSet, `Retain` by default" - pvc: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed PVC, `Retain` by default" - configMap: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed ConfigMap, `Retain` by default" - service: - <<: *TypeObjectsCleanup - description: "Behavior policy for failed Service, `Retain` by default" - defaults: - type: object - description: | - define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level - More info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults - # nullable: true - properties: - replicasUseFQDN: - <<: *TypeStringBool - description: | - define should replicas be specified by FQDN in ``. - In case of "no" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup - "yes" by default - distributedDDL: - type: object - description: | - allows change `` settings - More info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl - # nullable: true - properties: - profile: - type: string - description: "Settings from this profile will be used to execute DDL queries" - storageManagement: - type: object - description: default storage management options - properties: - provisioner: &TypePVCProvisioner - type: string - description: "defines `PVC` provisioner - be it StatefulSet or the Operator" - enum: - - "" - - "StatefulSet" - - "Operator" - reclaimPolicy: &TypePVCReclaimPolicy - type: string - description: | - defines behavior of `PVC` deletion. - `Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet - enum: - - "" - - "Retain" - - "Delete" - templates: &TypeTemplateNames - type: object - 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" - # nullable: true - properties: - hostTemplate: - type: string - 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`" - podTemplate: - type: string - 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`" - dataVolumeClaimTemplate: - type: string - 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`" - logVolumeClaimTemplate: - type: string - 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`" - serviceTemplate: - type: string - 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" - clusterServiceTemplate: - type: string - 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`" - shardServiceTemplate: - type: string - 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`" - replicaServiceTemplate: - type: string - 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`" - volumeClaimTemplate: - type: string - description: "DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate" - configuration: - type: object - description: "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource" - # nullable: true - properties: - zookeeper: &TypeZookeeperConfig - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/` - `clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/ - currently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl` - More details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper - # nullable: true - properties: - nodes: - type: array - description: "describe every available zookeeper cluster node for interaction" - # nullable: true - items: - type: object - #required: - # - host - properties: - host: - type: string - description: "dns name or ip address for Zookeeper node" - port: - type: integer - description: "TCP port which used to connect to Zookeeper node" - minimum: 0 - maximum: 65535 - secure: - <<: *TypeStringBool - description: "if a secure connection to Zookeeper is required" - session_timeout_ms: - type: integer - description: "session timeout during connect to Zookeeper" - operation_timeout_ms: - type: integer - description: "one operation timeout during Zookeeper transactions" - root: - type: string - description: "optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)" - identity: - type: string - description: "optional access credentials string with `user:password` format used when use digest authorization in Zookeeper" - users: - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/` - you can configure password hashed, authorization restrictions, database level security row filters etc. - More details: https://clickhouse.tech/docs/en/operations/settings/settings-users/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers - # nullable: true - x-kubernetes-preserve-unknown-fields: true - profiles: - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/` - you can configure any aspect of settings profile - More details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles - # nullable: true - x-kubernetes-preserve-unknown-fields: true - quotas: - type: object - description: | - allows configure .. section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/` - you can configure any aspect of resource quotas - More details: https://clickhouse.tech/docs/en/operations/quotas/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas - # nullable: true - x-kubernetes-preserve-unknown-fields: true - settings: &TypeSettings - type: object - description: | - allows configure `clickhouse-server` settings inside ... tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - Your yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings - # nullable: true - x-kubernetes-preserve-unknown-fields: true - files: &TypeFiles - type: object - 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/` - every key in this object is the file name - every value in this object is the file content - you can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html - each key could contains prefix like USERS, COMMON, HOST or config.d, users.d, cond.d, wrong prefixes will ignored, subfolders also will ignored - More details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml - # nullable: true - x-kubernetes-preserve-unknown-fields: true - clusters: - type: array - description: | - describes ClickHouse clusters layout and allows change settings on cluster-level, shard-level and replica-level - every cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server` - all Pods will rendered in part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml` - Clusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ - If `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - description: "cluster name, used to identify set of ClickHouse servers and wide used during generate names of related Kubernetes resources" - minLength: 1 - # See namePartClusterMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - zookeeper: - <<: *TypeZookeeperConfig - 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/` - override top-level `chi.spec.configuration.zookeeper` settings - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster - override top-level `chi.spec.configuration.templates` - schemaPolicy: - type: object - description: | - describes how schema is propagated within replicas and shards - properties: - replica: - type: string - description: "how schema is propagated within a replica" - enum: - # List SchemaPolicyReplicaXXX constants from model - - "" - - "None" - - "All" - shard: - type: string - description: "how schema is propagated between shards" - enum: - # List SchemaPolicyShardXXX constants from model - - "" - - "None" - - "All" - - "DistributedTablesOnly" - insecure: - <<: *TypeStringBool - description: optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: optional, open secure ports for cluster - secret: - type: object - description: "optional, shared secret value to secure cluster communications" - properties: - auto: - <<: *TypeStringBool - description: "Auto-generate shared secret value to secure cluster communications" - value: - description: "Cluster shared secret value in plain text" - type: string - valueFrom: - description: "Cluster shared secret source" - type: object - properties: - secretKeyRef: - description: | - Selects a key of a secret in the clickhouse installation namespace. - Should not be used if value is not empty. - type: object - properties: - name: - description: | - Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - name - - key - layout: - type: object - description: | - describe current cluster layout, how much shards in cluster, how much replica in shard - allows override settings on each shard and replica separatelly - # nullable: true - properties: - type: - type: string - description: "DEPRECATED - to be removed soon" - shardsCount: - type: integer - 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" - replicasCount: - type: integer - 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" - shards: - type: array - 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" - # nullable: true - items: - type: object - properties: - name: - type: string - description: "optional, by default shard name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartShardMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - definitionType: - type: string - description: "DEPRECATED - to be removed soon" - weight: - type: integer - description: | - optional, 1 by default, allows setup shard setting which will use during insert into tables with `Distributed` engine, - will apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml - More details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ - internalReplication: - <<: *TypeStringBool - description: | - optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` > 1 and 0 otherwise - allows 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, - will apply in inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml - More details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files` - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard - override top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates` - replicasCount: - type: integer - 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, - shard contains 1 replica by default - override cluster-level `chi.spec.configuration.clusters.layout.replicasCount` - minimum: 1 - replicas: - type: array - description: | - optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards` - # nullable: true - items: - # Host - type: object - properties: - name: - type: string - description: "optional, by default replica name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartReplicaMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - insecure: - <<: *TypeStringBool - description: | - optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: | - optional, open secure ports - tcpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort` - allows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - tlsPort: - type: integer - minimum: 1 - maximum: 65535 - httpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort` - allows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - httpsPort: - type: integer - minimum: 1 - maximum: 65535 - interserverHTTPPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort` - allows connect between replicas inside same shard during fetch replicated data parts HTTP protocol - minimum: 1 - maximum: 65535 - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files` - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica - override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates` - replicas: - type: array - 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" - # nullable: true - items: - type: object - properties: - name: - type: string - description: "optional, by default replica name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartShardMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and will ignore if shard-level `chi.spec.configuration.clusters.layout.shards` present - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica - override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` - shardsCount: - type: integer - 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 - shards: - type: array - description: "optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents" - # nullable: true - items: - # Host - type: object - properties: - name: - type: string - description: "optional, by default shard name is generated, but you can override it and setup custom name" - minLength: 1 - # See namePartReplicaMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - insecure: - <<: *TypeStringBool - description: | - optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: | - optional, open secure ports - tcpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort` - allows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - tlsPort: - type: integer - minimum: 1 - maximum: 65535 - httpPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort` - allows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service` - minimum: 1 - maximum: 65535 - httpsPort: - type: integer - minimum: 1 - maximum: 65535 - interserverHTTPPort: - type: integer - description: | - optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort` - allows connect between replicas inside same shard during fetch replicated data parts HTTP protocol - minimum: 1 - maximum: 65535 - settings: - <<: *TypeSettings - 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/` - override top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - override top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents - templates: - <<: *TypeTemplateNames - description: | - optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica - override top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates` - templates: - type: object - 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" - # nullable: true - properties: - hostTemplates: - type: array - description: "hostTemplate will use during apply to generate `clickhose-server` config files" - # nullable: true - items: - type: object - #required: - # - name - 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: - type: array - description: "define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs" - # nullable: true - items: - type: object - #required: - # - type - properties: - type: - type: string - 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: - # List PortDistributionXXX constants - - "" - - "Unspecified" - - "ClusterScopeIndex" - spec: - # Host - type: object - properties: - name: - type: string - description: "by default, hostname will generate, but this allows define custom name for each `clickhuse-server`" - minLength: 1 - # See namePartReplicaMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - insecure: - <<: *TypeStringBool - description: | - optional, open insecure ports for cluster, defaults to "yes" - secure: - <<: *TypeStringBool - description: | - optional, open secure ports - tcpPort: - type: integer - description: | - optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply - if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]` - More info: https://clickhouse.tech/docs/en/interfaces/tcp/ - minimum: 1 - maximum: 65535 - tlsPort: - type: integer - minimum: 1 - maximum: 65535 - httpPort: - type: integer - description: | - optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply - if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]` - More info: https://clickhouse.tech/docs/en/interfaces/http/ - minimum: 1 - maximum: 65535 - httpsPort: - type: integer - minimum: 1 - maximum: 65535 - interserverHTTPPort: - type: integer - description: | - optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply - if specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]` - More info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port - minimum: 1 - maximum: 65535 - settings: - <<: *TypeSettings - 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/` - More details: https://clickhouse.tech/docs/en/operations/settings/settings/ - files: - <<: *TypeFiles - 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/` - templates: - <<: *TypeTemplateNames - description: "be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do" - - podTemplates: - type: array - description: | - podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone - More information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - 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`" - generateName: - type: string - 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" - zone: - type: object - description: "allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`" - #required: - # - values - properties: - key: - type: string - description: "optional, if defined, allows select kubernetes nodes by label with `name` equal `key`" - values: - type: array - description: "optional, if defined, allows select kubernetes nodes by label with `value` in `values`" - # nullable: true - items: - type: string - distribution: - type: string - description: "DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`" - enum: - - "" - - "Unspecified" - - "OnePerHost" - podDistribution: - type: array - description: "define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster" - # nullable: true - items: - type: object - #required: - # - type - properties: - type: - type: string - description: "you can define multiple affinity policy types" - enum: - # List PodDistributionXXX constants - - "" - - "Unspecified" - - "ClickHouseAntiAffinity" - - "ShardAntiAffinity" - - "ReplicaAntiAffinity" - - "AnotherNamespaceAntiAffinity" - - "AnotherClickHouseInstallationAntiAffinity" - - "AnotherClusterAntiAffinity" - - "MaxNumberPerNode" - - "NamespaceAffinity" - - "ClickHouseInstallationAffinity" - - "ClusterAffinity" - - "ShardAffinity" - - "ReplicaAffinity" - - "PreviousTailAffinity" - - "CircularReplication" - scope: - type: string - description: "scope for apply each podDistribution" - enum: - # list PodDistributionScopeXXX constants - - "" - - "Unspecified" - - "Shard" - - "Replica" - - "Cluster" - - "ClickHouseInstallation" - - "Namespace" - number: - type: integer - description: "define, how much ClickHouse Pods could be inside selected scope with selected distribution type" - minimum: 0 - maximum: 65535 - topologyKey: - type: string - 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" - metadata: - type: object - description: | - allows pass standard object's metadata from template to Pod - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - # TODO specify PodSpec - type: object - description: "allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details" - # nullable: true - x-kubernetes-preserve-unknown-fields: true - - volumeClaimTemplates: - type: array - description: "allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else" - # nullable: true - items: - type: object - #required: - # - name - # - spec - properties: - name: - type: string - description: | - template name, could use to link inside - top-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`, - cluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`, - shard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate` - replica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate` - provisioner: *TypePVCProvisioner - reclaimPolicy: *TypePVCReclaimPolicy - metadata: - type: object - description: | - allows to pass standard object's metadata from template to PVC - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - description: | - allows define all aspects of `PVC` resource - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims - # nullable: true - x-kubernetes-preserve-unknown-fields: true - serviceTemplates: - type: array - description: | - allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level - # nullable: true - items: - type: object - #required: - # - name - # - spec - properties: - name: - type: string - description: | - template name, could use to link inside - chi-level `chi.spec.defaults.templates.serviceTemplate` - cluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate` - shard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate` - replica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate` - generateName: - type: string - 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" - metadata: - # TODO specify ObjectMeta - type: object - description: | - allows pass standard object's metadata from template to Service - Could be use for define specificly for Cloud Provider metadata which impact to behavior of service - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - # TODO specify ServiceSpec - type: object - description: | - describe behavior of generated Service - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - # nullable: true - x-kubernetes-preserve-unknown-fields: true - useTemplates: - type: array - description: "list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `Chi` manifest during render Kubernetes resources to create related ClickHouse clusters" - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - description: "name of `ClickHouseInstallationTemplate` (chit) resource" - namespace: - type: string - description: "Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clichouse-operator`" - useType: - type: string - description: "optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit`" - enum: - # List useTypeXXX constants from model - - "" - - "merge" ---- -# Template Parameters: -# -# NONE -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: clickhouseoperatorconfigurations.clickhouse.altinity.com - labels: - clickhouse.altinity.com/chop: 0.23.6 -spec: - group: clickhouse.altinity.com - scope: Namespaced - names: - kind: ClickHouseOperatorConfiguration - singular: clickhouseoperatorconfiguration - plural: clickhouseoperatorconfigurations - shortNames: - - chopconf - versions: - - name: v1 - served: true - storage: true - additionalPrinterColumns: - - name: namespaces - type: string - description: Watch namespaces - jsonPath: .status - - name: age - type: date - description: Age of the resource - # Displayed in all priorities - jsonPath: .metadata.creationTimestamp - schema: - openAPIV3Schema: - type: object - 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" - x-kubernetes-preserve-unknown-fields: true - properties: - status: - type: object - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - description: | - Allows to define settings of the clickhouse-operator. - More info: https://github.com/Altinity/clickhouse-operator/blob/master/config/config.yaml - Check into etc-clickhouse-operator* ConfigMaps if you need more control - x-kubernetes-preserve-unknown-fields: true - properties: - watch: - type: object - description: "Parameters for watch kubernetes resources which used by clickhouse-operator deployment" - properties: - namespaces: - type: array - description: "List of namespaces where clickhouse-operator watches for events." - items: - type: string - clickhouse: - type: object - description: "Clickhouse related parameters used by clickhouse-operator" - properties: - configuration: - type: object - properties: - file: - type: object - properties: - path: - type: object - description: | - Each 'path' can be either absolute or relative. - In case path is absolute - it is used as is. - In case path is relative - it is relative to the folder where configuration file you are reading right now is located. - properties: - common: - type: string - description: | - Path to the folder where ClickHouse configuration files common for all instances within a CHI are located. - Default value - config.d - host: - type: string - description: | - Path to the folder where ClickHouse configuration files unique for each instance (host) within a CHI are located. - Default value - conf.d - user: - type: string - description: | - Path to the folder where ClickHouse configuration files with users settings are located. - Files are common for all instances within a CHI. - Default value - users.d - user: - type: object - description: "Default parameters for any user which will create" - properties: - default: - type: object - properties: - profile: - type: string - description: "ClickHouse server configuration `...` for any " - quota: - type: string - description: "ClickHouse server configuration `...` for any " - networksIP: - type: array - description: "ClickHouse server configuration `...` for any " - items: - type: string - password: - type: string - description: "ClickHouse server configuration `...` for any " - network: - type: object - description: "Default network parameters for any user which will create" - properties: - hostRegexpTemplate: - type: string - description: "ClickHouse server configuration `...` for any " - configurationRestartPolicy: - type: object - description: "Configuration restart policy describes what configuration changes require ClickHouse restart" - properties: - rules: - type: array - description: "Array of set of rules per specified ClickHouse versions" - items: - type: object - properties: - version: - type: string - description: "ClickHouse version expression" - rules: - type: array - description: "Set of configuration rules for specified ClickHouse version" - items: - type: object - description: "setting: value pairs for configuration restart policy" - access: - type: object - description: "parameters which use for connect to clickhouse from clickhouse-operator deployment" - properties: - scheme: - type: string - description: "The scheme to user for connecting to ClickHouse. Possible values: http, https, auto" - username: - type: string - description: "ClickHouse username to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName" - password: - type: string - description: "ClickHouse password to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName" - rootCA: - type: string - description: "Root certificate authority that clients use when verifying server certificates. Used for https connection to ClickHouse" - secret: - type: object - properties: - namespace: - type: string - description: "Location of k8s Secret with username and password to be used by operator to connect to ClickHouse instances" - name: - type: string - description: "Name of k8s Secret with username and password to be used by operator to connect to ClickHouse instances" - port: - type: integer - minimum: 1 - maximum: 65535 - description: "Port to be used by operator to connect to ClickHouse instances" - timeouts: - type: object - description: "Timeouts used to limit connection and queries from the operator to ClickHouse instances, In seconds" - properties: - connect: - type: integer - minimum: 1 - maximum: 10 - description: "Timout to setup connection from the operator to ClickHouse instances. In seconds." - query: - type: integer - minimum: 1 - maximum: 600 - description: "Timout to perform SQL query from the operator to ClickHouse instances. In seconds." - metrics: - type: object - description: "parameters which use for connect to fetch metrics from clickhouse by clickhouse-operator" - properties: - timeouts: - type: object - description: | - Timeouts used to limit connection and queries from the metrics exporter to ClickHouse instances - Specified in seconds. - properties: - collect: - type: integer - minimum: 1 - maximum: 600 - description: | - Timeout used to limit metrics collection request. In seconds. - Upon reaching this timeout metrics collection is aborted and no more metrics are collected in this cycle. - All collected metrics are returned. - template: - type: object - description: "Parameters which are used if you want to generate ClickHouseInstallationTemplate custom resources from files which are stored inside clickhouse-operator deployment" - properties: - chi: - type: object - properties: - policy: - type: string - description: | - CHI template updates handling policy - Possible policy values: - - ReadOnStart. Accept CHIT updates on the operators start only. - - ApplyOnNextReconcile. Accept CHIT updates at all time. Apply news CHITs on next regular reconcile of the CHI - enum: - - "" - - "ReadOnStart" - - "ApplyOnNextReconcile" - path: - type: string - description: "Path to folder where ClickHouseInstallationTemplate .yaml manifests are located." - reconcile: - type: object - description: "allow tuning reconciling process" - properties: - runtime: - type: object - description: "runtime parameters for clickhouse-operator process which are used during reconcile cycle" - properties: - reconcileCHIsThreadsNumber: - type: integer - minimum: 1 - maximum: 65535 - description: "How many goroutines will be used to reconcile CHIs in parallel, 10 by default" - reconcileShardsThreadsNumber: - type: integer - minimum: 1 - maximum: 65535 - description: "How many goroutines will be used to reconcile shards of a cluster in parallel, 1 by default" - reconcileShardsMaxConcurrencyPercent: - type: integer - minimum: 0 - maximum: 100 - description: "The maximum percentage of cluster shards that may be reconciled in parallel, 50 percent by default." - statefulSet: - type: object - description: "Allow change default behavior for reconciling StatefulSet which generated by clickhouse-operator" - properties: - create: - type: object - description: "Behavior during create StatefulSet" - properties: - onFailure: - type: string - description: | - What to do in case created StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds - Possible options: - 1. abort - do nothing, just break the process and wait for admin. - 2. delete - delete newly created problematic StatefulSet. - 3. ignore (default) - ignore error, pretend nothing happened and move on to the next StatefulSet. - update: - type: object - description: "Behavior during update StatefulSet" - properties: - timeout: - type: integer - description: "How many seconds to wait for created/updated StatefulSet to be Ready" - pollInterval: - type: integer - description: "How many seconds to wait between checks for created/updated StatefulSet status" - onFailure: - type: string - description: | - What to do in case updated StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds - Possible options: - 1. abort - do nothing, just break the process and wait for admin. - 2. rollback (default) - delete Pod and rollback StatefulSet to previous Generation. Pod would be recreated by StatefulSet based on rollback-ed configuration. - 3. ignore - ignore error, pretend nothing happened and move on to the next StatefulSet. - host: - type: object - description: | - Whether the operator during reconcile procedure should wait for a ClickHouse host: - - to be excluded from a ClickHouse cluster - - to complete all running queries - - to be included into a ClickHouse cluster - respectfully before moving forward - - properties: - wait: - type: object - properties: - exclude: &TypeStringBool - type: string - description: "Whether the operator during reconcile procedure should wait for a ClickHouse host to be excluded from a ClickHouse cluster" - enum: - # List StringBoolXXX constants from model - - "" - - "0" - - "1" - - "False" - - "false" - - "True" - - "true" - - "No" - - "no" - - "Yes" - - "yes" - - "Off" - - "off" - - "On" - - "on" - - "Disable" - - "disable" - - "Enable" - - "enable" - - "Disabled" - - "disabled" - - "Enabled" - - "enabled" - queries: - <<: *TypeStringBool - description: "Whether the operator during reconcile procedure should wait for a ClickHouse host to complete all running queries" - include: - <<: *TypeStringBool - description: "Whether the operator during reconcile procedure should wait for a ClickHouse host to be included into a ClickHouse cluster" - annotation: - type: object - description: "defines which metadata.annotations items will include or exclude during render StatefulSet, Pod, PVC resources" - properties: - include: - type: array - description: | - When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`, - include annotations with names from the following list - items: - type: string - exclude: - type: array - description: | - When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`, - exclude annotations with names from the following list - items: - type: string - label: - type: object - description: "defines which metadata.labels will include or exclude during render StatefulSet, Pod, PVC resources" - properties: - include: - type: array - description: | - When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`, - include labels from the following list - items: - type: string - exclude: - type: array - items: - type: string - description: | - When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`, - exclude labels from the following list - appendScope: - <<: *TypeStringBool - description: | - Whether to append *Scope* labels to StatefulSet and Pod - - "LabelShardScopeIndex" - - "LabelReplicaScopeIndex" - - "LabelCHIScopeIndex" - - "LabelCHIScopeCycleSize" - - "LabelCHIScopeCycleIndex" - - "LabelCHIScopeCycleOffset" - - "LabelClusterScopeIndex" - - "LabelClusterScopeCycleSize" - - "LabelClusterScopeCycleIndex" - - "LabelClusterScopeCycleOffset" - statefulSet: - type: object - description: "define StatefulSet-specific parameters" - properties: - revisionHistoryLimit: - type: integer - description: | - revisionHistoryLimit is the maximum number of revisions that will be - maintained in the StatefulSet's revision history. - Look details in `statefulset.spec.revisionHistoryLimit` - pod: - type: object - description: "define pod specific parameters" - properties: - terminationGracePeriod: - type: integer - description: | - Optional duration in seconds the pod needs to terminate gracefully. - Look details in `pod.spec.terminationGracePeriodSeconds` - logger: - type: object - description: "allow setup clickhouse-operator logger behavior" - properties: - logtostderr: - type: string - description: "boolean, allows logs to stderr" - alsologtostderr: - type: string - description: "boolean allows logs to stderr and files both" - v: - type: string - description: "verbosity level of clickhouse-operator log, default - 1 max - 9" - stderrthreshold: - type: string - vmodule: - type: string - description: | - Comma-separated list of filename=N, where filename (can be a pattern) must have no .go ext, and N is a V level. - Ex.: file*=2 sets the 'V' to 2 in all files with names like file*. - log_backtrace_at: - type: string - description: | - It can be set to a file and line number with a logging line. - Ex.: file.go:123 - Each time when this line is being executed, a stack trace will be written to the Info log. ---- -# Template Parameters: -# -# OPERATOR_VERSION=0.23.6 -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: clickhousekeeperinstallations.clickhouse-keeper.altinity.com - labels: - clickhouse-keeper.altinity.com/chop: 0.23.6 -spec: - group: clickhouse-keeper.altinity.com - scope: Namespaced - names: - kind: ClickHouseKeeperInstallation - singular: clickhousekeeperinstallation - plural: clickhousekeeperinstallations - shortNames: - - chk - versions: - - name: v1 - served: true - storage: true - additionalPrinterColumns: - - name: status - type: string - description: CHK status - jsonPath: .status.status - - name: replicas - type: integer - description: Replica count - priority: 1 # show in wide view - jsonPath: .status.replicas - - name: age - type: date - description: Age of the resource - # Displayed in all priorities - jsonPath: .metadata.creationTimestamp - subresources: - status: {} - schema: - openAPIV3Schema: - type: object - required: - - spec - description: "define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one ClickHouse Keeper cluster" - properties: - apiVersion: - type: string - 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 - kind: - type: string - 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 - metadata: - type: object - status: - type: object - description: | - Current ClickHouseKeeperInstallation status, contains many fields like overall status, desired replicas and ready replica list with their endpoints - properties: - chop-version: - type: string - description: "ClickHouse operator version" - chop-commit: - type: string - description: "ClickHouse operator git commit SHA" - chop-date: - type: string - description: "ClickHouse operator build date" - chop-ip: - type: string - description: "IP address of the operator's pod which managed this CHI" - status: - type: string - description: "Status" - replicas: - type: integer - format: int32 - description: Replicas is the number of number of desired replicas in the cluster - readyReplicas: - type: array - description: ReadyReplicas is the array of endpoints of those ready replicas in the cluster - items: - type: object - properties: - host: - type: string - description: dns name or ip address for Keeper node - port: - type: integer - minimum: 0 - maximum: 65535 - description: TCP port which used to connect to Keeper node - secure: - type: string - description: if a secure connection to Keeper is required - normalized: - type: object - description: "Normalized CHK requested" - x-kubernetes-preserve-unknown-fields: true - normalizedCompleted: - type: object - description: "Normalized CHK completed" - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - description: KeeperSpec defines the desired state of a Keeper cluster - properties: - namespaceDomainPattern: - type: string - description: | - Custom domain pattern which will be used for DNS names of `Service` or `Pod`. - Typical use scenario - custom cluster domain in Kubernetes cluster - Example: %s.svc.my.test - replicas: - type: integer - format: int32 - description: | - Replicas is the expected size of the keeper cluster. - The valid range of size is from 1 to 7. - minimum: 1 - maximum: 7 - configuration: - type: object - description: "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource" - # nullable: true - properties: - settings: - type: object - description: "allows configure multiple aspects and behavior for `clickhouse-keeper` instance" - x-kubernetes-preserve-unknown-fields: true - clusters: - type: array - description: | - describes ClickHouseKeeper clusters layout and allows change settings on cluster-level and replica-level - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - description: "cluster name, used to identify set of ClickHouseKeeper servers and wide used during generate names of related Kubernetes resources" - minLength: 1 - # See namePartClusterMaxLen const - maxLength: 15 - pattern: "^[a-zA-Z0-9-]{0,15}$" - layout: - type: object - description: | - describe current cluster layout, how many replicas - # nullable: true - properties: - replicasCount: - type: integer - description: "how many replicas in ClickHouseKeeper cluster" - templates: - type: object - 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" - # nullable: true - properties: - podTemplates: - type: array - description: | - podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone - More information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates - # nullable: true - items: - type: object - #required: - # - name - properties: - name: - type: string - 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`" - metadata: - type: object - description: | - allows pass standard object's metadata from template to Pod - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - # TODO specify PodSpec - type: object - description: "allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details" - # nullable: true - x-kubernetes-preserve-unknown-fields: true - - volumeClaimTemplates: - type: array - description: "allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else" - # nullable: true - items: - type: object - #required: - # - name - # - spec - properties: - name: - type: string - description: | - template name, could use to link inside - top-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`, - cluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`, - shard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate` - replica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate` - metadata: - type: object - description: | - allows to pass standard object's metadata from template to PVC - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - type: object - description: | - allows define all aspects of `PVC` resource - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims - # nullable: true - x-kubernetes-preserve-unknown-fields: true - serviceTemplates: - type: array - description: | - allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level - # nullable: true - items: - type: object - #required: - # - name - # - spec - properties: - name: - type: string - description: | - template name, could use to link inside - chi-level `chi.spec.defaults.templates.serviceTemplate` - cluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate` - shard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate` - replica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate` - metadata: - # TODO specify ObjectMeta - type: object - description: | - allows pass standard object's metadata from template to Service - Could be use for define specificly for Cloud Provider metadata which impact to behavior of service - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - # nullable: true - x-kubernetes-preserve-unknown-fields: true - spec: - # TODO specify ServiceSpec - type: object - description: | - describe behavior of generated Service - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - # nullable: true - x-kubernetes-preserve-unknown-fields: true diff --git a/deployment/helm_chart/opik/templates/clickhouse-operator-install-bundle.yaml b/deployment/helm_chart/opik/templates/clickhouse-operator-install-bundle.yaml deleted file mode 100644 index e8ba75fa2..000000000 --- a/deployment/helm_chart/opik/templates/clickhouse-operator-install-bundle.yaml +++ /dev/null @@ -1,1201 +0,0 @@ ---- -# Setup ServiceAccount -apiVersion: v1 -kind: ServiceAccount -metadata: - name: clickhouse-operator - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 ---- -# Template Parameters: -# -# NAMESPACE={{ .Release.namespace }} -# COMMENT=# -# ROLE_KIND=Role -# ROLE_NAME=clickhouse-operator -# ROLE_BINDING_KIND=RoleBinding -# ROLE_BINDING_NAME=clickhouse-operator -# - - -# Specifies either -# ClusterRole -# or -# Role -# to be bound to ServiceAccount. -# ClusterRole is namespace-less and must have unique name -# Role is namespace-bound -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: clickhouse-operator - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 -rules: - - # - # Core API group - # - - - apiGroups: - - "" - resources: - - configmaps - - services - - persistentvolumeclaims - - secrets - verbs: - - get - - list - - patch - - update - - watch - - create - - delete - - apiGroups: - - "" - resources: - - endpoints - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - apiGroups: - - "" - resources: - - persistentvolumes - verbs: - - get - - list - - patch - - update - - watch - - apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - patch - - update - - watch - - delete - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - # - # apps.* resources - # - - - apiGroups: - - apps - resources: - - statefulsets - verbs: - - get - - list - - patch - - update - - watch - - create - - delete - - apiGroups: - - apps - resources: - - replicasets - verbs: - - get - - patch - - update - - delete - # The operator deployment personally, identified by name - - apiGroups: - - apps - resources: - - deployments - resourceNames: - - clickhouse-operator - verbs: - - get - - patch - - update - - delete - - # - # policy.* resources - # - - - apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - get - - list - - patch - - update - - watch - - create - - delete - - # - # apiextensions - # - - - apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - get - - list - - # - # The operator's specific Custom Resources - # - - # clickhouse - related resources - - apiGroups: - - clickhouse.altinity.com - resources: - - clickhouseinstallations - verbs: - - get - - list - - watch - - patch - - update - - delete - - apiGroups: - - clickhouse.altinity.com - resources: - - clickhouseinstallationtemplates - - clickhouseoperatorconfigurations - verbs: - - get - - list - - watch - - apiGroups: - - clickhouse.altinity.com - resources: - - clickhouseinstallations/finalizers - - clickhouseinstallationtemplates/finalizers - - clickhouseoperatorconfigurations/finalizers - verbs: - - update - - apiGroups: - - clickhouse.altinity.com - resources: - - clickhouseinstallations/status - - clickhouseinstallationtemplates/status - - clickhouseoperatorconfigurations/status - verbs: - - get - - update - - patch - - create - - delete - - # clickhouse-keeper - related resources - - apiGroups: - - clickhouse-keeper.altinity.com - resources: - - clickhousekeeperinstallations - verbs: - - get - - list - - watch - - patch - - update - - delete - - apiGroups: - - clickhouse-keeper.altinity.com - resources: - - clickhousekeeperinstallations/finalizers - verbs: - - update - - apiGroups: - - clickhouse-keeper.altinity.com - resources: - - clickhousekeeperinstallations/status - verbs: - - get - - update - - patch - - create - - delete ---- -# Specifies either -# ClusterRoleBinding between ClusterRole and ServiceAccount. -# or -# RoleBinding between Role and ServiceAccount. -# ClusterRoleBinding is namespace-less and must have unique name -# RoleBinding is namespace-bound -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: clickhouse-operator - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: clickhouse-operator -subjects: - - kind: ServiceAccount - name: clickhouse-operator - namespace: {{ .Release.namespace }} ---- -# Template Parameters: -# -# NAME=etc-clickhouse-operator-files -# NAMESPACE=namespace: {{ .Release.namespace }} -# COMMENT= -# -apiVersion: v1 -kind: ConfigMap -metadata: - name: etc-clickhouse-operator-files - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -data: - config.yaml: | - # IMPORTANT - # This file is auto-generated - # Do not edit this file - all changes would be lost - # Edit appropriate template in the following folder: - # deploy/builder/templates-config - # IMPORTANT - # - # Template parameters available: - # WATCH_NAMESPACES= - # CH_USERNAME_PLAIN= - # CH_PASSWORD_PLAIN= - # CH_CREDENTIALS_SECRET_NAMESPACE= - # CH_CREDENTIALS_SECRET_NAME=clickhouse-operator - # VERBOSITY=1 - - ################################################ - ## - ## Watch section - ## - ################################################ - watch: - # List of namespaces where clickhouse-operator watches for events. - # Concurrently running operators should watch on different namespaces. - # IMPORTANT - # Regexp is applicable. - #namespaces: ["dev", "test"] - namespaces: [] - - clickhouse: - configuration: - ################################################ - ## - ## Configuration files section - ## - ################################################ - file: - # Each 'path' can be either absolute or relative. - # In case path is absolute - it is used as is - # In case path is relative - it is relative to the folder where configuration file you are reading right now is located. - path: - # Path to the folder where ClickHouse configuration files common for all instances within a CHI are located. - common: config.d - # Path to the folder where ClickHouse configuration files unique for each instance (host) within a CHI are located. - host: conf.d - # Path to the folder where ClickHouse configuration files with users' settings are located. - # Files are common for all instances within a CHI. - user: users.d - ################################################ - ## - ## Configuration users section - ## - ################################################ - user: - # Default settings for user accounts, created by the operator. - # IMPORTANT. These are not access credentials or settings for 'default' user account, - # it is a template for filling out missing fields for all user accounts to be created by the operator, - # with the following EXCEPTIONS: - # 1. 'default' user account DOES NOT use provided password, but uses all the rest of the fields. - # Password for 'default' user account has to be provided explicitly, if to be used. - # 2. CHOP user account DOES NOT use: - # - profile setting. It uses predefined profile called 'clickhouse_operator' - # - quota setting. It uses empty quota name. - # - networks IP setting. Operator specifies 'networks/ip' user setting to match operators' pod IP only. - # - password setting. Password for CHOP account is used from 'clickhouse.access.*' section - default: - # Default values for ClickHouse user account(s) created by the operator - # 1. user/profile - string - # 2. user/quota - string - # 3. user/networks/ip - multiple strings - # 4. user/password - string - # These values can be overwritten on per-user basis. - profile: "default" - quota: "default" - networksIP: - - "::1" - - "127.0.0.1" - password: "default" - ################################################ - ## - ## Configuration network section - ## - ################################################ - network: - # Default host_regexp to limit network connectivity from outside - hostRegexpTemplate: "(chi-{chi}-[^.]+\\d+-\\d+|clickhouse\\-{chi})\\.{namespace}\\.svc\\.cluster\\.local$" - - ################################################ - ## - ## Configuration restart policy section - ## Configuration restart policy describes what configuration changes require ClickHouse restart - ## - ################################################ - configurationRestartPolicy: - rules: - # IMPORTANT! - # Special version of "*" - default version - has to satisfy all ClickHouse versions. - # Default version will also be used in case ClickHouse version is unknown. - # ClickHouse version may be unknown due to host being down - for example, because of incorrect "settings" section. - # ClickHouse is not willing to start in case incorrect/unknown settings are provided in config file. - - version: "*" - rules: - # see https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-server-config-files/#server-config-configxml-sections-which-dont-require-restart - # to be replaced with "select * from system.server_settings where changeable_without_restart = 'No'" - - - settings/*: "yes" - - # single values - - settings/access_control_path: "no" - - settings/dictionaries_config: "no" - - settings/max_server_memory_*: "no" - - settings/max_*_to_drop: "no" - - settings/max_concurrent_queries: "no" - - settings/models_config: "no" - - settings/user_defined_executable_functions_config: "no" - - # structured XML - - settings/logger/*: "no" - - settings/macros/*: "no" - - settings/remote_servers/*: "no" - - settings/user_directories/*: "no" - - - zookeeper/*: "yes" - - - files/*.xml: "yes" - - files/config.d/*.xml: "yes" - - files/config.d/*dict*.xml: "no" - - # exceptions in default profile - - profiles/default/background_*_pool_size: "yes" - - profiles/default/max_*_for_server: "yes" - - version: "21.*" - rules: - - settings/logger: "yes" - - ################################################# - ## - ## Access to ClickHouse instances - ## - ################################################ - access: - # Possible values for 'scheme' are: - # 1. http - force http to be used to connect to ClickHouse instances - # 2. https - force https to be used to connect to ClickHouse instances - # 3. auto - either http or https is selected based on open ports - scheme: "auto" - # ClickHouse credentials (username, password and port) to be used by the operator to connect to ClickHouse instances. - # These credentials are used for: - # 1. Metrics requests - # 2. Schema maintenance - # 3. DROP DNS CACHE - # User with these credentials can be specified in additional ClickHouse .xml config files, - # located in 'clickhouse.configuration.file.path.user' folder - username: "" - password: "" - rootCA: "" - - # Location of the k8s Secret with username and password to be used by the operator to connect to ClickHouse instances. - # Can be used instead of explicitly specified username and password available in sections: - # - clickhouse.access.username - # - clickhouse.access.password - # Secret should have two keys: - # 1. username - # 2. password - secret: - # Empty `namespace` means that k8s secret would be looked in the same namespace where operator's pod is running. - namespace: "" - # Empty `name` means no k8s Secret would be looked for - name: "clickhouse-operator" - # Port where to connect to ClickHouse instances to - port: 8123 - - # Timeouts used to limit connection and queries from the operator to ClickHouse instances - # Specified in seconds. - timeouts: - # Timout to setup connection from the operator to ClickHouse instances. In seconds. - connect: 1 - # Timout to perform SQL query from the operator to ClickHouse instances. In seconds. - query: 4 - - ################################################# - ## - ## Metrics collection - ## - ################################################ - - metrics: - # Timeouts used to limit connection and queries from the metrics exporter to ClickHouse instances - # Specified in seconds. - timeouts: - # Timeout used to limit metrics collection request. In seconds. - # Upon reaching this timeout metrics collection is aborted and no more metrics are collected in this cycle. - # All collected metrics are returned. - collect: 9 - - ################################################ - ## - ## Template(s) management section - ## - ################################################ - template: - chi: - # CHI template updates handling policy - # Possible policy values: - # - ReadOnStart. Accept CHIT updates on the operators start only. - # - ApplyOnNextReconcile. Accept CHIT updates at all time. Apply news CHITs on next regular reconcile of the CHI - policy: ApplyOnNextReconcile - - # Path to the folder where ClickHouseInstallation templates .yaml manifests are located. - # Templates are added to the list of all templates and used when CHI is reconciled. - # Templates are applied in sorted alpha-numeric order. - path: templates.d - - ################################################ - ## - ## Reconcile section - ## - ################################################ - reconcile: - # Reconcile runtime settings - runtime: - # Max number of concurrent CHI reconciles in progress - reconcileCHIsThreadsNumber: 10 - - # The operator reconciles shards concurrently in each CHI with the following limitations: - # 1. Number of shards being reconciled (and thus having hosts down) in each CHI concurrently - # can not be greater than 'reconcileShardsThreadsNumber'. - # 2. Percentage of shards being reconciled (and thus having hosts down) in each CHI concurrently - # can not be greater than 'reconcileShardsMaxConcurrencyPercent'. - # 3. The first shard is always reconciled alone. Concurrency starts from the second shard and onward. - # Thus limiting number of shards being reconciled (and thus having hosts down) in each CHI by both number and percentage - - # Max number of concurrent shard reconciles within one CHI in progress - reconcileShardsThreadsNumber: 5 - # Max percentage of concurrent shard reconciles within one CHI in progress - reconcileShardsMaxConcurrencyPercent: 50 - - # Reconcile StatefulSet scenario - statefulSet: - # Create StatefulSet scenario - create: - # What to do in case created StatefulSet is not in 'Ready' after `reconcile.statefulSet.update.timeout` seconds - # Possible options: - # 1. abort - abort the process, do nothing with the problematic StatefulSet, leave it as it is, - # do not try to fix or delete or update it, just abort reconcile cycle. - # Do not proceed to the next StatefulSet(s) and wait for an admin to assist. - # 2. delete - delete newly created problematic StatefulSet and follow 'abort' path afterwards. - # 3. ignore - ignore an error, pretend nothing happened, continue reconcile and move on to the next StatefulSet. - onFailure: ignore - - # Update StatefulSet scenario - update: - # How many seconds to wait for created/updated StatefulSet to be 'Ready' - timeout: 300 - # How many seconds to wait between checks/polls for created/updated StatefulSet status - pollInterval: 5 - # What to do in case updated StatefulSet is not in 'Ready' after `reconcile.statefulSet.update.timeout` seconds - # Possible options: - # 1. abort - abort the process, do nothing with the problematic StatefulSet, leave it as it is, - # do not try to fix or delete or update it, just abort reconcile cycle. - # Do not proceed to the next StatefulSet(s) and wait for an admin to assist. - # 2. rollback - delete Pod and rollback StatefulSet to previous Generation. - # Pod would be recreated by StatefulSet based on rollback-ed StatefulSet configuration. - # Follow 'abort' path afterwards. - # 3. ignore - ignore an error, pretend nothing happened, continue reconcile and move on to the next StatefulSet. - onFailure: abort - - # Reconcile Host scenario - host: - # Whether the operator during reconcile procedure should wait for a ClickHouse host: - # - to be excluded from a ClickHouse cluster - # - to complete all running queries - # - to be included into a ClickHouse cluster - # respectfully before moving forward - wait: - exclude: true - queries: true - include: false - - ################################################ - ## - ## Annotations management section - ## - ################################################ - annotation: - # Applied when: - # 1. Propagating annotations from the CHI's `metadata.annotations` to child objects' `metadata.annotations`, - # 2. Propagating annotations from the CHI Template's `metadata.annotations` to CHI's `metadata.annotations`, - # Include annotations from the following list: - # Applied only when not empty. Empty list means "include all, no selection" - include: [] - # Exclude annotations from the following list: - exclude: [] - - ################################################ - ## - ## Labels management section - ## - ################################################ - label: - # Applied when: - # 1. Propagating labels from the CHI's `metadata.labels` to child objects' `metadata.labels`, - # 2. Propagating labels from the CHI Template's `metadata.labels` to CHI's `metadata.labels`, - # Include labels from the following list: - # Applied only when not empty. Empty list means "include all, no selection" - include: [] - # Exclude labels from the following list: - # Applied only when not empty. Empty list means "nothing to exclude, no selection" - exclude: [] - # Whether to append *Scope* labels to StatefulSet and Pod. - # Full list of available *scope* labels check in 'labeler.go' - # LabelShardScopeIndex - # LabelReplicaScopeIndex - # LabelCHIScopeIndex - # LabelCHIScopeCycleSize - # LabelCHIScopeCycleIndex - # LabelCHIScopeCycleOffset - # LabelClusterScopeIndex - # LabelClusterScopeCycleSize - # LabelClusterScopeCycleIndex - # LabelClusterScopeCycleOffset - appendScope: "no" - - ################################################ - ## - ## StatefulSet management section - ## - ################################################ - statefulSet: - revisionHistoryLimit: 0 - - ################################################ - ## - ## Pod management section - ## - ################################################ - pod: - # Grace period for Pod termination. - # How many seconds to wait between sending - # SIGTERM and SIGKILL during Pod termination process. - # Increase this number is case of slow shutdown. - terminationGracePeriod: 30 - - ################################################ - ## - ## Log parameters section - ## - ################################################ - logger: - logtostderr: "true" - alsologtostderr: "false" - v: "1" - stderrthreshold: "" - vmodule: "" - log_backtrace_at: "" - ---- -# Template Parameters: -# -# NAME=etc-clickhouse-operator-confd-files -# NAMESPACE=namespace: {{ .Release.namespace }} -# COMMENT= -# -apiVersion: v1 -kind: ConfigMap -metadata: - name: etc-clickhouse-operator-confd-files - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -data: ---- -# Template Parameters: -# -# NAME=etc-clickhouse-operator-configd-files -# NAMESPACE={{ .Release.namespace }} -# COMMENT= -# -apiVersion: v1 -kind: ConfigMap -metadata: - name: etc-clickhouse-operator-configd-files - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -data: - 01-clickhouse-01-listen.xml: | - - - - - - - - - :: - 0.0.0.0 - 1 - - - 01-clickhouse-02-logger.xml: | - - - - - - - - - - {{.Values.clickhouse.logsLevel}} - /var/log/clickhouse-server/clickhouse-server.log - /var/log/clickhouse-server/clickhouse-server.err.log - 1000M - 10 - - 1 - - - - 01-clickhouse-03-query_log.xml: | - - - - - - - - - system - query_log
- Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + interval 30 day - 7500 -
- -
- - 01-clickhouse-04-part_log.xml: | - - - - - - - - - system - part_log
- Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + interval 30 day - 7500 -
-
- - 01-clickhouse-05-trace_log.xml: | - - - - - - - - - system - trace_log
- Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + interval 30 day - 7500 -
-
- ---- -# Template Parameters: -# -# NAME=etc-clickhouse-operator-templatesd-files -# NAMESPACE={{ .Release.namespace }} -# COMMENT= -# -apiVersion: v1 -kind: ConfigMap -metadata: - name: etc-clickhouse-operator-templatesd-files - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -data: - 001-templates.json.example: | - { - "apiVersion": "clickhouse.altinity.com/v1", - "kind": "ClickHouseInstallationTemplate", - "metadata": { - "name": "01-default-volumeclaimtemplate" - }, - "spec": { - "templates": { - "volumeClaimTemplates": [ - { - "name": "chi-default-volume-claim-template", - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "2Gi" - } - } - } - } - ], - "podTemplates": [ - { - "name": "chi-default-oneperhost-pod-template", - "distribution": "OnePerHost", - "spec": { - "containers" : [ - { - "name": "clickhouse", - "image": "clickhouse/clickhouse-server:23.8", - "ports": [ - { - "name": "http", - "containerPort": 8123 - }, - { - "name": "client", - "containerPort": 9000 - }, - { - "name": "interserver", - "containerPort": 9009 - } - ] - } - ] - } - } - ] - } - } - } - - default-pod-template.yaml.example: | - apiVersion: "clickhouse.altinity.com/v1" - kind: "ClickHouseInstallationTemplate" - metadata: - name: "default-oneperhost-pod-template" - spec: - templates: - podTemplates: - - name: default-oneperhost-pod-template - distribution: "OnePerHost" - default-storage-template.yaml.example: | - apiVersion: "clickhouse.altinity.com/v1" - kind: "ClickHouseInstallationTemplate" - metadata: - name: "default-storage-template-2Gi" - spec: - templates: - volumeClaimTemplates: - - name: default-storage-template-2Gi - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - - readme: | - Templates in this folder are packaged with an operator and available via 'useTemplate' ---- -# Template Parameters: -# -# NAME=etc-clickhouse-operator-usersd-files -# NAMESPACE={{ .Release.namespace }} -# COMMENT= -# -apiVersion: v1 -kind: ConfigMap -metadata: - name: etc-clickhouse-operator-usersd-files - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -data: - 01-clickhouse-operator-profile.xml: | - - - - - - - - - - - - 0 - 1 - 10 - 0 - 0 - - - - - 02-clickhouse-default-profile.xml: | - - - - - - - - - - 2 - 1 - 1000 - 1 - 1 - 1 - nearest_hostname - 0 - - - - ---- -# -# Template parameters available: -# NAMESPACE={{ .Release.namespace }} -# COMMENT= -# OPERATOR_VERSION=0.23.6 -# CH_USERNAME_SECRET_PLAIN=clickhouse_operator -# CH_PASSWORD_SECRET_PLAIN=clickhouse_operator_password -# -apiVersion: v1 -kind: Secret -metadata: - name: clickhouse-operator - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -type: Opaque -stringData: - username: clickhouse_operator - password: clickhouse_operator_password ---- -# Template Parameters: -# -# NAMESPACE={{ .Release.namespace }} -# COMMENT= -# OPERATOR_IMAGE=altinity/clickhouse-operator:0.23.6 -# OPERATOR_IMAGE_PULL_POLICY=Always -# METRICS_EXPORTER_IMAGE=altinity/metrics-exporter:0.23.6 -# METRICS_EXPORTER_IMAGE_PULL_POLICY=Always -# -# Setup Deployment for clickhouse-operator -# Deployment would be created in kubectl-specified namespace -kind: Deployment -apiVersion: apps/v1 -metadata: - name: clickhouse-operator - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -spec: - replicas: 1 - selector: - matchLabels: - app: clickhouse-operator - template: - metadata: - labels: - app: clickhouse-operator - annotations: - prometheus.io/port: '8888' - prometheus.io/scrape: 'true' - clickhouse-operator-metrics/port: '9999' - clickhouse-operator-metrics/scrape: 'true' - spec: - serviceAccountName: clickhouse-operator - volumes: - - name: etc-clickhouse-operator-folder - configMap: - name: etc-clickhouse-operator-files - - name: etc-clickhouse-operator-confd-folder - configMap: - name: etc-clickhouse-operator-confd-files - - name: etc-clickhouse-operator-configd-folder - configMap: - name: etc-clickhouse-operator-configd-files - - name: etc-clickhouse-operator-templatesd-folder - configMap: - name: etc-clickhouse-operator-templatesd-files - - name: etc-clickhouse-operator-usersd-folder - configMap: - name: etc-clickhouse-operator-usersd-files - containers: - - name: clickhouse-operator - image: altinity/clickhouse-operator:0.23.6 - imagePullPolicy: Always - volumeMounts: - - name: etc-clickhouse-operator-folder - mountPath: /etc/clickhouse-operator - - name: etc-clickhouse-operator-confd-folder - mountPath: /etc/clickhouse-operator/conf.d - - name: etc-clickhouse-operator-configd-folder - mountPath: /etc/clickhouse-operator/config.d - - name: etc-clickhouse-operator-templatesd-folder - mountPath: /etc/clickhouse-operator/templates.d - - name: etc-clickhouse-operator-usersd-folder - mountPath: /etc/clickhouse-operator/users.d - env: - # Pod-specific - # spec.nodeName: ip-172-20-52-62.ec2.internal - - name: OPERATOR_POD_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - # metadata.name: clickhouse-operator-6f87589dbb-ftcsf - - name: OPERATOR_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - # metadata.namespace: {{ .Release.namespace }} - - name: OPERATOR_POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - # status.podIP: 100.96.3.2 - - name: OPERATOR_POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - # spec.serviceAccount: clickhouse-operator - # spec.serviceAccountName: clickhouse-operator - - name: OPERATOR_POD_SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - - # Container-specific - - name: OPERATOR_CONTAINER_CPU_REQUEST - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: requests.cpu - - name: OPERATOR_CONTAINER_CPU_LIMIT - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: limits.cpu - - name: OPERATOR_CONTAINER_MEM_REQUEST - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: requests.memory - - name: OPERATOR_CONTAINER_MEM_LIMIT - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: limits.memory - ports: - - containerPort: 9999 - name: metrics - {{- if .Values.clickhouse.operator.operator }} - {{- with .Values.clickhouse.operator.operator.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- end }} - - - name: metrics-exporter - image: altinity/metrics-exporter:0.23.6 - imagePullPolicy: Always - volumeMounts: - - name: etc-clickhouse-operator-folder - mountPath: /etc/clickhouse-operator - - name: etc-clickhouse-operator-confd-folder - mountPath: /etc/clickhouse-operator/conf.d - - name: etc-clickhouse-operator-configd-folder - mountPath: /etc/clickhouse-operator/config.d - - name: etc-clickhouse-operator-templatesd-folder - mountPath: /etc/clickhouse-operator/templates.d - - name: etc-clickhouse-operator-usersd-folder - mountPath: /etc/clickhouse-operator/users.d - env: - # Pod-specific - # spec.nodeName: ip-172-20-52-62.ec2.internal - - name: OPERATOR_POD_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - # metadata.name: clickhouse-operator-6f87589dbb-ftcsf - - name: OPERATOR_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - # metadata.namespace: {{ .Release.namespace }} - - name: OPERATOR_POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - # status.podIP: 100.96.3.2 - - name: OPERATOR_POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - # spec.serviceAccount: clickhouse-operator - # spec.serviceAccountName: clickhouse-operator - - name: OPERATOR_POD_SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - - # Container-specific - - name: OPERATOR_CONTAINER_CPU_REQUEST - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: requests.cpu - - name: OPERATOR_CONTAINER_CPU_LIMIT - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: limits.cpu - - name: OPERATOR_CONTAINER_MEM_REQUEST - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: requests.memory - - name: OPERATOR_CONTAINER_MEM_LIMIT - valueFrom: - resourceFieldRef: - containerName: clickhouse-operator - resource: limits.memory - ports: - - containerPort: 8888 - name: metrics - {{- if .Values.clickhouse.operator.metrics }} - {{- with .Values.clickhouse.operator.metrics.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- end }} - - {{- with .Values.clickhouse.operator.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.clickhouse.operator.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - - {{- with .Values.clickhouse.operator.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} ---- -# Template Parameters: -# -# NAMESPACE={{ .Release.namespace }} -# COMMENT= -# -# Setup ClusterIP Service to provide monitoring metrics for Prometheus -# Service would be created in kubectl-specified namespace -# In order to get access outside of k8s it should be exposed as: -# kubectl --namespace prometheus port-forward service/prometheus 9090 -# and point browser to localhost:9090 -{{- if .Values.clickhouse.monitoring.enables }} -kind: Service -apiVersion: v1 -metadata: - name: clickhouse-operator-metrics - namespace: {{ .Release.namespace }} - labels: - clickhouse.altinity.com/chop: 0.23.6 - app: clickhouse-operator -spec: - ports: - - port: 8888 - name: clickhouse-metrics - - port: 9999 - name: operator-metrics - selector: - app: clickhouse-operator -{{- end }} ---- -## ServiceMonitor -{{- if .Values.clickhouse.monitoring.enables }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: clickhouse - namespace: {{ .Release.namespace }} - labels: - release: {{ .Values.clickhouse.monitoring.monitoringReleaseName }} -spec: - endpoints: - - interval: 30s - port: clickhouse-metrics - - interval: 30s - port: operator-metrics - namespaceSelector: - matchNames: - - {{ .Release.namespace }} - selector: - matchLabels: - app: clickhouse-operator - argocd.argoproj.io/instance: {{ .Release.namespace }} - clickhouse.altinity.com/chop: 0.23.6 -{{- end }} \ No newline at end of file diff --git a/deployment/helm_chart/opik/templates/clickhouseinstallation.yaml b/deployment/helm_chart/opik/templates/clickhouseinstallation.yaml index 57e7116a9..b8ce79883 100644 --- a/deployment/helm_chart/opik/templates/clickhouseinstallation.yaml +++ b/deployment/helm_chart/opik/templates/clickhouseinstallation.yaml @@ -23,8 +23,8 @@ spec: {{ .Values.clickhouse.adminUser.username }}/networks/ip: - '127.0.0.1/32' - '0.0.0.0/0' - {{- if .Values.clickhouse.monitoring.enables }} - {{- if .Values.clickhouse.monitoring.useSecret.enables }} + {{- if .Values.clickhouse.monitoring.enabled }} + {{- if .Values.clickhouse.monitoring.useSecret.enabled }} {{ .Values.clickhouse.monitoring.username }}/k8s_secret_password: {{ include "opik.name" .}}-{{ .Values.clickhouse.monitoring.secretname }}/{{ .Values.clickhouse.monitoring.password_key }} {{- else }} {{ .Values.clickhouse.monitoring.username }}/password: {{ .Values.clickhouse.monitoring.password }} diff --git a/deployment/helm_chart/opik/values.yaml b/deployment/helm_chart/opik/values.yaml index 701ba6757..c9dec4f0a 100644 --- a/deployment/helm_chart/opik/values.yaml +++ b/deployment/helm_chart/opik/values.yaml @@ -193,8 +193,13 @@ redis: \n--loadmodule ${BASEDIR}/lib/rejson.so ${REDISJSON_ARGS} \\\n--loadmodule\ \ ${BASEDIR}/lib/redisbloom.so ${REDISBLOOM_ARGS}\n" +altinity-clickhouse-operator: + metrics: + enabled: false + serviceMonitor: + enabled: false + clickhouse: - namePrefix: opik shardsCount: 1 replicasCount: 1 image: altinity/clickhouse-server:24.3.5.47.altinitystable @@ -214,14 +219,10 @@ clickhouse: # secretName: "" # schedule: "" # baseBackup: "" - operator: - enabled: true monitoring: enabled: false - monitoringReleaseName: # if monitoring is enables, this must be set username: opikmon # readonly user password: opikmon - # resources: # requests: # cpu: 300m