apiVersion: v1
kind: Namespace
metadata:
  name: launcher
  
---

apiVersion: v1
kind: ServiceAccount
metadata:
  name: launcher
  namespace: launcher

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: launcher
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: launcher
  namespace: launcher
  
---

apiVersion: v1
data:
  .dockerconfigjson: eyJhdXRocyI6eyJwdWJyZXBvLmd1YW5jZS5jb20iOnsicGFzc3dvcmQiOiJKeTZnRkY2OFVIUllHWjhrNiIsInVzZXJuYW1lIjoiZnRkZXBsb3kifX19
kind: Secret
metadata:
  name: registry-key
  namespace: launcher
type: kubernetes.io/dockerconfigjson
  
---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: launcher
  namespace: launcher
spec:
  rules:
  - host: launcher.{{ domain }}
    http:
      paths:
      - backend:
          service: 
            name: launcher
            port: 
              number: 5000
        path: /
        pathType: ImplementationSpecific
  
---

apiVersion: v1
kind: ConfigMap
metadata:
  name: launcher-settings
  namespace: launcher
data:
  settings.yaml: ''

---
  
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: persistent-data
  namespace: launcher
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: {{ storageClassName }}
  volumeMode: Filesystem
  
---
  
apiVersion: apps/v1
kind: Deployment
metadata:
  name: launcher
  namespace: launcher
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deployment-launcher-launcher
  template:
    metadata:
      labels:
        app: deployment-launcher-launcher
    spec:
      containers:
      - args:
        - python
        - web.py
        image: {{ launcher_image }}
        imagePullPolicy: IfNotPresent
        name: launcher
        ports:
        - containerPort: 5000
          name: 5000tcp01
          protocol: TCP
        resources: {}
        securityContext:
          procMount: Default
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /config/cloudcare-forethought-setup/persistent-data
          name: persistent-data
        - mountPath: /config/cloudcare-forethought-setup/config/settings.yaml
          name: settings
          subPath: settings.yaml
        workingDir: /config/cloudcare-forethought-setup
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: registry-key
      restartPolicy: Always
      schedulerName: default-scheduler
      serviceAccount: launcher
      serviceAccountName: launcher
      volumes:
      - name: persistent-data
        persistentVolumeClaim:
          claimName: persistent-data
      - configMap:
          defaultMode: 256
          name: launcher-settings
          optional: false
        name: settings
  
---
  
apiVersion: v1
kind: Service
metadata:
  name: launcher
  namespace: launcher
spec:
  ports:
  - name: 5000tcp00-launcher
    port: 5000
    protocol: TCP
    targetPort: 5000
  selector:
    app: deployment-launcher-launcher
  sessionAffinity: None
  type: ClusterIP