Конфигурация Thanos S3
Я изо всех сил пытаюсь осмыслить использование ведра S3 для таноса.
Из конфигурации видно, что мы должны предоставить доступ и секретные ключи для корзины S3, но они пишутся на виду, а код хранится в git, поэтому любой может получить доступ к корзине.
Есть ли способ предоставить их как секреты кубернета? я пытаюсь запустить прометей-оператор на EKS
Благодаря,
2 ответа
Предполагая, что вы хотите явно передать конфигурацию корзины с данными аутентификации, вы можете использовать два параметра командной строки для thanos, чтобы добиться этого:
--objstore.config-file=FILEPATH
--objstore.config=CONFIG_CONTENTS
С помощью 1. вы можете просто смонтировать секрет и указать танос в этом месте. С помощью 2 вы можете использовать переменную env и загрузить секрет в эту переменную, например:
- args:
- sidecar
(...)
- --objstore.config=$(OBJSTORE_CONFIG)
env:
- name: OBJSTORE_CONFIG
valueFrom:
secretKeyRef:
key: thanos-bucket.yaml
name: thanos-service-account
Есть и другие способы использования идентификационной информации, специфичные для облака. Я не знаком с предложениями AWS, поэтому отсылаю вас к документации thanos
Для EKS>= 1.13 вы можете использовать роль IAM для учетной записи службы . Суть его в том, чтобы сначала создать роль IAM с доступом к корзине S3 и обновить политику доверия, чтобы она доверяла провайдеру удостоверений OIDC кластера EKS. Затем вы создаете и аннотируете учетную запись службы в EKS с помощью ARN роли IAM (
eks.amazonaws.com/role-arn: <IAM_ROLE_ARN>
) и назначьте эту учетную запись службы своему модулю. Отныне вызовы API к AWS из SDK внутри модуля (SDK должен поддерживать
sts:AssumeRoleWithWebIdentity
в цепочке учетных данных) будет выполняться с предполагаемой ролью IAM.
Для Prometheus и Thanos вам нужно будет аннотировать учетные записи служб, используемые модулями реплик Prometheus (для контейнера Sidecar Thanos для использования роли IAM) и модулями шлюза хранилища Thanos.
Более подробную информацию можно найти в официальных документах AWS .