diff --git a/apis/kubedb/constants.go b/apis/kubedb/constants.go index c9d40fe37d..88a7213556 100644 --- a/apis/kubedb/constants.go +++ b/apis/kubedb/constants.go @@ -1341,7 +1341,7 @@ const ( ClickHouseDefaultStorageSize = "2Gi" ClickHouseClusterConfigVolName = "cluster-config" - ClickHouseClusterConfigDir = "/etc/clickhouse-server/conf.d" + ClickHouseCommonConfigDir = "/etc/clickhouse-server/conf.d" ClickHouseClusterTempConfigVolName = "temp-cluster-config" @@ -1364,17 +1364,19 @@ const ( ClickHouseHealthCheckerDatabase = "kubedb_system" ClickHouseHealthCheckerTable = "kubedb_write_check" - ClickHouseServerConfigFile = "server-config.yaml" - ClickHouseKeeperFileConfig = "keeper_config.yaml" + ClickHouseServerConfigFile = "server-config.yaml" + ClickHouseKeeperFileConfig = "keeper_config.yaml" + ClickHouseVolumeCustomConfig = "custom-config" // keeper ClickHouseKeeperContainerName = "clickhouse-keeper" ClickHouseKeeeprConfigFileName = "keeper_config.xml" ClickHOuseKeeeprConfigFileVolumeName = "keeper-config" ClickHouseKeeperInitContainerName = "clickhouse-keeper-init" - - ClickHouseKeeperConfig = "etc-clickhouse-keeper" - ClickHouseKeeperConfigPath = "/etc/clickhouse-keeper" + ClickHouseKeeperConfig = "etc-clickhouse-keeper" + ClickHouseInternalServerListFile = "server_list.yaml" + ClickHouseKeeperServerIdNo = "serverid" + ClickHouseKeeperServerID = "KEEPERID" ) // =========================== Cassandra Constants ============================ diff --git a/apis/kubedb/v1alpha2/clickhouse_helpers.go b/apis/kubedb/v1alpha2/clickhouse_helpers.go index 7230ac98d5..fb413ca395 100644 --- a/apis/kubedb/v1alpha2/clickhouse_helpers.go +++ b/apis/kubedb/v1alpha2/clickhouse_helpers.go @@ -208,7 +208,7 @@ func (c *ClickHouse) GetInternalAuthTokenName() string { } func (c *ClickHouse) PVCName(alias string) string { - return meta_util.NameWithSuffix(c.Name, alias) + return alias } func (c *ClickHouse) PetSetName() string { @@ -299,7 +299,6 @@ func (c *ClickHouse) SetDefaults() { clusters[index] = cluster } c.Spec.ClusterTopology.Cluster = clusters - if c.Spec.ClusterTopology.ClickHouseKeeper != nil && !c.Spec.ClusterTopology.ClickHouseKeeper.ExternallyManaged && c.Spec.ClusterTopology.ClickHouseKeeper.Spec != nil { if c.Spec.ClusterTopology.ClickHouseKeeper.Spec.Replicas == nil { c.Spec.ClusterTopology.ClickHouseKeeper.Spec.Replicas = pointer.Int32P(1) @@ -318,6 +317,7 @@ func (c *ClickHouse) SetDefaults() { apis.SetDefaultResourceLimits(&dbContainer.Resources, kubedb.DefaultResources) } } + } else { if c.Spec.Replicas == nil { c.Spec.Replicas = pointer.Int32P(1) diff --git a/apis/kubedb/v1alpha2/clickhouse_types.go b/apis/kubedb/v1alpha2/clickhouse_types.go index ca46190791..21367a2f6f 100644 --- a/apis/kubedb/v1alpha2/clickhouse_types.go +++ b/apis/kubedb/v1alpha2/clickhouse_types.go @@ -77,6 +77,11 @@ type ClickHouseSpec struct { // +optional AuthSecret *SecretReference `json:"authSecret,omitempty"` + // ConfigSecret is an optional field to provide custom configuration file for database (i.e config.properties). + // If specified, this file will be used as configuration file otherwise default configuration file will be used. + // +optional + ConfigSecret *core.LocalObjectReference `json:"configSecret,omitempty"` + // PodTemplate is an optional configuration for pods used to expose database // +optional PodTemplate *ofst.PodTemplateSpec `json:"podTemplate,omitempty"` @@ -85,6 +90,10 @@ type ClickHouseSpec struct { // +optional ServiceTemplates []NamedServiceTemplateSpec `json:"serviceTemplates,omitempty"` + // Indicates that the database is halted and all offshoot Kubernetes resources except PVCs are deleted. + // +optional + Halted bool `json:"halted,omitempty"` + // DeletionPolicy controls the delete operation for database // +optional DeletionPolicy TerminationPolicy `json:"deletionPolicy,omitempty"` diff --git a/apis/kubedb/v1alpha2/openapi_generated.go b/apis/kubedb/v1alpha2/openapi_generated.go index 81d3302ede..f8760bd539 100644 --- a/apis/kubedb/v1alpha2/openapi_generated.go +++ b/apis/kubedb/v1alpha2/openapi_generated.go @@ -25986,6 +25986,12 @@ func schema_apimachinery_apis_kubedb_v1alpha2_ClickHouseSpec(ref common.Referenc Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha2.SecretReference"), }, }, + "configSecret": { + SchemaProps: spec.SchemaProps{ + Description: "ConfigSecret is an optional field to provide custom configuration file for database (i.e config.properties). If specified, this file will be used as configuration file otherwise default configuration file will be used.", + Ref: ref("k8s.io/api/core/v1.LocalObjectReference"), + }, + }, "podTemplate": { SchemaProps: spec.SchemaProps{ Description: "PodTemplate is an optional configuration for pods used to expose database", @@ -26006,6 +26012,13 @@ func schema_apimachinery_apis_kubedb_v1alpha2_ClickHouseSpec(ref common.Referenc }, }, }, + "halted": { + SchemaProps: spec.SchemaProps{ + Description: "Indicates that the database is halted and all offshoot Kubernetes resources except PVCs are deleted.", + Type: []string{"boolean"}, + Format: "", + }, + }, "deletionPolicy": { SchemaProps: spec.SchemaProps{ Description: "DeletionPolicy controls the delete operation for database", @@ -26025,7 +26038,7 @@ func schema_apimachinery_apis_kubedb_v1alpha2_ClickHouseSpec(ref common.Referenc }, }, Dependencies: []string{ - "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "kmodules.xyz/client-go/api/v1.HealthCheckSpec", "kmodules.xyz/offshoot-api/api/v2.PodTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha2.ClusterTopology", "kubedb.dev/apimachinery/apis/kubedb/v1alpha2.NamedServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha2.SecretReference"}, + "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "kmodules.xyz/client-go/api/v1.HealthCheckSpec", "kmodules.xyz/offshoot-api/api/v2.PodTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha2.ClusterTopology", "kubedb.dev/apimachinery/apis/kubedb/v1alpha2.NamedServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha2.SecretReference"}, } } diff --git a/apis/kubedb/v1alpha2/zz_generated.deepcopy.go b/apis/kubedb/v1alpha2/zz_generated.deepcopy.go index c46447fde5..3eab697a39 100644 --- a/apis/kubedb/v1alpha2/zz_generated.deepcopy.go +++ b/apis/kubedb/v1alpha2/zz_generated.deepcopy.go @@ -492,6 +492,11 @@ func (in *ClickHouseSpec) DeepCopyInto(out *ClickHouseSpec) { *out = new(SecretReference) **out = **in } + if in.ConfigSecret != nil { + in, out := &in.ConfigSecret, &out.ConfigSecret + *out = new(corev1.LocalObjectReference) + **out = **in + } if in.PodTemplate != nil { in, out := &in.PodTemplate, &out.PodTemplate *out = new(v2.PodTemplateSpec) diff --git a/crds/kubedb.com_clickhouses.yaml b/crds/kubedb.com_clickhouses.yaml index 732577ec03..09443e3f3b 100644 --- a/crds/kubedb.com_clickhouses.yaml +++ b/crds/kubedb.com_clickhouses.yaml @@ -6404,6 +6404,13 @@ spec: type: object type: array type: object + configSecret: + properties: + name: + default: "" + type: string + type: object + x-kubernetes-map-type: atomic deletionPolicy: enum: - Halt @@ -6413,6 +6420,8 @@ spec: type: string disableSecurity: type: boolean + halted: + type: boolean healthChecker: default: failureThreshold: 3