Skip to content

Commit

Permalink
feat: add new CRD greptimedbstandalone (#130)
Browse files Browse the repository at this point in the history
* feat(crd): add 'GreptimeDBStandalone' CRD

* refactor: use common functions in greptimedbstandalone controller

* feat: update status for greptimedbstandalone

* chore(rename): use shorter file name for controller

* refactor: support configure object storage

* chore(dep): update go module

* refactor: support delete storage for standalone

* fix: typo
  • Loading branch information
zyy17 authored Jan 14, 2024
1 parent f4636c4 commit d07a5af
Show file tree
Hide file tree
Showing 34 changed files with 10,662 additions and 751 deletions.
8 changes: 8 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,12 @@ resources:
kind: GreptimeDBCluster
path: github.com/GreptimeTeam/greptimedb-operator/api/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: greptime.io
kind: GreptimeDBStandalone
path: github.com/greptime/greptimedb-operator/api/v1alpha1
version: v1alpha1
version: "3"
485 changes: 485 additions & 0 deletions apis/v1alpha1/common.go

Large diffs are not rendered by default.

66 changes: 66 additions & 0 deletions apis/v1alpha1/defaulting.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ var (

// The default storage settings for datanode.
defaultDataNodeStorageName = "datanode"
defaultStandaloneStorageName = "standalone"
defaultDataNodeStorageSize = "10Gi"
defaultDataNodeStorageMountPath = "/data/greptimedb"
defaultStorageRetainPolicyType = StorageRetainPolicyTypeRetain
Expand Down Expand Up @@ -172,6 +173,71 @@ func (in *GreptimeDBCluster) SetDefaults() error {
return nil
}

func (in *GreptimeDBStandalone) SetDefaults() error {
if in == nil {
return nil
}

var defaultGreptimeDBStandaloneSpec = &GreptimeDBStandaloneSpec{
Base: &PodTemplateSpec{
MainContainer: &MainContainerSpec{
Resources: &corev1.ResourceRequirements{
// Let Requests == Limits by default.
Requests: map[corev1.ResourceName]resource.Quantity{
"cpu": resource.MustParse(defaultCPU),
"memory": resource.MustParse(defaultMemory),
},
Limits: map[corev1.ResourceName]resource.Quantity{
"cpu": resource.MustParse(defaultCPU),
"memory": resource.MustParse(defaultMemory),
},
},

// The default readiness probe for the main container of GreptimeDBCluster.
ReadinessProbe: &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/health",
Port: intstr.FromInt(defaultHTTPServicePort),
},
},
},
},
},
HTTPServicePort: int32(defaultHTTPServicePort),
GRPCServicePort: int32(defaultGRPCServicePort),
MySQLServicePort: int32(defaultMySQLServicePort),
PostgresServicePort: int32(defaultPostgresServicePort),
PrometheusServicePort: int32(defaultPrometheusServicePort),
OpenTSDBServicePort: int32(defaultOpenTSDBServicePort),
Version: defaultVersion,
LocalStorage: &StorageSpec{
Name: defaultStandaloneStorageName,
StorageSize: defaultDataNodeStorageSize,
MountPath: defaultDataNodeStorageMountPath,
StorageRetainPolicy: defaultStorageRetainPolicyType,
WalDir: defaultDataNodeStorageMountPath + "/wal",
DataHome: defaultDataNodeStorageMountPath,
},
Service: &ServiceSpec{
Type: corev1.ServiceTypeClusterIP,
},
}

if in.Spec.Version == "" &&
in.Spec.Base != nil &&
in.Spec.Base.MainContainer != nil &&
in.Spec.Base.MainContainer.Image != "" {
in.Spec.Version = getVersionFromImage(in.Spec.Base.MainContainer.Image)
}

if err := mergo.Merge(&in.Spec, defaultGreptimeDBStandaloneSpec); err != nil {
return err
}

return nil
}

func getVersionFromImage(imageURL string) string {
tokens := strings.Split(imageURL, "/")
if len(tokens) > 0 {
Expand Down
Loading

0 comments on commit d07a5af

Please sign in to comment.