-
Notifications
You must be signed in to change notification settings - Fork 7
/
statefulset.yaml
131 lines (130 loc) · 4.01 KB
/
statefulset.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# ------------------------------------------------------------------------------
# Copyright 2012-2019 Aerospike, Inc.
#
# Portions may be licensed to Aerospike, Inc. under one or more contributor
# license agreements.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
# ------------------------------------------------------------------------------
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: aerospike
namespace: $NAMESPACE
labels: &AerospikeDeploymentLabels
app: $APP_NAME
spec:
serviceName: aerospike
selector:
matchLabels:
app: $APP_NAME
replicas: $AEROSPIKE_NODES
template:
metadata:
labels: *AerospikeDeploymentLabels
spec:
terminationGracePeriodSeconds: 30
containers:
- name: aerospike
image: aerospike/aerospike-server-enterprise
ports:
- containerPort: 3000
name: aero-clients
- containerPort: 3002
name: aero-mesh
- containerPort: 3003
name: aero-info
# Do not stop node before migrations are complete
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- "while true; do finished=0; for part in $( asadm --no-config-file -e 'asinfo -v statistics -l' | grep migrate_partitions_remaining | cut -d= -f2); do if [ $part != 0 ]; then finished=0; break; fi; finished=1; done; if [ $finished != 1 ]; then sleep 15; else exit 0; fi; done"
livenessProbe:
exec:
command:
- /bin/sh
- -c
- "asinfo -v build"
initialDelaySeconds: 30
periodSeconds: 60
readinessProbe:
tcpSocket:
port: 3000
initialDelaySeconds: 10
timeoutSeconds: 1
periodSeconds: 10
volumeMounts:
- name: confdir
mountPath: /etc/aerospike
- name: datadir
mountPath: /opt/aerospike/data
env:
- name: NAMESPACE
value: "$AEROSPIKE_NAMESPACE"
- name: REPL_FACTOR
value: "$AEROSPIKE_REPL"
- name: MEM_GB
value: "$AEROSPIKE_MEM"
- name: DEFAULT_TTL
value: "$AEROSPIKE_TTL"
- name: FEATURE_KEY_FILE
value: "$AEROSPIKE_FEATURE_KEY_FILE"
- name: NSUP_PERIOD
value: "$AEROSPIKE_NSUP_PERIOD"
# Downward API:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
initContainers:
- name: aerospike-init
image: aerospike/aerospike-kubernetes-init:1.1.0
volumeMounts:
- name: confdir
mountPath: /etc/aerospike
- name: initconfigs
mountPath: /configs
env: # Variables needed by peer-finder for discovery
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE
value: aerospike
volumes:
- name: confdir
emptyDir: {}
- name: initconfigs
configMap:
name: aerospike-conf
volumeClaimTemplates:
- metadata:
name: datadir
labels: *AerospikeDeploymentLabels
spec:
accessModes:
- ReadWriteOnce
storageClassName: ssd
resources:
requests:
storage: ${AEROSPIKE_MEM}Gi
---