apiVersion: apps/v1 kind: Deployment metadata: name: customercore-api namespace: customercore labels: app: customercore-api spec: replicas: 2 selector: matchLabels: app: customercore-api template: metadata: labels: app: customercore-api spec: containers: - name: api image: customercore-api:latest imagePullPolicy: Never ports: - containerPort: 8080 env: - name: PORT value: "8080" - name: APP_ENV value: "production" - name: OPENROUTER_API_KEY valueFrom: secretKeyRef: name: customercore-secrets key: OPENROUTER_API_KEY - name: LITELLM_MASTER_KEY valueFrom: secretKeyRef: name: customercore-secrets key: LITELLM_MASTER_KEY - name: SUPABASE_URL valueFrom: secretKeyRef: name: customercore-secrets key: SUPABASE_URL - name: SUPABASE_ANON_KEY valueFrom: secretKeyRef: name: customercore-secrets key: SUPABASE_ANON_KEY - name: SUPABASE_SERVICE_ROLE_KEY valueFrom: secretKeyRef: name: customercore-secrets key: SUPABASE_SERVICE_ROLE_KEY - name: SUPABASE_DB_URL valueFrom: secretKeyRef: name: customercore-secrets key: SUPABASE_DB_URL - name: UPSTASH_REDIS_URL valueFrom: secretKeyRef: name: customercore-secrets key: UPSTASH_REDIS_URL - name: LANGFUSE_PUBLIC_KEY valueFrom: secretKeyRef: name: customercore-secrets key: LANGFUSE_PUBLIC_KEY - name: LANGFUSE_SECRET_KEY valueFrom: secretKeyRef: name: customercore-secrets key: LANGFUSE_SECRET_KEY resources: requests: cpu: "250m" memory: "512Mi" limits: cpu: "500m" memory: "1Gi" livenessProbe: httpGet: path: /api/v1/health port: 8080 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 readinessProbe: httpGet: path: /api/v1/health port: 8080 initialDelaySeconds: 15 periodSeconds: 10 timeoutSeconds: 5 --- apiVersion: v1 kind: Service metadata: name: customercore-api-svc namespace: customercore spec: type: ClusterIP selector: app: customercore-api ports: - name: http port: 80 targetPort: 8080