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
