You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
YAML
65 lines
1.8 KiB
YAML
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: "etcd"
|
|
namespace: discov
|
|
labels:
|
|
app: "etcd"
|
|
spec:
|
|
serviceName: "etcd"
|
|
replicas: 5
|
|
template:
|
|
metadata:
|
|
name: "etcd"
|
|
labels:
|
|
app: "etcd"
|
|
spec:
|
|
volumes:
|
|
- name: etcd-pvc
|
|
persistentVolumeClaim:
|
|
claimName: etcd-pvc
|
|
containers:
|
|
- name: "etcd"
|
|
image: quay.io/coreos/etcd:latest
|
|
ports:
|
|
- containerPort: 2379
|
|
name: client
|
|
- containerPort: 2380
|
|
name: peer
|
|
env:
|
|
- name: CLUSTER_SIZE
|
|
value: "5"
|
|
- name: SET_NAME
|
|
value: "etcd"
|
|
- name: VOLNAME
|
|
valueFrom:
|
|
fieldRef:
|
|
apiVersion: v1
|
|
fieldPath: metadata.name
|
|
volumeMounts:
|
|
- name: etcd-pvc
|
|
mountPath: /var/lib/etcd
|
|
subPathExpr: $(VOLNAME) # data mounted respectively in each pod
|
|
command:
|
|
- "/bin/sh"
|
|
- "-ecx"
|
|
- |
|
|
|
|
chmod 700 /var/lib/etcd
|
|
|
|
IP=$(hostname -i)
|
|
PEERS=""
|
|
for i in $(seq 0 $((${CLUSTER_SIZE} - 1))); do
|
|
PEERS="${PEERS}${PEERS:+,}${SET_NAME}-${i}=http://${SET_NAME}-${i}.${SET_NAME}:2380"
|
|
done
|
|
exec etcd --name ${HOSTNAME} \
|
|
--listen-peer-urls http://0.0.0.0:2380 \
|
|
--listen-client-urls http://0.0.0.0:2379 \
|
|
--advertise-client-urls http://${HOSTNAME}.${SET_NAME}.discov:2379 \
|
|
--initial-advertise-peer-urls http://${HOSTNAME}.${SET_NAME}:2380 \
|
|
--initial-cluster ${PEERS} \
|
|
--initial-cluster-state new \
|
|
--logger zap \
|
|
--data-dir /var/lib/etcd \
|
|
--auto-compaction-retention 1
|