apiVersion: v1
kind: Service
metadata:
  labels:
    app: signalk
  name: signalk
spec:
  externalTrafficPolicy: Cluster
  ports:
    - port: 80
      protocol: TCP
      targetPort: 3000
  selector:
    app: signalk
  sessionAffinity: None
  type: LoadBalancer

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app: signalk
  name: signalkpvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: signalk
  name: signalk
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: signalk
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: signalk
    spec:
      containers:
        - image: signalk/signalk-server:master
          imagePullPolicy: Always
          name: signalk
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
            - mountPath: /home/node/.signalk
              name: home-node-dotsignalk
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        runAsUser: 1000
        runAsGroup: 1000
        fsGroup: 1000
      terminationGracePeriodSeconds: 30
      volumes:
        - name: home-node-dotsignalk
          persistentVolumeClaim:
            claimName: signalkpvc
