---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app.kubernetes.io/component: database-write-hashring
    app.kubernetes.io/instance: thanos-receive
    app.kubernetes.io/name: thanos-receive
    app.kubernetes.io/version: v0.25.1
  name: thanos-receive
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/component: database-write-hashring
      app.kubernetes.io/instance: thanos-receive
      app.kubernetes.io/name: thanos-receive
  serviceName: thanos-receive
  template:
    metadata:
      labels:
        app.kubernetes.io/component: database-write-hashring
        app.kubernetes.io/instance: thanos-receive
        app.kubernetes.io/name: thanos-receive
        app.kubernetes.io/version: v0.25.1
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: app.kubernetes.io/name
                      operator: In
                      values:
                        - thanos-receive
                    - key: app.kubernetes.io/instance
                      operator: In
                      values:
                        - thanos-receive
                namespaces:
                  - thanos
                topologyKey: kubernetes.io/hostname
              weight: 100
            - podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: app.kubernetes.io/name
                      operator: In
                      values:
                        - thanos-receive
                    - key: app.kubernetes.io/instance
                      operator: In
                      values:
                        - thanos-receive
                namespaces:
                  - thanos
                topologyKey: topology.kubernetes.io/zone
              weight: 100
      containers:
        - args:
            - receive
            - --log.level=info
            - --log.format=logfmt
            - --grpc-address=0.0.0.0:10901
            - --http-address=0.0.0.0:10902
            - --remote-write.address=0.0.0.0:19291
            - --receive.replication-factor=1
            - --tsdb.path=/var/thanos/receive
            - --tsdb.retention=3d
            - --label=replica="$(NAME)"
            - --label=receive="true"
            - --receive.local-endpoint=$(NAME).thanos-receive.$(NAMESPACE).svc.cluster.local:10901
            - --receive.hashrings-file=/var/lib/thanos-receive/hashrings.json
            - |-
              --tracing.config="config":
                "sampler_param": 2
                "sampler_type": "ratelimiting"
                "service_name": "thanos-receive"
              "type": "JAEGER"
          env:
            - name: NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: HOST_IP_ADDRESS
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
          image: quay.io/thanos/thanos:v0.25.1
          livenessProbe:
            failureThreshold: 8
            httpGet:
              path: /-/healthy
              port: 10902
              scheme: HTTP
            periodSeconds: 30
          name: thanos-receive
          ports:
            - containerPort: 10901
              name: grpc
            - containerPort: 10902
              name: http
            - containerPort: 19291
              name: remote-write
          readinessProbe:
            failureThreshold: 20
            httpGet:
              path: /-/ready
              port: 10902
              scheme: HTTP
            periodSeconds: 5
          #        resources:
          #          requests:
          #            cpu: 100
          #            memory: 128Mi
          terminationMessagePolicy: FallbackToLogsOnError
          volumeMounts:
            - mountPath: /var/thanos/receive
              name: data
              readOnly: false
            - mountPath: /var/lib/thanos-receive
              name: hashring-config
      nodeSelector:
        kubernetes.io/os: linux
      securityContext:
        fsGroup: 65534
        runAsUser: 65534
      serviceAccountName: thanos-receive
      terminationGracePeriodSeconds: 900
      volumes:
        - configMap:
            name: hashring
          name: hashring-config
        - emptyDir: {}
          name: data