apiVersion: v1
kind: Service
metadata:
 labels:
   name: control-tower
 name: control-tower
spec:
  type: NodePort
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 9000
  selector:
    name: control-tower

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    name: control-tower
  name: control-tower
spec:
  template:
    metadata:
      labels:
        name: control-tower
    spec:
      containers:
      - name: control-tower
        image: rrequero/control-tower:1.0.1
        imagePullPolicy: Always
        resources:
          limits:
            memory: "512Mi"
            cpu: "500m"
        args:
          - develop
        env:
          - name: PORT
            value: "9000"
          - name: LOGGER_TYPE
            value: console
          - name: NODE_ENV
            value: dev
          - name: NODE_PATH
            value: app/src
          - name: EXEC_MIGRATION
            value: "true"
          - name: SESSION_KEY
            value: test
          - name: JWT_SECRET
            valueFrom:
                secretKeyRef:
                  name: ctsecrets
                  key: JWT_SECRET

        ports:
          - containerPort: 9000
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz
            port: 9000
            scheme: HTTP
          initialDelaySeconds: 15
          timeoutSeconds: 1
          periodSeconds: 15

      restartPolicy: Always

---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: control-tower
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: control-tower
  minReplicas: 2
  maxReplicas: 5
  targetCPUUtilizationPercentage: 80
