Конфигурация Thanos S3

#prometheus #prometheus-operator #thanos

#prometheus #prometheus-оператор #танос

Вопрос:

Я изо всех сил пытаюсь разобраться в использовании S3 bucket для thanos.

Из конфигурации следует, что мы должны предоставить доступ и секретные ключи для корзины S3, но они записываются на виду, а код хранится в git, поэтому любой может получить доступ к корзине.

Есть ли возможность предоставить их в качестве секретов kubernetes? я пытаюсь запустить prometheus-operator на EKS

Спасибо,

Ответ №1:

Предполагая, что вы хотите явно передать конфигурацию корзины с данными аутентификации, вы можете использовать два параметра командной строки для thanos для достижения этой цели:

  1. --objstore.config-file=FILEPATH
  2. --objstore.config=CONFIG_CONTENTS

С помощью 1. вы можете просто смонтировать secret и указать thanos на это местоположение С помощью 2. вы можете использовать переменную env и загружать secret в эту переменную, например:

       - args:
        - sidecar
(...)
        - --objstore.config=$(OBJSTORE_CONFIG)                                                                                                                                                                                                                                   
        env:
        - name: OBJSTORE_CONFIG
          valueFrom:
            secretKeyRef:
              key: thanos-bucket.yaml
              name: thanos-service-account
  

Есть несколько других способов использования идентификационной информации, которые зависят от облака. Я не знаком с предложениями AWS, поэтому я отсылаю вас к документам thanos

Ответ №2:

Для EKS> = 1.13 вы можете использовать роль IAM для учетной записи службы. Суть в том, чтобы сначала создать роль IAM с доступом к корзине S3 и обновить политику доверия, чтобы доверять поставщику удостоверений OIDC кластера EKS sts:AssumeRoleWithWebIdentity . Затем вы создаете и комментируете учетную запись службы в EKS с помощью ARN роли IAM ( eks.amazonaws.com/role-arn: <IAM_ROLE_ARN> ) и назначаете эту учетную запись службы своему pod. Отныне вызовы API в AWS из SDK внутри модуля (SDK должен поддерживаться sts:AssumeRoleWithWebIdentity в цепочке учетных данных) будут выполняться с предполагаемой ролью IAM.

Для Prometheus и Thanos вам нужно будет аннотировать учетные записи служб, используемые модулями-репликами Prometheus (для контейнера Thanos sidecar для использования роли IAM) и модулями шлюза хранилища Thanos.

Более подробную информацию можно найти в официальных документах AWS.