Skip to content

Latest commit

 

History

History
154 lines (141 loc) · 4.11 KB

README.md

File metadata and controls

154 lines (141 loc) · 4.11 KB

To deploy thanos sidecar along with Prometheus using official helm chart - just run the next command, putting the values to a file values.yaml and changing --namespace value beforehand:

helm upgrade --version="8.6.0" --install --namespace="my-lovely-namespace" --values values.yaml  prometheus-thanos-sidecar stable/prometheus

Take a note that you need to replace two placeholders in the values: BUCKET_REPLACE_ME and CLUSTER_NAME. Also adjust all the other values according to your infrastructure requirements.

An example of the values.yaml file:

rbac:
  create: true

alertmanager:
  enabled: false

pushgateway:
  enabled: false

nodeExporter:
  enabled: false

kubeStateMetrics:
  enabled: false

initChownData:
  resources:
    limits:
      memory: 16Mi
      cpu: 50m
    requests:
      memory: 16Mi
      cpu: 50m

server:
  extraArgs:
    log.level: debug
    storage.tsdb.min-block-duration: 2h  # Don't change this, see docs/components/sidecar.md
    storage.tsdb.max-block-duration: 2h  # Don't change this, see docs/components/sidecar.md
  retention: 4h
  service:
    annotations:
       prometheus.io/scrape: "true"
       prometheus.io/port: "9090"
  statefulSet:
    enabled: true
  podAnnotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "10902"
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - prometheus
          - key: component
            operator: In
            values:
            - server
        topologyKey: "kubernetes.io/hostname"
  sidecarContainers:
  - name: thanos-sidecar
    # Always use explicit image tags (release or main-<date>-sha) instead of ambigous `latest` or `main`.
    # Check https://quay.io/repository/thanos/thanos?tab=tags to get latest tag.
    image: quay.io/thanos/thanos:main-2021-03-01-1bbad3b5
    resources:
      requests:
        memory: "4Gi"
        cpu: "2"
      limits:
        memory: "4Gi"
        cpu: "2"
    env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /etc/secret/sa
    args:
    - "sidecar"
    - "--log.level=debug"
    - "--tsdb.path=/data/"
    - "--prometheus.url=http://127.0.0.1:9090"
    - "--objstore.config={type: GCS, config: {bucket: BUCKET_REPLACE_ME}}"
    - "--reloader.config-file=/etc/prometheus-config/prometheus.yml"
    - "--reloader.config-envsubst-file=/etc/prometheus-shared/prometheus.yml"
    - "--reloader.rule-dir=/etc/prometheus-config/rules"
    ports:
    - name: sidecar-http
      containerPort: 10902
    - name: grpc
      containerPort: 10901
    - name: cluster
      containerPort: 10900
    volumeMounts:
    - name: storage-volume
      mountPath: /data
    - name: thanos-storage-secret
      mountPath: /etc/secret
    - name: config-volume
      mountPath: /etc/prometheus-config
      readOnly: false
    - name: prometheus-config-shared
      mountPath: /etc/prometheus-shared/
      readOnly: false
  configPath: /etc/prometheus-shared/prometheus.yml
  replicaCount: 2
  persistentVolume:
    size: 100Gi
  extraVolumes:
  - name: prometheus-config-shared
    emptyDir: {}
  extraVolumeMounts:
  - name: prometheus-config-shared
    mountPath: /etc/prometheus-shared/
  resources:
    limits:
      cpu: 4
      memory: 20Gi
    requests:
      cpu: 4
      memory: 20Gi
  global:
    scrape_interval: 5s
    scrape_timeout: 4s
    external_labels:
      prometheus_group: CLUSTER_NAME
      prometheus_replica: '$(HOSTNAME)'
    evaluation_interval: 5s
  extraSecretMounts:
  - name: thanos-storage-secret
    mountPath: /etc/secret/
    subPath: sa
    readOnly: false
    secretName: thanos-storage-secret

configmapReload:
  image:
    repository: gcr.io/google-containers/pause-amd64 # This image changed to just pause since there's no option to disable configmapReload container in chart, but thanos-sidecar overtakes this functionality. So basically we don't need another reloader
    tag: 3.1
  resources:
    limits:
      cpu: 20m
      memory: 20Mi
    requests:
      cpu: 20m
      memory: 20Mi


serverFiles:
  alerts: {}
  rules: {}