apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: diagnosis-query
  name: diagnosis-query
  namespace: observability
spec:
  replicas: 2
  selector:
    matchLabels:
      app: diagnosis-query
  template:
    metadata:
      labels:
        app: diagnosis-query
    spec:
      containers:
      - args:
        - -vendor
        - aws
        - -region
        - sa-east-1
        - -duckDBSwitchAllEnabled=true
        - -duckDBSwitchTime
        - "1748736001"
        - -duckDBGrayTenantIds
        - "1372813089209259924"
        command:
          - /diagnosis-query
        env:
          - name: POD_MEMORY_LIMITS_MB
            valueFrom:
              resourceFieldRef:
                containerName: diagnosis-query
                resource: limits.memory
                divisor: 1Mi
          - name: DUCKDB_MEMORY_PERCENTAGE
            value: "60"
        image: 557537366020.dkr.ecr.us-west-2.amazonaws.com/diagnosis-query:v62
        imagePullPolicy: IfNotPresent
        name: diagnosis-query
        ports:
        - containerPort: 8081
          protocol: TCP
        resources:
          limits:
            cpu: "2"
            memory: 4Gi
          requests:
            cpu: "2"
            memory: 4Gi
        volumeMounts:
        - mountPath: /cache
          name: diagnosis-query-cache
      serviceAccount: regional-server-controller-manager
      serviceAccountName: regional-server-controller-manager
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      labels:
        app: diagnosis-query
      name: diagnosis-query-cache
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 200Gi
      storageClassName: gp2
      volumeMode: Filesystem
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: diagnosis-query
  name: diagnosis-query
  namespace: observability
spec:
  selector:
    app: diagnosis-query
  ports:
  - protocol: TCP
    port: 8081
    targetPort: 8081
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
  name: diagnosis-query
  namespace: observability
spec:
  ingressClassName: nginx-read
  rules:
  - http:
      paths:
      - backend:
          service:
            name: diagnosis-query
            port:
              number: 8081
        path: /internal/diagnosis(/|$)(.*)
        pathType: ImplementationSpecific

---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    release: self-monitoring
  name: diagnosis-query-monitor
  namespace: self-monitoring
spec:
  endpoints:
    - path: /metrics
      targetPort: 8081
  namespaceSelector:
    matchNames:
      - observability
  selector:
    matchLabels:
      app: diagnosis-query
