X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=kubernetes%2Fcommon%2Fetcd%2Ftemplates%2Fstatefulset.yaml;h=f5592bd2527f042fd2dd72860618644a77a5c481;hb=a18e6f219d98a7b13ffd29d15c0345dce8ea2464;hp=ccc6b69971fa345aba3c7912b55b589e0744054e;hpb=4f897651438c1f8a199f471dd16b150585353116;p=oom.git diff --git a/kubernetes/common/etcd/templates/statefulset.yaml b/kubernetes/common/etcd/templates/statefulset.yaml index ccc6b69971..f5592bd252 100644 --- a/kubernetes/common/etcd/templates/statefulset.yaml +++ b/kubernetes/common/etcd/templates/statefulset.yaml @@ -1,3 +1,4 @@ +{{/* # Copyright © 2019 Intel Corporation Inc # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -11,24 +12,27 @@ # 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/v1beta1 +*/}} +apiVersion: apps/v1 kind: StatefulSet metadata: - name: {{ include "common.servicename" . }} + name: {{ include "common.fullname" . }} labels: heritage: "{{ .Release.Service }}" - release: "{{ .Release.Name }}" + release: "{{ include "common.release" . }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app: {{ template "common.name" . }} + app: {{ include "common.name" . }} spec: - serviceName: {{ include "common.servicename" . }} + serviceName: {{ include "common.servicename" .}} replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} template: metadata: labels: heritage: "{{ .Release.Service }}" - release: "{{ .Release.Name }}" + release: "{{ include "common.release" . }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" app: {{ include "common.name" . }} spec: @@ -45,8 +49,8 @@ spec: {{ toYaml .Values.tolerations | indent 8 }} {{- end }} containers: - - name: {{ include "common.servicename" . }} - image: "{{ .Values.repository }}/{{ .Values.image }}" + - name: {{ include "common.fullname" . }} + image: {{ include "repositoryGenerator.googleK8sRepository" . }}/{{ .Values.image }} imagePullPolicy: "{{ .Values.pullPolicy }}" ports: - containerPort: {{ .Values.service.peerInternalPort }} @@ -55,23 +59,20 @@ spec: name: {{ .Values.service.clientPortName }} {{- if eq .Values.liveness.enabled true }} livenessProbe: - exec: - command: ["/bin/sh", "-c", "etcdctl cluster-health | grep -w healthy" ] - initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} - periodSeconds: {{ .Values.liveness.periodSeconds }} - timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} - {{ end -}} - readinessProbe: - exec: - command: ["/bin/sh", "-c", "etcdctl cluster-health | grep -w healthy" ] - initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} - periodSeconds: {{ .Values.readiness.periodSeconds }} + tcpSocket: + port: {{ .Values.service.clientInternalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + {{ end -}} resources: {{ include "common.resources" . | indent 10 }} env: - name: INITIAL_CLUSTER_SIZE value: {{ .Values.replicaCount | quote }} - name: SET_NAME + value: {{ include "common.fullname" . }} + - name: SERVICE_NAME value: {{ include "common.servicename" . }} {{- if .Values.extraEnv }} {{ toYaml .Values.extraEnv | indent 8 }} @@ -85,13 +86,13 @@ spec: - | EPS="" for i in $(seq 0 $((${INITIAL_CLUSTER_SIZE} - 1))); do - EPS="${EPS}${EPS:+,}http://${SET_NAME}-${i}.${SET_NAME}:2379" + EPS="${EPS}${EPS:+,}http://${SET_NAME}-${i}.${SERVICE_NAME}:2379" done HOSTNAME=$(hostname) member_hash() { - etcdctl member list | grep http://${HOSTNAME}.${SET_NAME}:2380 | cut -d':' -f1 | cut -d'[' -f1 + etcdctl member list | grep http://${HOSTNAME}.${SERVICE_NAME}:2380 | cut -d':' -f1 | cut -d'[' -f1 } SET_ID=${HOSTNAME##*[^0-9]} @@ -113,43 +114,43 @@ spec: # store member id into PVC for later member replacement collect_member() { while ! etcdctl member list &>/dev/null; do sleep 1; done - etcdctl member list | grep http://${HOSTNAME}.${SET_NAME}:2380 | cut -d':' -f1 | cut -d'[' -f1 > /var/run/etcd/member_id + etcdctl member list | grep http://${HOSTNAME}.${SERVICE_NAME}:2380 | cut -d':' -f1 | cut -d'[' -f1 > /var/run/etcd/member_id exit 0 } eps() { EPS="" for i in $(seq 0 $((${INITIAL_CLUSTER_SIZE} - 1))); do - EPS="${EPS}${EPS:+,}http://${SET_NAME}-${i}.${SET_NAME}:2379" + EPS="${EPS}${EPS:+,}http://${SET_NAME}-${i}.${SERVICE_NAME}:2379" done echo ${EPS} } member_hash() { - etcdctl member list | grep http://${HOSTNAME}.${SET_NAME}:2380 | cut -d':' -f1 | cut -d'[' -f1 + etcdctl member list | grep http://${HOSTNAME}.${SERVICE_NAME}:2380 | cut -d':' -f1 | cut -d'[' -f1 } # we should wait for other pods to be up before trying to join # otherwise we got "no such host" errors when trying to resolve other members for i in $(seq 0 $((${INITIAL_CLUSTER_SIZE} - 1))); do while true; do - echo "Waiting for ${SET_NAME}-${i}.${SET_NAME} to come up" - ping -W 1 -c 1 ${SET_NAME}-${i}.${SET_NAME} > /dev/null && break + echo "Waiting for ${SET_NAME}-${i}.${SERVICE_NAME} to come up" + ping -W 1 -c 1 ${SET_NAME}-${i}.${SERVICE_NAME} > /dev/null && break sleep 1s done done # re-joining after failure? - if [ -e /var/run/etcd/default.etcd ]; then + if [[ -e /var/run/etcd/default.etcd && -f /var/run/etcd/member_id ]]; then echo "Re-joining etcd member" member_id=$(cat /var/run/etcd/member_id) # re-join member - ETCDCTL_ENDPOINT=$(eps) etcdctl member update ${member_id} http://${HOSTNAME}.${SET_NAME}:2380 | true + ETCDCTL_ENDPOINT=$(eps) etcdctl member update ${member_id} http://${HOSTNAME}.${SERVICE_NAME}:2380 | true 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}:2379 \ + --advertise-client-urls http://${HOSTNAME}.${SERVICE_NAME}:2379 \ --data-dir /var/run/etcd/default.etcd fi @@ -170,7 +171,7 @@ spec: fi echo "Adding new member" - etcdctl member add ${HOSTNAME} http://${HOSTNAME}.${SET_NAME}:2380 | grep "^ETCD_" > /var/run/etcd/new_member_envs + etcdctl member add ${HOSTNAME} http://${HOSTNAME}.${SERVICE_NAME}:2380 | grep "^ETCD_" > /var/run/etcd/new_member_envs if [ $? -ne 0 ]; then echo "Exiting" @@ -186,54 +187,53 @@ spec: 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}:2379 \ + --advertise-client-urls http://${HOSTNAME}.${SERVICE_NAME}:2379 \ --data-dir /var/run/etcd/default.etcd \ - --initial-advertise-peer-urls http://${HOSTNAME}.${SET_NAME}:2380 \ + --initial-advertise-peer-urls http://${HOSTNAME}.${SERVICE_NAME}:2380 \ --initial-cluster ${ETCD_INITIAL_CLUSTER} \ --initial-cluster-state ${ETCD_INITIAL_CLUSTER_STATE} fi PEERS="" for i in $(seq 0 $((${INITIAL_CLUSTER_SIZE} - 1))); do - PEERS="${PEERS}${PEERS:+,}${SET_NAME}-${i}=http://${SET_NAME}-${i}.${SET_NAME}:2380" + PEERS="${PEERS}${PEERS:+,}${SET_NAME}-${i}=http://${SET_NAME}-${i}.${SERVICE_NAME}:2380" done collect_member & # join member exec etcd --name ${HOSTNAME} \ - --initial-advertise-peer-urls http://${HOSTNAME}.${SET_NAME}:2380 \ + --initial-advertise-peer-urls http://${HOSTNAME}.${SERVICE_NAME}:2380 \ --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}:2379 \ + --advertise-client-urls http://${HOSTNAME}.${SERVICE_NAME}:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster ${PEERS} \ --initial-cluster-state new \ --data-dir /var/run/etcd/default.etcd volumeMounts: - - name: {{ include "common.servicename" . }}-datadir + - name: {{ include "common.fullname" . }}-data mountPath: /var/run/etcd {{- if .Values.persistence.enabled }} volumeClaimTemplates: - metadata: - name: {{ include "common.servicename" . }}-data + name: {{ include "common.fullname" . }}-data + labels: + name: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ include "common.release" . }}" + heritage: "{{ .Release.Service }}" spec: accessModes: - - "{{ .Values.persistence.accessMode }}" + - "{{ .Values.persistence.accessMode }}" + storageClassName: {{ include "common.storageClass" . }} resources: requests: # upstream recommended max is 700M storage: "{{ .Values.persistence.storage }}" - {{- if .Values.persistence.storageClass }} - {{- if (eq "-" .Values.persistence.storageClass) }} - storageClassName: "" - {{- else }} - storageClassName: "{{ .Values.persistence.storageClass }}" - {{- end }} - {{- end }} {{- else }} volumes: - - name: {{ include "common.servicename" . }}-datadir + - name: {{ include "common.fullname" . }}-data {{- if .Values.memoryMode }} emptyDir: medium: Memory @@ -241,4 +241,3 @@ spec: emptyDir: {} {{- end }} {{- end }} -