github.com/unigraph-dev/dgraph@v1.1.1-0.20200923154953-8b52b426f765/contrib/config/kubernetes/helm/templates/alpha-statefulset.yaml (about)

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