# k8s/backend.yaml # ============================================ # Chat Switchboard - Backend Deployment # ============================================ apiVersion: apps/v1 kind: Deployment metadata: name: switchboard-be${DEPLOY_SUFFIX} namespace: ${NAMESPACE} labels: app: switchboard component: backend env: ${ENVIRONMENT} spec: replicas: ${BE_REPLICAS} selector: matchLabels: app: switchboard component: backend env: ${ENVIRONMENT} template: metadata: labels: app: switchboard component: backend env: ${ENVIRONMENT} spec: containers: - name: backend image: ${BE_IMAGE}:${IMAGE_TAG} imagePullPolicy: Always ports: - containerPort: 8080 name: http env: - name: ENVIRONMENT value: "${ENVIRONMENT}" - name: PORT value: "8080" - name: POSTGRES_HOST value: "${POSTGRES_HOST}" - name: POSTGRES_PORT value: "${POSTGRES_PORT}" - name: POSTGRES_DB value: "${DB_NAME}" - name: POSTGRES_USER valueFrom: secretKeyRef: name: switchboard-db-credentials key: POSTGRES_USER - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: switchboard-db-credentials key: POSTGRES_PASSWORD - name: DATABASE_URL value: "postgres://$(POSTGRES_USER):$(POSTGRES_PASSWORD)@${POSTGRES_HOST}:${POSTGRES_PORT}/${DB_NAME}?sslmode=disable" resources: requests: memory: "${BE_MEMORY_REQUEST}" cpu: "${BE_CPU_REQUEST}" limits: memory: "${BE_MEMORY_LIMIT}" cpu: "${BE_CPU_LIMIT}" readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 3 livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 30 timeoutSeconds: 5 failureThreshold: 3 --- apiVersion: v1 kind: Service metadata: name: switchboard-be${DEPLOY_SUFFIX} namespace: ${NAMESPACE} labels: app: switchboard component: backend env: ${ENVIRONMENT} spec: selector: app: switchboard component: backend env: ${ENVIRONMENT} ports: - protocol: TCP port: 8080 targetPort: 8080 name: http