# k8s/backend.yaml # ============================================ # Chat Switchboard - Backend Deployment # ============================================ # Secrets: # switchboard-db-credentials - POSTGRES_USER, POSTGRES_PASSWORD # switchboard-admin - username, password, email (optional) # # Admin bootstrap: on every pod start, if SWITCHBOARD_ADMIN_* env vars # are set, the backend upserts an admin user. Change the secret and # restart the pod to reset the admin password. # ============================================ 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: BASE_PATH value: "${BASE_PATH}" - 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" - name: SWITCHBOARD_ADMIN_USERNAME valueFrom: secretKeyRef: name: switchboard-admin key: username optional: true - name: SWITCHBOARD_ADMIN_PASSWORD valueFrom: secretKeyRef: name: switchboard-admin key: password optional: true - name: SWITCHBOARD_ADMIN_EMAIL valueFrom: secretKeyRef: name: switchboard-admin key: email optional: true resources: requests: memory: "${BE_MEMORY_REQUEST}" cpu: "${BE_CPU_REQUEST}" limits: memory: "${BE_MEMORY_LIMIT}" cpu: "${BE_CPU_LIMIT}" readinessProbe: httpGet: path: ${BASE_PATH}/health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 3 livenessProbe: httpGet: path: ${BASE_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