Skip to content

Commit 980b110

Browse files
pengzhoumlPeng Zhou
andauthored
MLE-19843 Allow Using existing secret for MarkLogic Admin Credentials (#61)
* MLE-19843: Allow Using existing secret for MarkLogic Admin Credentials * update readme * Add E2E Test for using existing secret for Auth --------- Co-authored-by: Peng Zhou <[email protected]>
1 parent d79fea2 commit 980b110

13 files changed

+92
-65
lines changed

api/v1alpha1/common_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type VolumeMountWrapper struct {
4646
}
4747

4848
type AdminAuth struct {
49+
SecretName *string `json:"secretName,omitempty"`
4950
AdminUsername *string `json:"adminUsername,omitempty"`
5051
AdminPassword *string `json:"adminPassword,omitempty"`
5152
WalletPassword *string `json:"walletPassword,omitempty"`

api/v1alpha1/marklogicgroup_types.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ type MarklogicGroupSpec struct {
8383

8484
AdditionalVolumes *[]corev1.Volume `json:"additionalVolumes,omitempty"`
8585
AdditionalVolumeMounts *[]corev1.VolumeMount `json:"additionalVolumeMounts,omitempty"`
86-
87-
Tls *Tls `json:"tls,omitempty"`
86+
SecretName string `json:"secretName,omitempty"`
87+
Tls *Tls `json:"tls,omitempty"`
8888
}
8989

9090
// InternalState defines the observed state of MarklogicGroup

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/database.marklogic.com_marklogicclusters.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2810,6 +2810,8 @@ spec:
28102810
type: string
28112811
adminUsername:
28122812
type: string
2813+
secretName:
2814+
type: string
28132815
walletPassword:
28142816
type: string
28152817
type: object

config/crd/bases/database.marklogic.com_marklogicgroups.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2811,6 +2811,8 @@ spec:
28112811
type: string
28122812
adminUsername:
28132813
type: string
2814+
secretName:
2815+
type: string
28142816
walletPassword:
28152817
type: string
28162818
type: object
@@ -3804,6 +3806,8 @@ spec:
38043806
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
38053807
type: object
38063808
type: object
3809+
secretName:
3810+
type: string
38073811
securityContext:
38083812
default:
38093813
allowPrivilegeEscalation: false

config/samples/marklogiccluster.yaml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ metadata:
1010
name: ml-cluster
1111
spec:
1212
image: "progressofficial/marklogic-db:11.3.0-ubi-rootless"
13-
auth:
14-
adminUsername: user
15-
adminPassword: pass
13+
# auth:
14+
# secretName: <SECRET_NAME>
15+
# adminUsername: user
16+
# adminPassword: pass
1617
# This is the cluster level configuration that will apply to all the groups
1718
# storage:
1819
# size: 5Gi
@@ -21,9 +22,9 @@ spec:
2122
## An out of box load balancer with configured to handle cookie based session affinity that required by most MarkLogic applications.
2223
## It also support multi-statement transaction and ODBC connections.
2324
## Uncomment the following lines to enable HAProxy configuration
24-
haproxy:
25-
enabled: true
26-
pathBasedRouting: false
25+
# haproxy:
26+
# enabled: true
27+
# pathBasedRouting: false
2728
# frontendPort: 8080
2829
# tcpPorts:
2930
# enabled: true
@@ -41,9 +42,9 @@ spec:
4142
# - name: "manage"
4243
# port: 8002
4344
# path: "/manage"
44-
# stats:
45-
# enabled: true
46-
# port: 1024
45+
# stats:
46+
# enabled: true
47+
# port: 1024
4748
# resources:
4849
# requests:
4950
# memory: "4Gi"

internal/controller/marklogiccluster_controller_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,15 @@ var _ = Describe("MarklogicCluster Controller", func() {
170170
Expect(clusterCR.Spec.Tls.CertSecretNames).Should(ContainElements("cert-secret-1", "cert-secret-2"))
171171
Expect(clusterCR.Spec.Tls.CaSecretName).Should(Equal("ca-secret"))
172172
})
173+
174+
It("Should create a secret for MarkLogic Admin User", func() {
175+
// Validating if Secret is created successfully
176+
secret := &corev1.Secret{}
177+
secretName := clusterName + "-admin"
178+
Eventually(func() bool {
179+
err := k8sClient.Get(ctx, types.NamespacedName{Name: secretName, Namespace: clusterNS}, secret)
180+
return err == nil
181+
}, timeout, interval).Should(BeTrue())
182+
})
173183
})
174184
})

internal/controller/marklogicgroup_controller_test.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -199,16 +199,6 @@ var _ = Describe("MarkLogicGroup controller", func() {
199199
}, timeout, interval).Should(BeTrue())
200200
})
201201

202-
It("Should create a secret for MarkLogic Admin User", func() {
203-
// Validating if Secret is created successfully
204-
secret := &corev1.Secret{}
205-
secretName := Name + "-admin"
206-
Eventually(func() bool {
207-
err := k8sClient.Get(ctx, types.NamespacedName{Name: secretName, Namespace: Namespace}, secret)
208-
return err == nil
209-
}, timeout, interval).Should(BeTrue())
210-
})
211-
212202
It("Should update the MarklogicGroup CR", func() {
213203
// Update the MarklogicGroup CR
214204
createdCR := &databasev1alpha1.MarklogicGroup{}

pkg/k8sutil/handler.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ func (oc *OperatorContext) ReconsileMarklogicGroupHandler() (reconcile.Result, e
1212
}
1313
setOperatorInternalStatus(oc, "Created")
1414

15-
if result := oc.ReconcileSecret(); result.Completed() {
16-
return result.Output()
17-
}
18-
1915
if result := oc.ReconcileConfigMap(); result.Completed() {
2016
return result.Output()
2117
}
@@ -32,6 +28,9 @@ func (oc *OperatorContext) ReconsileMarklogicGroupHandler() (reconcile.Result, e
3228
}
3329

3430
func (cc *ClusterContext) ReconsileMarklogicClusterHandler() (reconcile.Result, error) {
31+
if result := cc.ReconcileSecret(); result.Completed() {
32+
return result.Output()
33+
}
3534
result, err := cc.ReconsileMarklogicCluster()
3635
if cc.MarklogicCluster.Spec.NetworkPolicy.Enabled {
3736
if result := cc.ReconcileNetworkPolicy(); result.Completed() {

pkg/k8sutil/marklogicServer.go

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ type MarkLogicGroupParameters struct {
4444
Tls *databasev1alpha1.Tls
4545
AdditionalVolumes *[]corev1.Volume
4646
AdditionalVolumeMounts *[]corev1.VolumeMount
47+
SecretName string
4748
}
4849

4950
type MarkLogicClusterParameters struct {
@@ -128,6 +129,7 @@ func GenerateMarkLogicGroupDef(cr *databasev1alpha1.MarklogicCluster, index int,
128129
Tls: params.Tls,
129130
AdditionalVolumes: params.AdditionalVolumes,
130131
AdditionalVolumeMounts: params.AdditionalVolumeMounts,
132+
SecretName: params.SecretName,
131133
},
132134
}
133135
AddOwnerRefToObject(MarkLogicGroupDef, ownerDef)
@@ -230,7 +232,7 @@ func generateMarkLogicClusterParams(cr *databasev1alpha1.MarklogicCluster) *Mark
230232
}
231233

232234
func generateMarkLogicGroupParams(cr *databasev1alpha1.MarklogicCluster, index int, clusterParams *MarkLogicClusterParameters) *MarkLogicGroupParameters {
233-
MarkLogicGroupParameters := &MarkLogicGroupParameters{
235+
markLogicGroupParameters := &MarkLogicGroupParameters{
234236
Replicas: cr.Spec.MarkLogicGroups[index].Replicas,
235237
Name: cr.Spec.MarkLogicGroups[index].Name,
236238
GroupConfig: cr.Spec.MarkLogicGroups[index].GroupConfig,
@@ -260,50 +262,55 @@ func generateMarkLogicGroupParams(cr *databasev1alpha1.MarklogicCluster, index i
260262
AdditionalVolumes: clusterParams.AdditionalVolumes,
261263
}
262264

265+
if cr.Spec.Auth != nil && cr.Spec.Auth.SecretName != nil && *cr.Spec.Auth.SecretName != "" {
266+
markLogicGroupParameters.SecretName = *cr.Spec.Auth.SecretName
267+
} else {
268+
markLogicGroupParameters.SecretName = fmt.Sprintf("%s-admin", cr.ObjectMeta.Name)
269+
}
263270
if cr.Spec.MarkLogicGroups[index].HAProxy != nil && cr.Spec.MarkLogicGroups[index].HAProxy.PathBasedRouting != nil {
264-
MarkLogicGroupParameters.PathBasedRouting = *cr.Spec.MarkLogicGroups[index].HAProxy.PathBasedRouting
271+
markLogicGroupParameters.PathBasedRouting = *cr.Spec.MarkLogicGroups[index].HAProxy.PathBasedRouting
265272
}
266273
if cr.Spec.MarkLogicGroups[index].Image != "" {
267-
MarkLogicGroupParameters.Image = cr.Spec.MarkLogicGroups[index].Image
274+
markLogicGroupParameters.Image = cr.Spec.MarkLogicGroups[index].Image
268275
}
269276
if cr.Spec.MarkLogicGroups[index].ImagePullPolicy != "" {
270-
MarkLogicGroupParameters.ImagePullPolicy = cr.Spec.MarkLogicGroups[index].ImagePullPolicy
277+
markLogicGroupParameters.ImagePullPolicy = cr.Spec.MarkLogicGroups[index].ImagePullPolicy
271278
}
272279
if cr.Spec.MarkLogicGroups[index].ImagePullSecrets != nil {
273-
MarkLogicGroupParameters.ImagePullSecrets = cr.Spec.MarkLogicGroups[index].ImagePullSecrets
280+
markLogicGroupParameters.ImagePullSecrets = cr.Spec.MarkLogicGroups[index].ImagePullSecrets
274281
}
275282
if cr.Spec.MarkLogicGroups[index].Storage != nil {
276-
MarkLogicGroupParameters.Storage = cr.Spec.MarkLogicGroups[index].Storage
283+
markLogicGroupParameters.Storage = cr.Spec.MarkLogicGroups[index].Storage
277284
}
278285
if cr.Spec.MarkLogicGroups[index].Resources != nil {
279-
MarkLogicGroupParameters.Resources = cr.Spec.MarkLogicGroups[index].Resources
286+
markLogicGroupParameters.Resources = cr.Spec.MarkLogicGroups[index].Resources
280287
}
281288
if cr.Spec.MarkLogicGroups[index].Affinity != nil {
282-
MarkLogicGroupParameters.Affinity = cr.Spec.MarkLogicGroups[index].Affinity
289+
markLogicGroupParameters.Affinity = cr.Spec.MarkLogicGroups[index].Affinity
283290
}
284291
if cr.Spec.MarkLogicGroups[index].NodeSelector != nil {
285-
MarkLogicGroupParameters.NodeSelector = cr.Spec.MarkLogicGroups[index].NodeSelector
292+
markLogicGroupParameters.NodeSelector = cr.Spec.MarkLogicGroups[index].NodeSelector
286293
}
287294
if cr.Spec.MarkLogicGroups[index].TopologySpreadConstraints != nil {
288-
MarkLogicGroupParameters.TopologySpreadConstraints = cr.Spec.MarkLogicGroups[index].TopologySpreadConstraints
295+
markLogicGroupParameters.TopologySpreadConstraints = cr.Spec.MarkLogicGroups[index].TopologySpreadConstraints
289296
}
290297
if cr.Spec.MarkLogicGroups[index].PriorityClassName != "" {
291-
MarkLogicGroupParameters.PriorityClassName = cr.Spec.MarkLogicGroups[index].PriorityClassName
298+
markLogicGroupParameters.PriorityClassName = cr.Spec.MarkLogicGroups[index].PriorityClassName
292299
}
293300
if cr.Spec.MarkLogicGroups[index].HugePages != nil {
294-
MarkLogicGroupParameters.HugePages = cr.Spec.MarkLogicGroups[index].HugePages
301+
markLogicGroupParameters.HugePages = cr.Spec.MarkLogicGroups[index].HugePages
295302
}
296303
if cr.Spec.MarkLogicGroups[index].LogCollection != nil {
297-
MarkLogicGroupParameters.LogCollection = cr.Spec.MarkLogicGroups[index].LogCollection
304+
markLogicGroupParameters.LogCollection = cr.Spec.MarkLogicGroups[index].LogCollection
298305
}
299306
if cr.Spec.MarkLogicGroups[index].Tls != nil {
300-
MarkLogicGroupParameters.Tls = cr.Spec.MarkLogicGroups[index].Tls
307+
markLogicGroupParameters.Tls = cr.Spec.MarkLogicGroups[index].Tls
301308
}
302309
if cr.Spec.MarkLogicGroups[index].AdditionalVolumes != nil {
303-
MarkLogicGroupParameters.AdditionalVolumes = cr.Spec.MarkLogicGroups[index].AdditionalVolumes
310+
markLogicGroupParameters.AdditionalVolumes = cr.Spec.MarkLogicGroups[index].AdditionalVolumes
304311
}
305312
if cr.Spec.MarkLogicGroups[index].AdditionalVolumeMounts != nil {
306-
MarkLogicGroupParameters.AdditionalVolumeMounts = cr.Spec.MarkLogicGroups[index].AdditionalVolumeMounts
313+
markLogicGroupParameters.AdditionalVolumeMounts = cr.Spec.MarkLogicGroups[index].AdditionalVolumeMounts
307314
}
308-
return MarkLogicGroupParameters
315+
return markLogicGroupParameters
309316
}

0 commit comments

Comments
 (0)