# This file contains all the components for Thanos that aren't configured by kube-prometheus --- apiVersion: apps/v1 kind: Deployment metadata: name: thanos-querier spec: selector: matchLabels: app: thanos-querier template: metadata: labels: app: thanos-querier annotations: prometheus.io/scrape: "true" prometheus.io/port: "9090" spec: containers: - name: thanos-querier image: quay.io/thanos/thanos:latest args: - query - --http-address - 0.0.0.0:9090 - --endpoint - dnssrv+_grpc._tcp.prometheus-k8s-headless.monitoring.svc - --endpoint - dnssrv+_grpc._tcp.thanos-store.monitoring.svc - --query.replica-label - prometheus_replica resources: limits: memory: 512Mi cpu: "500m" ports: - containerPort: 9090 --- apiVersion: v1 kind: Service metadata: name: thanos-querier spec: selector: app: thanos-querier ports: - port: 9090 targetPort: 9090 --- apiVersion: v1 kind: Service metadata: name: prometheus-k8s-headless spec: selector: app.kubernetes.io/component: prometheus app.kubernetes.io/instance: k8s app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus clusterIP: None ports: - name: grpc port: 10901 --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: thanos-store name: thanos-store spec: replicas: 1 selector: matchLabels: app: thanos-store serviceName: thanos-store template: metadata: labels: app: thanos-store annotations: prometheus.io/scrape: "true" prometheus.io/port: "10902" spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - thanos-store - key: app.kubernetes.io/instance operator: In values: - thanos-store namespaces: - monitoring topologyKey: kubernetes.io/hostname weight: 100 containers: - args: - store - --log.level=info - --log.format=logfmt - --data-dir=/var/thanos/store - --grpc-address=0.0.0.0:10901 - --http-address=0.0.0.0:10902 - --objstore.config=$(OBJSTORE_CONFIG) - --ignore-deletion-marks-delay=24h env: - name: OBJSTORE_CONFIG valueFrom: secretKeyRef: key: thanos.yaml name: thanos-objstore - name: HOST_IP_ADDRESS valueFrom: fieldRef: fieldPath: status.hostIP image: quay.io/thanos/thanos:latest livenessProbe: failureThreshold: 8 httpGet: path: /-/healthy port: 10902 scheme: HTTP periodSeconds: 30 timeoutSeconds: 1 name: thanos-store ports: - containerPort: 10901 name: grpc - containerPort: 10902 name: http readinessProbe: failureThreshold: 20 httpGet: path: /-/ready port: 10902 scheme: HTTP periodSeconds: 5 resources: limits: memory: 512Mi cpu: "500m" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 65532 runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/thanos/store name: data readOnly: false securityContext: fsGroup: 65534 runAsGroup: 65532 runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault terminationGracePeriodSeconds: 120 volumes: [] volumeClaimTemplates: - metadata: labels: app: thanos-store name: data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: thanos-store spec: selector: app: thanos-store ports: - name: grpc port: 10901 - name: http port: 10902 --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: thanos-compact name: thanos-compact namespace: thanos spec: replicas: 1 selector: matchLabels: app: thanos-compact serviceName: thanos-compact template: metadata: labels: app: thanos-compact annotations: prometheus.io/scrape: "true" prometheus.io/port: "10902" spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - thanos-compact - key: app.kubernetes.io/instance operator: In values: - thanos-compact namespaces: - thanos topologyKey: kubernetes.io/hostname weight: 100 containers: - args: - compact - --wait - --log.level=info - --log.format=logfmt - --objstore.config=$(OBJSTORE_CONFIG) - --data-dir=/var/thanos/compact - --retention.resolution-1h=365d env: - name: OBJSTORE_CONFIG valueFrom: secretKeyRef: key: thanos.yaml name: thanos-objstore - name: HOST_IP_ADDRESS valueFrom: fieldRef: fieldPath: status.hostIP image: quay.io/thanos/thanos:v0.30.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 4 httpGet: path: /-/healthy port: 10902 scheme: HTTP periodSeconds: 30 name: thanos-compact ports: - containerPort: 10902 name: http readinessProbe: failureThreshold: 20 httpGet: path: /-/ready port: 10902 scheme: HTTP periodSeconds: 5 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 200m memory: 100Mi terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/thanos/compact name: data readOnly: false nodeSelector: kubernetes.io/os: linux securityContext: fsGroup: 65534 runAsGroup: 65532 runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault terminationGracePeriodSeconds: 120 volumes: [] volumeClaimTemplates: - metadata: name: data spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi