{{- if and .Values.devEnv.enabled .Values.devEnv.aiAutomation.enabled }} apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "sebastian.fullname" . }}-ai-api namespace: {{ .Values.devEnv.namespace }} labels: {{- include "sebastian.labels" . | nindent 4 }} app.kubernetes.io/component: ai-automation-api spec: replicas: 1 selector: matchLabels: {{- include "sebastian.selectorLabels" . | nindent 6 }} app.kubernetes.io/component: ai-automation-api template: metadata: labels: {{- include "sebastian.selectorLabels" . | nindent 8 }} app.kubernetes.io/component: ai-automation-api alga.dev/environment: "true" spec: {{- if .Values.devEnv.aiAutomation.api.image.is_private }} imagePullSecrets: - name: "{{ .Values.devEnv.aiAutomation.api.image.credentials }}" {{- end }} securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 containers: - name: ai-automation-api image: "{{ .Values.devEnv.aiAutomation.api.image.repository }}:{{ .Values.devEnv.aiAutomation.api.image.tag }}" imagePullPolicy: {{ .Values.devEnv.aiAutomation.api.image.pullPolicy }} env: - name: NODE_ENV value: "development" - name: PORT value: "4000" - name: PUPPETEER_SKIP_CHROMIUM_DOWNLOAD value: "true" - name: PUPPETEER_EXECUTABLE_PATH value: "/usr/bin/chromium" - name: CHROME_PATH value: "/usr/bin/chromium" - name: DEBIAN_FRONTEND value: "noninteractive" - name: DISPLAY value: ":99" - name: NODE_OPTIONS value: "--max-http-header-size=26214400" - name: CHOKIDAR_USEPOLLING value: "true" - name: CHOKIDAR_INTERVAL value: "300" # Environment markers - name: ALGA_DEV_ENV value: "true" - name: ALGA_BRANCH_SANITIZED value: "{{ .Values.devEnv.sanitizedBranch }}" # Target app URL for automation - name: TARGET_APP_URL value: "http://app:3000" # VNC support - name: VNC_ENABLED value: "true" # Xvfb environment variables for better compatibility - name: XVFB_WHD value: "1280x1024x16" - name: XVFB_COLORDEPTH value: "16" - name: XVFB_ARGS value: "-ac -nolisten tcp -dpi 96 +extension RANDR" ports: - name: http containerPort: 4000 protocol: TCP - name: vnc containerPort: 5900 protocol: TCP resources: limits: memory: "4Gi" requests: memory: "4Gi" volumeMounts: - name: shm mountPath: /dev/shm volumes: - name: shm emptyDir: medium: Memory sizeLimit: 256Mi {{- with .Values.devEnv.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.devEnv.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} {{- end }}