github.com/unigraph-dev/dgraph@v1.1.1-0.20200923154953-8b52b426f765/contrib/config/kubernetes/helm/templates/zero-statefulset.yaml (about) 1 apiVersion: apps/v1beta1 2 kind: StatefulSet 3 metadata: 4 name: "{{ template "dgraph.zero.fullname" . }}" 5 labels: 6 app: {{ template "dgraph.name" . }} 7 chart: {{ template "dgraph.chart" . }} 8 component: {{ .Values.zero.name }} 9 release: {{ .Release.Name }} 10 heritage: {{ .Release.Service }} 11 spec: 12 serviceName: {{ template "dgraph.zero.fullname" . }}-headless 13 replicas: {{ .Values.zero.replicaCount }} 14 podManagementPolicy: {{ .Values.zero.podManagementPolicy | quote }} 15 updateStrategy: 16 type: {{ .Values.zero.updateStrategy | quote }} 17 {{- if (eq "Recreate" .Values.zero.updateStrategy) }} 18 rollingUpdate: null 19 {{- else if .Values.zero.rollingUpdatePartition }} 20 rollingUpdate: 21 partition: {{ .Values.zero.rollingUpdatePartition }} 22 {{- end }} 23 selector: 24 matchLabels: 25 app: {{ template "dgraph.name" . }} 26 chart: {{ template "dgraph.chart" . }} 27 release: {{ .Release.Name }} 28 component: {{ .Values.zero.name }} 29 template: 30 metadata: 31 name: "{{ template "dgraph.zero.fullname" . }}" 32 labels: 33 app: {{ template "dgraph.name" . }} 34 chart: {{ template "dgraph.chart" . }} 35 release: {{ .Release.Name }} 36 component: {{ .Values.zero.name }} 37 spec: 38 {{- if or (eq .Values.zero.antiAffinity "hard") (eq .Values.zero.antiAffinity "soft") .Values.zero.nodeAffinity }} 39 affinity: 40 {{- end }} 41 {{- if eq .Values.zero.antiAffinity "hard" }} 42 podAntiAffinity: 43 requiredDuringSchedulingIgnoredDuringExecution: 44 - labelSelector: 45 matchExpressions: 46 - key: component 47 operator: In 48 values: 49 - {{ .Values.zero.name }} 50 topologyKey: {{ .Values.zero.podAntiAffinitytopologyKey }} 51 {{- else if eq .Values.zero.antiAffinity "soft" }} 52 podAntiAffinity: 53 preferredDuringSchedulingIgnoredDuringExecution: 54 - weight: 100 55 podAffinityTerm: 56 labelSelector: 57 matchExpressions: 58 - key: component 59 operator: In 60 values: 61 - {{ .Values.zero.name }} 62 topologyKey: {{ .Values.zero.podAntiAffinitytopologyKey }} 63 {{- end }} 64 {{- with .Values.zero.nodeAffinity }} 65 nodeAffinity: 66 {{ toYaml . | indent 10 }} 67 {{- end }} 68 {{- include "dgraph.imagePullSecrets" . | indent 6 }} 69 {{- if .Values.zero.securityContext.enabled }} 70 securityContext: 71 fsGroup: {{ .Values.zero.securityContext.fsGroup }} 72 runAsUser: {{ .Values.zero.securityContext.runAsUser }} 73 {{- end }} 74 {{- if .Values.zero.nodeSelector }} 75 nodeSelector: 76 {{ toYaml .Values.zero.nodeSelector | indent 8 }} 77 {{- end }} 78 {{- if .Values.zero.tolerations }} 79 tolerations: 80 {{ toYaml .Values.zero.tolerations | indent 8 }} 81 {{- end }} 82 containers: 83 - name: "{{ template "dgraph.zero.fullname" . }}" 84 image: "{{ template "dgraph.image" . }}" 85 ports: 86 - containerPort: 5080 87 name: zero-grpc 88 - containerPort: 6080 89 name: zero-http 90 imagePullPolicy: {{ .Values.image.pullPolicy | quote }} 91 env: 92 - name: POD_NAMESPACE 93 valueFrom: 94 fieldRef: 95 fieldPath: metadata.namespace 96 command: 97 - bash 98 - "-c" 99 - | 100 set -ex 101 [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 102 ordinal=${BASH_REMATCH[1]} 103 idx=$(($ordinal + 1)) 104 if [[ $ordinal -eq 0 ]]; then 105 exec dgraph zero --my=$(hostname -f):5080 --idx $idx --replicas {{ .Values.zero.replicaCount }} 106 else 107 exec dgraph zero --my=$(hostname -f):5080 --peer {{ template "dgraph.zero.fullname" . }}-0.{{ template "dgraph.zero.fullname" . }}-headless.${POD_NAMESPACE}.svc.cluster.local:5080 --idx $idx --replicas {{ .Values.zero.replicaCount }} 108 fi 109 resources: 110 {{ toYaml .Values.zero.resources | indent 10 }} 111 {{- if .Values.zero.livenessProbe.enabled }} 112 livenessProbe: 113 httpGet: 114 port: {{ .Values.zero.livenessProbe.port }} 115 path: {{ .Values.zero.livenessProbe.path }} 116 initialDelaySeconds: {{ .Values.zero.livenessProbe.initialDelaySeconds }} 117 periodSeconds: {{ .Values.zero.livenessProbe.periodSeconds }} 118 timeoutSeconds: {{ .Values.zero.livenessProbe.timeoutSeconds }} 119 successThreshold: {{ .Values.zero.livenessProbe.successThreshold }} 120 failureThreshold: {{ .Values.zero.livenessProbe.failureThreshold }} 121 {{- end }} 122 {{- if .Values.zero.readinessProbe.enabled }} 123 readinessProbe: 124 httpGet: 125 port: {{ .Values.zero.livenessProbe.port }} 126 path: {{ .Values.zero.livenessProbe.path }} 127 initialDelaySeconds: {{ .Values.zero.readinessProbe.initialDelaySeconds }} 128 periodSeconds: {{ .Values.zero.readinessProbe.periodSeconds }} 129 timeoutSeconds: {{ .Values.zero.readinessProbe.timeoutSeconds }} 130 successThreshold: {{ .Values.zero.readinessProbe.successThreshold }} 131 failureThreshold: {{ .Values.zero.readinessProbe.failureThreshold }} 132 {{- end }} 133 volumeMounts: 134 {{- if .Values.zero.persistence.enabled }} 135 - name: datadir 136 mountPath: /dgraph 137 {{- end }} 138 terminationGracePeriodSeconds: {{ .Values.zero.terminationGracePeriodSeconds }} 139 volumes: 140 - name: datadir 141 persistentVolumeClaim: 142 claimName: datadir 143 {{- if .Values.zero.persistence.enabled }} 144 volumeClaimTemplates: 145 - metadata: 146 name: datadir 147 annotations: 148 {{- range $key, $value := .Values.zero.persistence.annotations }} 149 {{ $key }}: {{ $value }} 150 {{- end }} 151 volume.alpha.kubernetes.io/storage-class: anything 152 spec: 153 accessModes: 154 {{- range .Values.zero.persistence.accessModes }} 155 - {{ . | quote }} 156 {{- end }} 157 resources: 158 requests: 159 storage: {{ .Values.zero.persistence.size | quote }} 160 {{- if .Values.zero.persistence.storageClass }} 161 {{- if (eq "-" .Values.zero.persistence.storageClass) }} 162 storageClassName: "" 163 {{- else }} 164 storageClassName: {{ .Values.zero.persistence.storageClass | quote }} 165 {{- end -}} 166 {{- end -}} 167 {{- else }} 168 - name: datadir 169 emptyDir: {} 170 {{- end }}