# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
spec:
  selector:
    matchLabels:
      app: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: backend
    spec:
      hostAliases:
      - ip: "127.0.0.1"
        hostnames:
        - "backend"
      volumes:
        - name: backend-pv
          persistentVolumeClaim:
            claimName: backend-pvc
        # - name: files-pv
        #   persistentVolumeClaim:
        #     claimName: files-pvc        
      containers:
        - name: backend
          image: {{ .Values.streampipes.registry }}/backend:{{ .Values.streampipes.version }}
          imagePullPolicy: {{ .Values.pullPolicy }}
          env:
            - name: SP_PRIORITIZED_PROTOCOL
              {{ if (eq .Values.deployment "lite") }}
              value: "mqtt"
              {{ else }}
              value: "kafka"
              {{ end }}
          ports:
            - containerPort: 8030
          volumeMounts:
            - mountPath: "/root/.streampipes"
              name: backend-pv
            # - mountPath: "/spImages"
            #   name: files-pv
