-
Notifications
You must be signed in to change notification settings - Fork 35
/
statefulset.yaml
129 lines (128 loc) · 3.92 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
# ------------------------------------------------------------------------------
# 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
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: 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
---