# https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/ # https://cloud.google.com/kubernetes-engine/docs/concepts/statefulset apiVersion: apps/v1 kind: StatefulSet metadata: name: polkadot spec: selector: matchLabels: app: polkadot serviceName: polkadot replicas: {{ .Values.nodes.replicas }} updateStrategy: type: RollingUpdate podManagementPolicy: Parallel template: metadata: labels: app: polkadot spec: {{- if .Values.rbac.enable }} serviceAccountName: {{ .Values.rbac.name }} {{- else }} serviceAccountName: default {{- end }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node operator: In values: - polkadot podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - polkadot topologyKey: "kubernetes.io/hostname" terminationGracePeriodSeconds: 300 containers: - name: polkapod imagePullPolicy: "{{ .Values.image.pullPolicy }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" {{- if .Values.resources }} resources: requests: memory: {{ .Values.resources.memory }} cpu: {{ .Values.resources.cpu }} {{- end }} ports: - containerPort: 30333 name: p2p - containerPort: 9933 name: http-rpc - containerPort: 9944 name: websocket-rpc args: - --base-path - {{ .Values.image.basepath }} - --name - $(MY_POD_NAME) {{- range .Values.nodes.args }} - {{ . }} {{- end }} env: # from (workaround for hostname) # https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name volumeMounts: - name: polkadir mountPath: {{ .Values.image.basepath }} readinessProbe: tcpSocket: port: http-rpc initialDelaySeconds: 30 periodSeconds: 30 livenessProbe: tcpSocket: port: http-rpc initialDelaySeconds: 30 periodSeconds: 30 securityContext: runAsUser: 1000 fsGroup: 1000 volumeClaimTemplates: - metadata: name: polkadir spec: accessModes: [ "ReadWriteOnce" ] storageClassName: ssd resources: requests: storage: 32Gi