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 }}