apiVersion: apps/v1 kind: Deployment metadata: name: cqa-flask-app labels: app: cqa-flask-app spec: replicas: 3 selector: matchLabels: app: cqa-flask-app template: metadata: labels: app: cqa-flask-app spec: containers: - name: flask-app image: ghcr.io/cqa-test-app/flask-app:latest ports: - containerPort: 10345 resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "512Mi" cpu: "500m" env: - name: CQA_TEST_APP_ENV value: "prod" - name: JIRA_URL valueFrom: secretKeyRef: name: jira-credentials key: url - name: JIRA_PERSONAL_TOKEN valueFrom: secretKeyRef: name: jira-credentials key: token --- apiVersion: apps/v1 kind: Deployment metadata: name: cqa-mcp-server labels: app: cqa-mcp-server spec: replicas: 2 selector: matchLabels: app: cqa-mcp-server template: metadata: labels: app: cqa-mcp-server spec: containers: - name: mcp-server image: ghcr.io/cqa-test-app/mcp-server:latest ports: - containerPort: 8001 resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "256Mi" cpu: "200m" env: - name: JIRA_URL valueFrom: secretKeyRef: name: jira-credentials key: url --- apiVersion: v1 kind: Service metadata: name: cqa-flask-service spec: selector: app: cqa-flask-app ports: - port: 80 targetPort: 10345 type: LoadBalancer --- apiVersion: v1 kind: Service metadata: name: cqa-mcp-service spec: selector: app: cqa-mcp-server ports: - port: 8001 targetPort: 8001 type: ClusterIP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cqa-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: cqa-test-app.example.com http: paths: - path: / pathType: Prefix backend: service: name: cqa-flask-service port: number: 80 - path: /mcp pathType: Prefix backend: service: name: cqa-mcp-service port: number: 8001