apiVersion: apps/v1 kind: Deployment metadata: name: trade-api namespace: trade-r001-canary spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: trade-api template: metadata: labels: app.kubernetes.io/name: trade-api spec: imagePullSecrets: - name: gitea-registry volumes: - name: trade-api-wrapper configMap: name: trade-api-wrapper - name: trade-api-upstream configMap: name: trade-api-upstream containers: - name: api image: gitea.mpabi.pl/trade/trade-api:k3s-20260111095435 imagePullPolicy: IfNotPresent command: - node - /override/wrapper.mjs ports: - name: http containerPort: 8787 volumeMounts: - name: trade-api-wrapper mountPath: /override/wrapper.mjs subPath: wrapper.mjs readOnly: true - name: trade-api-upstream mountPath: /app/services/api/server.mjs subPath: server.mjs readOnly: true env: - name: PORT value: "8787" - name: UPSTREAM_PORT value: "8788" - name: UPSTREAM_ENTRY value: /app/services/api/server.mjs - name: UPSTREAM_HOST value: 127.0.0.1 - name: APP_VERSION value: canary-r001 - name: HASURA_GRAPHQL_URL value: http://hasura:8080/v1/graphql - name: HASURA_ADMIN_SECRET valueFrom: secretKeyRef: name: trade-hasura key: HASURA_GRAPHQL_ADMIN_SECRET - name: API_ADMIN_SECRET valueFrom: secretKeyRef: name: trade-api key: API_ADMIN_SECRET - name: CORS_ORIGIN value: "*" resources: requests: cpu: 100m memory: 256Mi limits: cpu: "1" memory: 1Gi readinessProbe: httpGet: path: /healthz port: http initialDelaySeconds: 2 periodSeconds: 5 livenessProbe: httpGet: path: /healthz port: http initialDelaySeconds: 10 periodSeconds: 10