diff --git a/apis/kubedb/constants.go b/apis/kubedb/constants.go index 874d7ded2d..fff06bdb31 100644 --- a/apis/kubedb/constants.go +++ b/apis/kubedb/constants.go @@ -998,6 +998,7 @@ const ( SolrInitContainerName = "init-solr" SolrAdmin = "admin" SecurityJSON = "security.json" + GcsCredJSON = "cred.json" SolrZkDigest = "zk-digest" SolrZkReadonlyDigest = "zk-digest-readonly" @@ -1006,6 +1007,7 @@ const ( SolrVolumeAuthConfig = "auth-config" SolrVolumeData = "data" SolrVolumeConfig = "slconfig" + SolrVolumeGcsCred = "gcs-cred" DistLibs = "/opt/solr/dist" ContribLibs = "/opt/solr/contrib/%s/lib" @@ -1064,6 +1066,7 @@ const ( SolrServerKeystorePath = "/var/solr/etc/keystore.p12" SolrServerTruststorePath = "/var/solr/etc/truststore.p12" SolrTLSMountPath = "/var/solr/etc" + SolrGcsCredMountPath = "/var/solr/backup" ProxyDeploymentName = "s3proxy" ProxyServiceName = "proxy-svc" diff --git a/apis/kubedb/v1alpha2/openapi_generated.go b/apis/kubedb/v1alpha2/openapi_generated.go index 64205c4488..2eb92c8d82 100644 --- a/apis/kubedb/v1alpha2/openapi_generated.go +++ b/apis/kubedb/v1alpha2/openapi_generated.go @@ -36988,6 +36988,18 @@ func schema_apimachinery_apis_kubedb_v1alpha2_SolrSpec(ref common.ReferenceCallb Ref: ref("kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec"), }, }, + "gcsCredSecret": { + SchemaProps: spec.SchemaProps{ + Description: "GCS cred for solr backup", + Ref: ref("k8s.io/api/core/v1.LocalObjectReference"), + }, + }, + "s3CredSecret": { + SchemaProps: spec.SchemaProps{ + Description: "S3 cred for solr backup", + Ref: ref("k8s.io/api/core/v1.LocalObjectReference"), + }, + }, }, Required: []string{"version"}, }, diff --git a/apis/kubedb/v1alpha2/solr_helpers.go b/apis/kubedb/v1alpha2/solr_helpers.go index 78df01f397..c3d6885f2b 100644 --- a/apis/kubedb/v1alpha2/solr_helpers.go +++ b/apis/kubedb/v1alpha2/solr_helpers.go @@ -109,10 +109,7 @@ func (s *Solr) SolrSecretKey() string { return kubedb.SolrSecretKey } -func (s *Solr) Merge(opt map[string]string) map[string]string { - if len(s.Spec.SolrOpts) == 0 { - return opt - } +func (s *Solr) Merge(opt map[string]string, secret *v1.Secret) map[string]string { for _, y := range s.Spec.SolrOpts { sr := strings.Split(y, "=") _, ok := opt[sr[0]] @@ -120,6 +117,15 @@ func (s *Solr) Merge(opt map[string]string) map[string]string { opt[sr[0]] = sr[1] } } + if secret != nil { + if val, exist := secret.Data["AWS_ACCESS_KEY_ID"]; exist { + opt["-Daws.accessKeyId"] = string(val) + } + + if val, exist := secret.Data["AWS_SECRET_ACCESS_KEY"]; exist { + opt["-Daws.secretAccessKey"] = string(val) + } + } return opt } diff --git a/apis/kubedb/v1alpha2/solr_types.go b/apis/kubedb/v1alpha2/solr_types.go index 537e9d41f9..93676678a9 100644 --- a/apis/kubedb/v1alpha2/solr_types.go +++ b/apis/kubedb/v1alpha2/solr_types.go @@ -137,6 +137,14 @@ type SolrSpec struct { // Monitor is used monitor database instance // +optional Monitor *mona.AgentSpec `json:"monitor,omitempty"` + + // GCS cred for solr backup + // +optional + GcsCredSecret *core.LocalObjectReference `json:"gcsCredSecret,omitempty"` + + // S3 cred for solr backup + // +optional + S3CredSecret *core.LocalObjectReference `json:"s3CredSecret,omitempty"` } type SolrClusterTopology struct { diff --git a/apis/kubedb/v1alpha2/zz_generated.deepcopy.go b/apis/kubedb/v1alpha2/zz_generated.deepcopy.go index 002d0b5d4e..442cbb3667 100644 --- a/apis/kubedb/v1alpha2/zz_generated.deepcopy.go +++ b/apis/kubedb/v1alpha2/zz_generated.deepcopy.go @@ -6555,6 +6555,16 @@ func (in *SolrSpec) DeepCopyInto(out *SolrSpec) { *out = new(monitoringagentapiapiv1.AgentSpec) (*in).DeepCopyInto(*out) } + if in.GcsCredSecret != nil { + in, out := &in.GcsCredSecret, &out.GcsCredSecret + *out = new(corev1.LocalObjectReference) + **out = **in + } + if in.S3CredSecret != nil { + in, out := &in.S3CredSecret, &out.S3CredSecret + *out = new(corev1.LocalObjectReference) + **out = **in + } return } diff --git a/crds/gitops.kubedb.com_solrs.yaml b/crds/gitops.kubedb.com_solrs.yaml index 0c50588eb7..c22c99277d 100644 --- a/crds/gitops.kubedb.com_solrs.yaml +++ b/crds/gitops.kubedb.com_solrs.yaml @@ -76,6 +76,13 @@ spec: type: boolean enableSSL: type: boolean + gcsCredSecret: + properties: + name: + default: "" + type: string + type: object + x-kubernetes-map-type: atomic healthChecker: default: failureThreshold: 3 @@ -3401,6 +3408,13 @@ spec: replicas: format: int32 type: integer + s3CredSecret: + properties: + name: + default: "" + type: string + type: object + x-kubernetes-map-type: atomic serviceTemplates: items: properties: diff --git a/crds/kubedb.com_solrs.yaml b/crds/kubedb.com_solrs.yaml index c353b294a7..f98fe1063f 100644 --- a/crds/kubedb.com_solrs.yaml +++ b/crds/kubedb.com_solrs.yaml @@ -101,6 +101,13 @@ spec: type: boolean enableSSL: type: boolean + gcsCredSecret: + properties: + name: + default: "" + type: string + type: object + x-kubernetes-map-type: atomic healthChecker: default: failureThreshold: 3 @@ -3426,6 +3433,13 @@ spec: replicas: format: int32 type: integer + s3CredSecret: + properties: + name: + default: "" + type: string + type: object + x-kubernetes-map-type: atomic serviceTemplates: items: properties: