1
1
apiVersion : apps/v1
2
2
kind : StatefulSet
3
3
metadata :
4
- name : {{ include "marklogic.fullname" . }}
4
+ name : {{ include "marklogic.fullname" . }}-{{ .Values.group.name}}
5
5
namespace : {{ .Release.Namespace }}
6
6
labels :
7
+ app.kubernetes.io/component : marklogic-{{ .Values.group.name}}
7
8
{{- include "marklogic.labels" . | nindent 4 }}
8
9
spec :
9
10
serviceName : {{ include "marklogic.headlessServiceName" . }}
10
11
replicas : {{ .Values.replicaCount }}
11
12
selector :
12
13
matchLabels :
13
14
{{- include "marklogic.selectorLabels" . | nindent 6 }}
15
+ app.kubernetes.io/component : marklogic-{{ .Values.group.name}}
14
16
template :
15
17
metadata :
16
18
labels :
17
19
{{- include "marklogic.selectorLabels" . | nindent 8 }}
20
+ app.kubernetes.io/component : marklogic-{{ .Values.group.name}}
18
21
spec :
19
22
serviceAccountName : {{ include "marklogic.serviceAccountName" . }}
20
23
{{- with .Values.affinity }}
21
24
affinity : {{- toYaml . | nindent 8}}
22
25
{{- end }}
23
26
terminationGracePeriodSeconds : {{ .Values.terminationGracePeriod }}
27
+ {{- if and (ne .Values.bootstrapClusterName "") (eq .Values.bootstrapHostName "") }}
28
+ initContainers :
29
+ - name : init-checkGroup
30
+ image : " {{ .Values.image.repository }}:{{ .Values.image.tag }}"
31
+ command :
32
+ - bash
33
+ - ' -c'
34
+ - |
35
+ echo '### Begin init Container ###'
36
+
37
+ echo "BOOTSTRAP_CLUSTER_NAME: $BOOTSTRAP_CLUSTER_NAME"
38
+ echo "MARKLOGIC_GROUP: $MARKLOGIC_GROUP"
39
+
40
+ GROUP_CFG_TEMPLATE='{"group-name":"%s"}'
41
+ GROUP_CFG=$(printf "$GROUP_CFG_TEMPLATE" "$MARKLOGIC_GROUP")
42
+
43
+ echo "GROUP_CFG: $GROUP_CFG"
44
+
45
+ ML_GROUPS=`curl --anyauth -m 20 -s -X GET http://${BOOTSTRAP_CLUSTER_NAME}:8002/manage/v2/groups?format=json --anyauth --user ${MARKLOGIC_ADMIN_USERNAME}:${MARKLOGIC_ADMIN_PASSWORD} | jq '."group-default-list"."list-items"."list-item"'`;
46
+ echo ML_GROUPS: $ML_GROUPS;
47
+ if [[ $(jq <<< "${ML_GROUPS}" --arg MARKLOGIC_GROUP "$MARKLOGIC_GROUP" 'any(.nameref==$MARKLOGIC_GROUP)') == "true" ]]; then
48
+ echo "Group is already configured."
49
+ else
50
+ echo $MARKLOGIC_GROUP does not exist, creating $MARKLOGIC_GROUP on ML cluster;
51
+ resp=`curl --anyauth --user ${MARKLOGIC_ADMIN_USERNAME}:${MARKLOGIC_ADMIN_PASSWORD} -m 20 -s -X POST -d "${GROUP_CFG}" -H "Content-type: application/json" http://${BOOTSTRAP_CLUSTER_NAME}:8002/manage/v2/groups`;
52
+ sleep 20s
53
+ fi
54
+ env :
55
+ - name : " BOOTSTRAP_CLUSTER_NAME"
56
+ value : {{ .Values.bootstrapClusterName }}
57
+ - name : MARKLOGIC_GROUP
58
+ value : {{ .Values.group.name }}
59
+ - name : MARKLOGIC_ADMIN_USERNAME
60
+ valueFrom :
61
+ secretKeyRef :
62
+ name : {{ include "marklogic.fullname" . }}
63
+ key : username
64
+ - name : MARKLOGIC_ADMIN_PASSWORD
65
+ valueFrom :
66
+ secretKeyRef :
67
+ name : {{ include "marklogic.fullname" . }}
68
+ key : password
69
+ {{- end }}
24
70
containers :
25
71
- name : marklogic-server
26
72
image : " {{ .Values.image.repository }}:{{ .Values.image.tag }}"
42
88
secretKeyRef :
43
89
name : {{ include "marklogic.fullname" . }}
44
90
key : password
91
+ - name : MARKLOGIC_WALLET_PASSWORD
92
+ valueFrom :
93
+ secretKeyRef :
94
+ name : {{ include "marklogic.fullname" . }}
95
+ key : password
96
+ - name : " BOOTSTRAP_CLUSTER_NAME"
97
+ value : {{ .Values.bootstrapClusterName }}
98
+ - name : MARKLOGIC_GROUP
99
+ value : {{ .Values.group.name }}
45
100
envFrom :
46
101
- configMapRef :
47
102
name : {{ include "marklogic.fullname" . }}
@@ -62,6 +117,36 @@ spec:
62
117
{{- toYaml .Values.extraContainerPorts | nindent 12 }}
63
118
{{- end }}
64
119
lifecycle :
120
+ {{- if eq .Values.bootstrapClusterName "" }}
121
+ postStart :
122
+ exec :
123
+ command :
124
+ - bash
125
+ - ' -c'
126
+ - |
127
+ pid=$(ps aux | grep -i '/bin/bas[h] /usr' | awk {'print $2'})
128
+
129
+ log () {
130
+ local TIMESTAMP=$(date +"%Y-%m-%d %T.%3N")
131
+ echo "${TIMESTAMP} $@" > /proc/$pid/fd/1
132
+ }
133
+
134
+ log "Info: [poststart] Poststart Hook Execution"
135
+
136
+ while [ ! -f /var/opt/MarkLogic/ready ]; do
137
+ sleep 5
138
+ done
139
+
140
+ log "Info: [poststart] Updating Default group on cluster"
141
+ GROUP_CFG_TEMPLATE='{"group-name":"%s"}'
142
+ GROUP_CFG=$(printf "$GROUP_CFG_TEMPLATE" "$MARKLOGIC_GROUP")
143
+
144
+ AUTH_CURL="curl --anyauth --user "${MARKLOGIC_ADMIN_USERNAME}":"${MARKLOGIC_ADMIN_PASSWORD}" -m 20 -s "
145
+
146
+ $AUTH_CURL -X PUT -H "Content-type: application/json" -d "${GROUP_CFG}" http://localhost:8002/manage/v2/groups/Default/properties
147
+
148
+ log "Info: [poststart] Poststart Hook Execution Completed"
149
+ {{- end }}
65
150
preStop :
66
151
exec :
67
152
command :
0 commit comments