Skip to content

Commit 0b3aa63

Browse files
authored
Merge pull request #64 from marklogic/features/MLE-19813-custom-metadata
MLE-19813 Add Labels and Annotation to all the Object Created by Oper…
2 parents 6043316 + bdc4265 commit 0b3aa63

File tree

10 files changed

+76
-59
lines changed

10 files changed

+76
-59
lines changed

pkg/k8sutil/common.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import (
99
"sigs.k8s.io/controller-runtime/pkg/client"
1010
)
1111

12+
var CustomLabels = map[string]string{}
13+
var CustomAnnotations = map[string]string{}
14+
1215
// generateTypeMeta generates the TyeMeta
1316
func generateTypeMeta(resourceKind string, apiVersion string) metav1.TypeMeta {
1417
return metav1.TypeMeta{
@@ -46,11 +49,39 @@ func LabelSelectors(labels map[string]string) *metav1.LabelSelector {
4649
return &metav1.LabelSelector{MatchLabels: labels}
4750
}
4851

49-
func getMarkLogicLabels(name string) map[string]string {
50-
return map[string]string{
51-
"app.kubernetes.io/name": "marklogic",
52-
"app.kubernetes.io/instance": name,
52+
func SetCommonLabels(labels map[string]string) {
53+
CustomLabels = labels
54+
}
55+
56+
func SetCommonAnnotations(annotations map[string]string) {
57+
CustomAnnotations = annotations
58+
}
59+
60+
func getCommonLabels(name string) map[string]string {
61+
defaultLabels := map[string]string{
62+
"app.kubernetes.io/name": "marklogic",
63+
"app.kubernetes.io/instance": name,
64+
"app.kubernetes.io/managed-by": "marklogic-operator",
65+
"app.kubernetes.io/component": "database",
66+
}
67+
mergedLabels := map[string]string{}
68+
if len(CustomLabels) > 0 {
69+
for k, v := range defaultLabels {
70+
mergedLabels[k] = v
71+
}
72+
for k, v := range CustomLabels {
73+
if _, ok := defaultLabels[k]; !ok {
74+
mergedLabels[k] = v
75+
}
76+
}
77+
} else {
78+
return defaultLabels
5379
}
80+
return mergedLabels
81+
}
82+
83+
func getCommonAnnotations() map[string]string {
84+
return CustomAnnotations
5485
}
5586

5687
func getFluentBitLabels(name string) map[string]string {

pkg/k8sutil/configmap.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ func (oc *OperatorContext) ReconcileConfigMap() result.ReconcileResult {
1919
cr := oc.MarklogicGroup
2020

2121
logger.Info("Reconciling MarkLogic ConfigMap")
22-
labels := getMarkLogicLabels(cr.Spec.Name)
23-
annotations := map[string]string{}
22+
labels := getCommonLabels(cr.Spec.Name)
23+
annotations := getCommonAnnotations()
2424
configMapName := cr.Spec.Name + "-scripts"
2525
objectMeta := generateObjectMeta(configMapName, cr.Namespace, labels, annotations)
2626
nsName := types.NamespacedName{Name: objectMeta.Name, Namespace: objectMeta.Namespace}

pkg/k8sutil/haProxy.go

Lines changed: 24 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ func (cc *ClusterContext) ReconcileHAProxy() result.ReconcileResult {
2323
cr := cc.MarklogicCluster
2424

2525
logger.Info("Reconciling HAProxy Config")
26-
labels := map[string]string{
27-
"app.kubernetes.io/instance": "marklogic",
28-
"app.kubernetes.io/name": "haproxy",
29-
}
30-
annotations := map[string]string{}
26+
27+
labels := getCommonLabels(cr.GetObjectMeta().GetName())
28+
labels["app.kubernetes.io/component"] = "haproxy"
29+
annotations := getCommonAnnotations()
3130
configMapName := "marklogic-haproxy"
3231
objectMeta := generateObjectMeta(configMapName, cr.Namespace, labels, annotations)
3332
nsName := types.NamespacedName{Name: objectMeta.Name, Namespace: objectMeta.Namespace}
@@ -37,7 +36,7 @@ func (cc *ClusterContext) ReconcileHAProxy() result.ReconcileResult {
3736
err := client.Get(cc.Ctx, nsName, configmap)
3837
data := generateHAProxyConfigMapData(cc.MarklogicCluster)
3938
configMapDef := generateHAProxyConfigMap(objectMeta, marklogicClusterAsOwner(cr), data)
40-
haproxyServiceDef := cc.generateHaproxyServiceDef()
39+
haproxyServiceDef := cc.generateHaproxyServiceDef(objectMeta)
4140
configmapHash := calculateHash(configMapDef.Data)
4241
if err != nil {
4342
if errors.IsNotFound(err) {
@@ -48,7 +47,7 @@ func (cc *ClusterContext) ReconcileHAProxy() result.ReconcileResult {
4847
return result.Error(err)
4948
}
5049
logger.Info("HAProxy configmap creation is successful")
51-
err = cc.createHAProxyDeployment()
50+
err = cc.createHAProxyDeployment(objectMeta)
5251
if err != nil {
5352
logger.Info("HAProxy Deployment creation is failed")
5453
return result.Error(err)
@@ -197,37 +196,28 @@ resolvers dns
197196
}
198197

199198
// createHAproxy Deployment
200-
func (cc *ClusterContext) createHAProxyDeployment() error {
199+
func (cc *ClusterContext) createHAProxyDeployment(meta metav1.ObjectMeta) error {
201200
logger := cc.ReqLogger
202201
logger.Info("Creating HAProxy Deployment")
203-
labels := map[string]string{
204-
"app.kubernetes.io/instance": "marklogic",
205-
"app.kubernetes.io/name": "haproxy",
206-
}
207202
client := cc.Client
208203
cr := cc.MarklogicCluster
209204
ownerDef := marklogicClusterAsOwner(cr)
210205
defaultMode := int32(420)
211206
deploymentDef := &appsv1.Deployment{
212207
ObjectMeta: metav1.ObjectMeta{
213-
Name: "marklogic-haproxy",
214-
Namespace: cc.Request.Namespace,
215-
Labels: labels,
208+
Name: "marklogic-haproxy",
209+
Namespace: cc.Request.Namespace,
210+
Labels: meta.Labels,
211+
Annotations: meta.Annotations,
216212
},
217213
Spec: appsv1.DeploymentSpec{
218214
Replicas: &cr.Spec.HAProxy.ReplicaCount,
219215
Selector: &metav1.LabelSelector{
220-
MatchLabels: map[string]string{
221-
"app.kubernetes.io/instance": "marklogic",
222-
"app.kubernetes.io/name": "haproxy",
223-
},
216+
MatchLabels: meta.Labels,
224217
},
225218
Template: corev1.PodTemplateSpec{
226219
ObjectMeta: metav1.ObjectMeta{
227-
Labels: map[string]string{
228-
"app.kubernetes.io/instance": "marklogic",
229-
"app.kubernetes.io/name": "haproxy",
230-
},
220+
Labels: meta.Labels,
231221
Annotations: map[string]string{
232222
"comfigmap-hash": calculateHash(generateHAProxyConfigMapData(cr)),
233223
},
@@ -297,7 +287,7 @@ func (cc *ClusterContext) createHAProxyDeployment() error {
297287
return nil
298288
}
299289

300-
func (cc *ClusterContext) generateHaproxyServiceDef() *corev1.Service {
290+
func (cc *ClusterContext) generateHaproxyServiceDef(meta metav1.ObjectMeta) *corev1.Service {
301291
cr := cc.MarklogicCluster
302292
defaultPort := []corev1.ServicePort{
303293
{
@@ -356,20 +346,15 @@ func (cc *ClusterContext) generateHaproxyServiceDef() *corev1.Service {
356346
}
357347
serviceDef := &corev1.Service{
358348
ObjectMeta: metav1.ObjectMeta{
359-
Name: "marklogic-haproxy",
360-
Namespace: cc.Request.Namespace,
361-
Labels: map[string]string{
362-
"app.kubernetes.io/instance": "marklogic",
363-
"app.kubernetes.io/name": "haproxy",
364-
},
349+
Name: "marklogic-haproxy",
350+
Namespace: cc.Request.Namespace,
351+
Labels: meta.Labels,
352+
Annotations: meta.Annotations,
365353
},
366354
Spec: corev1.ServiceSpec{
367-
Selector: map[string]string{
368-
"app.kubernetes.io/instance": "marklogic",
369-
"app.kubernetes.io/name": "haproxy",
370-
},
371-
Ports: servicePort,
372-
Type: corev1.ServiceTypeClusterIP,
355+
Selector: meta.Labels,
356+
Ports: servicePort,
357+
Type: corev1.ServiceTypeClusterIP,
373358
},
374359
}
375360
return serviceDef
@@ -392,16 +377,13 @@ func (cc *ClusterContext) createHAProxyService(serviceDef *corev1.Service) error
392377
}
393378

394379
func generateHAProxyConfigMap(objectMeta metav1.ObjectMeta, owner metav1.OwnerReference, data map[string]string) *corev1.ConfigMap {
395-
labels := map[string]string{
396-
"app.kubernetes.io/component": "haproxy",
397-
}
398-
annotations := map[string]string{}
380+
399381
return &corev1.ConfigMap{
400382
ObjectMeta: metav1.ObjectMeta{
401383
Name: objectMeta.Name,
402384
Namespace: objectMeta.Namespace,
403-
Labels: labels,
404-
Annotations: annotations,
385+
Labels: objectMeta.Labels,
386+
Annotations: objectMeta.Annotations,
405387
OwnerReferences: []metav1.OwnerReference{
406388
owner,
407389
},

pkg/k8sutil/handler.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ func (oc *OperatorContext) ReconsileMarklogicGroupHandler() (reconcile.Result, e
2828
}
2929

3030
func (cc *ClusterContext) ReconsileMarklogicClusterHandler() (reconcile.Result, error) {
31+
SetCommonAnnotations(cc.MarklogicCluster.GetAnnotations())
32+
SetCommonLabels(cc.MarklogicCluster.GetLabels())
3133
if result := cc.ReconcileSecret(); result.Completed() {
3234
return result.Output()
3335
}

pkg/k8sutil/ingress.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func (cc *ClusterContext) getIngress(namespace string, ingressName string) (*net
7373
}
7474

7575
func generateIngress(ingressName string, cr *databasev1alpha1.MarklogicCluster) *networkingv1.Ingress {
76-
labels := getMarkLogicLabels(cr.GetObjectMeta().GetName())
76+
labels := getCommonLabels(cr.GetObjectMeta().GetName())
7777
annotations := cr.Spec.HAProxy.Ingress.Annotations
7878
ingressObjectMeta := generateObjectMeta(ingressName, cr.Namespace, labels, annotations)
7979
ingress := generateIngressDef(ingressObjectMeta, marklogicClusterAsOwner(cr), cr)

pkg/k8sutil/marklogicServer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ func MarkLogicGroupLogger(namespace string, name string) logr.Logger {
8585
func GenerateMarkLogicGroupDef(cr *databasev1alpha1.MarklogicCluster, index int, params *MarkLogicGroupParameters) *databasev1alpha1.MarklogicGroup {
8686
logger := MarkLogicGroupLogger(cr.Namespace, cr.ObjectMeta.Name)
8787
logger.Info("ReconcileMarkLogicCluster")
88-
labels := getMarkLogicLabels(cr.ObjectMeta.Name)
89-
annotations := map[string]string{}
88+
labels := getCommonLabels(cr.ObjectMeta.Name)
89+
annotations := getCommonAnnotations()
9090
objectMeta := generateObjectMeta(cr.Spec.MarkLogicGroups[index].Name, cr.Namespace, labels, annotations)
9191
bootStrapHostName := ""
9292
bootStrapName := ""

pkg/k8sutil/networkPolicy.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ func (cc *ClusterContext) getNetworkPolicy(namespace string, networkPolicyName s
4545
}
4646

4747
func generateNetworkPolicy(networkPolicyName string, cr *databasev1alpha1.MarklogicCluster) *networkingv1.NetworkPolicy {
48-
labels := getMarkLogicLabels(cr.GetObjectMeta().GetName())
49-
netObjectMeta := generateObjectMeta(networkPolicyName, cr.Namespace, labels, map[string]string{})
48+
labels := getCommonLabels(cr.GetObjectMeta().GetName())
49+
annotations := getCommonAnnotations()
50+
netObjectMeta := generateObjectMeta(networkPolicyName, cr.Namespace, labels, annotations)
5051
networkPolicy := generateNetworkPolicyDef(netObjectMeta, marklogicClusterAsOwner(cr), cr)
5152
return networkPolicy
5253
}

pkg/k8sutil/secret.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ func (cc *ClusterContext) ReconcileSecret() result.ReconcileResult {
1919
}
2020

2121
logger.Info("Reconciling MarkLogic Secret")
22-
labels := getMarkLogicLabels(mlc.ObjectMeta.Name)
23-
annotations := map[string]string{}
22+
labels := getCommonLabels(mlc.ObjectMeta.Name)
23+
annotations := getCommonAnnotations()
2424
secretName := mlc.ObjectMeta.Name + "-admin"
2525
objectMeta := generateObjectMeta(secretName, mlc.Namespace, labels, annotations)
2626
nsName := types.NamespacedName{Name: objectMeta.Name, Namespace: objectMeta.Namespace}

pkg/k8sutil/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (oc *OperatorContext) CreateOrUpdateService(namespace string, serviceMeta m
126126
}
127127

128128
func generateService(svcName string, cr *databasev1alpha1.MarklogicGroup) *corev1.Service {
129-
labels := getMarkLogicLabels(cr.Spec.Name)
129+
labels := getCommonLabels(cr.Spec.Name)
130130
var svcParams serviceParameters = serviceParameters{}
131131
svcObjectMeta := generateObjectMeta(svcName, cr.Namespace, labels, svcParams.Annotations)
132132
svcParams = generateServiceParams(cr)

pkg/k8sutil/statefulset.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ type containerParameters struct {
6464
func (oc *OperatorContext) ReconcileStatefulset() (reconcile.Result, error) {
6565
cr := oc.GetMarkLogicServer()
6666
logger := oc.ReqLogger
67-
labels := getMarkLogicLabels(cr.Spec.Name)
68-
annotations := map[string]string{}
67+
labels := getCommonLabels(cr.Spec.Name)
68+
annotations := getCommonAnnotations()
6969
objectMeta := generateObjectMeta(cr.Spec.Name, cr.Namespace, labels, annotations)
7070
currentSts, err := oc.GetStatefulSet(cr.Namespace, objectMeta.Name)
7171
containerParams := generateContainerParams(cr)
@@ -198,7 +198,8 @@ func generateStatefulSetsDef(stsMeta metav1.ObjectMeta, params statefulSetParame
198198
UpdateStrategy: appsv1.StatefulSetUpdateStrategy{Type: params.UpdateStrategy},
199199
Template: corev1.PodTemplateSpec{
200200
ObjectMeta: metav1.ObjectMeta{
201-
Labels: stsMeta.GetLabels(),
201+
Labels: stsMeta.GetLabels(),
202+
Annotations: stsMeta.GetAnnotations(),
202203
},
203204
Spec: corev1.PodSpec{
204205
Containers: generateContainerDef("marklogic-server", containerParams),

0 commit comments

Comments
 (0)