promenade/promenade/templates/roles/genesis/etc/kubernetes/manifests/auxiliary-kubernetes-etcd.yaml

64 lines
1.9 KiB
YAML

---
apiVersion: v1
kind: Pod
metadata:
name: auxiliary-etcd
namespace: kube-system
labels:
component: auxiliary-etcd
promenade: genesis
spec:
hostNetwork: true
{%- with etcd_name = 'auxiliary', client_port = 12379, peer_port = 12380 %}
containers:
{% include "genesis-etcd/server-container.yaml" with context %}
- name: monitor
image: {{ config['Genesis:images.kubernetes.etcd'] }}
command:
- /bin/sh
- -c
- |-
set -x
MEMBER_COUNT=$(etcdctl member list | grep '\bstarted\b' | wc -l)
if [ $MEMBER_COUNT -gt 1 ]; then
MEMBER_ID=$(etcdctl member list | grep auxiliary | awk -F ', ' '{ print $1 }')
if [ -n $MEMBER_ID ]; then
while [ $MEMBER_COUNT -lt 3 ]; do
sleep 30
MEMBER_COUNT=$(etcdctl member list | grep '\bstarted\b' | wc -l)
done
set -e
etcdctl member remove $MEMBER_ID
fi
rm -rf /var/lib/etcd/* /manifests/auxiliary-kubernetes-etcd.yaml
sleep 10000
fi
env:
- name: ETCDCTL_API
value: '3'
- name: ETCDCTL_DIAL_TIMEOUT
value: 3s
- name: ETCDCTL_ENDPOINTS
value: https://127.0.0.1:2379
- name: ETCDCTL_CACERT
value: /etc/etcd/pki/client-ca.pem
- name: ETCDCTL_CERT
value: /etc/etcd/pki/etcd-client.pem
- name: ETCDCTL_KEY
value: /etc/etcd/pki/etcd-client-key.pem
volumeMounts:
- name: data
mountPath: /var/lib/etcd
- name: pki
mountPath: /etc/etcd/pki
- name: manifest
mountPath: /manifests
volumes:
{% include "genesis-etcd/common-volumes.yaml" with context %}
- name: manifest
hostPath:
path: /etc/kubernetes/manifests
{%- endwith %}
...