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
        - ap-northeast-1
        - -duckDBSwitchAllEnabled=true
        - -duckDBSwitchTime
        - "1748736001"
        - -duckDBGrayTenantIds
        - "1372813089190491281,1372813089190911285,1372813089191061283,1372813089191271282,1372813089191601283,1372813089194211283,1372813089195441286,1372813089199011282,1372813089208221493,1372813089208251343,1372813089208341734,1372813089208521826,1372813089208611456,1372813089208851780,1372813089209001464,1372813089209031895,1372813089209062317,1372813089209212394,1372813089209212842,1372813089209213383,1372813089209214792,1372813089209214865,1372813089209215669,1372813089209216306,1372813089209216864,1372813089209218394,1372813089209219376,1372813089209224877,1372813089209225520,1372813089209228505,1372813089209228506,1372813089209230886,1372813089209231464,1372813089209238544,1372813089209240001,1372813089209241995,1372813089209247520,1372813089209247532,1372813089209248707,1372813089209249748,1372813089209252089,1372813089209254049,1372813089209255759,1372813089209257781,1372813089209260701,1372813089209265146,1372813089209267920"
        command:
        - /diagnosis-query
        env:
          - name: TOPSQL_OLD_CLUSTERS
            value: "1372813089208521826/1379661944646414638"
          - 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: "6"
            memory: 52Gi
          requests:
            cpu: "6"
            memory: 52Gi
        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
  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
