apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
  labels:
    app: exoplanets-db
  name: exoplanets-db
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: exoplanets-db
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: exoplanets-db
    spec:
      containers:
      - env:
        - name: POSTGRESQL_ADMIN_PASSWORD
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_ADMIN_PASSWORD
              name: exoplanets
        - name: POSTGRESQL_DATABASE
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_DATABASE
              name: exoplanets
        - name: POSTGRESQL_MAX_CONNECTIONS
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_MAX_CONNECTIONS
              name: exoplanets
        - name: POSTGRESQL_PASSWORD
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_PASSWORD
              name: exoplanets
        - name: POSTGRESQL_USER
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_USER
              name: exoplanets
        image: registry.ocp4.example.com:8443/rhel9/postgresql-13
        imagePullPolicy: IfNotPresent
        name: postgresql-13
        ports:
        - containerPort: 5432
          protocol: TCP
        resources:
          requests:
            cpu: 25m
            memory: 50Mi
          limits:
            cpu: 100m
            memory: 250Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---
apiVersion: v1
data:
  POSTGRESQL_ADMIN_PASSWORD: cG9zdGdyZXM=
  POSTGRESQL_DATABASE: ZGF0YWJhc2U=
  POSTGRESQL_MAX_CONNECTIONS: MTAwMA==
  POSTGRESQL_PASSWORD: cGFzc3dvcmQ=
  POSTGRESQL_USER: dXNlcg==
kind: Secret
metadata:
  name: exoplanets
type: Opaque

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: exoplanets-db
  name: exoplanets-db
spec:
  ports:
  - port: 5432
    protocol: TCP
    targetPort: 5432
  selector:
    app: exoplanets-db
status:
  loadBalancer: {}

---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
  labels:
    app: exoplanets-app
  name: exoplanets-app
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: exoplanets-app
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: exoplanets-app
    spec:
      containers:
      - env:
        - name: DB_PORT
          value: '5432'
        - name: DB_HOST
          value: exoplanets-db
        - name: DB_NAME
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_DATABASE
              name: exoplanets
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_PASSWORD
              name: exoplanets
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              key: POSTGRESQL_USER
              name: exoplanets
        image: registry.ocp4.example.com:8443/redhattraining/exoplanets:v1.0
        imagePullPolicy: IfNotPresent
        name: exoplanets
        ports:
        - containerPort: 5432
          protocol: TCP
        resources:
          requests:
            cpu: 25m
            memory: 50Mi
          limits:
            cpu:  100m
            memory: 250Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: exoplanets-app
  name: exoplanets-app
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: exoplanets-app

---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  labels:
    app: exoplanets-app
  name: exoplanets
spec:
  host: exoplanets-monitor.apps.ocp4.example.com
  port:
    targetPort: 8080
  to:
    kind: ''
    name: exoplanets-app