Snuba init: job failed при деплое sentry в k8s кластер, падает python скрипт
Доброго времени суток! Столкнулся с проблемой, что при деплое sentry в k8s падает одна из джоб, из-за чего весь деплой фейлится.
helm install sentry ./sentry-20.0.0.tgz --namespace sentry -f sentry-values.yaml
Название джобы - sentry-snuba-db-init. На этапе где она падает она должна предсоздать топики в кафке, типа provisioning.
Вот параметры с которыми поднимаются контейнеры джобы:
containers:
- name: snuba-init
image: getsentry/snuba:23.6.1
command:
- snuba
- bootstrap
- '--no-migrate'
- '--force'
envFrom:
- secretRef:
name: sentry-snuba-env
env:
- name: LOG_LEVEL
value: debug
- name: SNUBA_SETTINGS
value: /etc/snuba/settings.py
- name: DEFAULT_BROKERS
value: 10.43.132.22:9092
- name: CLICKHOUSE_PASSWORD
valueFrom:
secretKeyRef:
name: sentry-clickhouse
key: admin-password
Но прикол в том, что если я поднимаю свою поду с образа getsentry/snuba:23.6.1 и запускаю команду
LOG_LEVEL=debug DEFAULT_BROKERS=10.43.132.22:9092 snuba bootstrap --no-migrate --force
То команда отрабатывает без ошибок и создаёт топики в кафке.
При деплое же, джоба фейлится с ошибкой
2024-03-24 07:02:50,370 Initializing Snuba...
2024-03-24 07:02:52,932 Snuba initialization took 2.560879148542881s
2024-03-24 07:02:52,933 Using Kafka with ()
2024-03-24 07:02:52,933 Attempting to connect to Kafka (attempt 0)...
2024-03-24 07:02:52,943 Connected to Kafka on attempt 0
2024-03-24 07:02:52,943 Adding topic events to creation list
Traceback (most recent call last):
File "/usr/local/bin/snuba", line 33, in <module>
sys.exit(load_entry_point('snuba', 'console_scripts', 'snuba')())
File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/usr/src/snuba/snuba/cli/bootstrap.py", line 87, in bootstrap
create_topics(client, [t for t in Topic])
File "/usr/src/snuba/snuba/utils/manage_topics.py", line 21, in create_topics
num_partitions=topic_spec.partitions_number,
File "/usr/src/snuba/snuba/datasets/table_storage.py", line 62, in partitions_number
return settings.TOPIC_PARTITION_COUNTS.get(self.__topic.value, 1)
AttributeError: 'str' object has no attribute 'get'
То есть в переменной settings.TOPIC_PARTITION_COUNTS оказывается строка вместо словаря, насколько помню по коду там что-то вроде ИМЯ ТОПИКА - КОЛИЧЕСТВО ПАРТИЦИЙ.
Но почему команда падает только при деплое из helmа?
Я думаю что я делаю что-то не так, потому что у коллеги получалось задеплоить эту же версию сентри.
Кафку я пробовал деплоить как отдельно, так и ту что sentry тянет по зависимостям. Одинаковый результат.
Я пробовал обеспечить этот provisioning через сам деплой кафки, отключив эту snuba init job. Но тут опять прикол
snubaInit:
# As snubaInit doesn't support configuring partition and replication factor, you can disable snubaInit's kafka topic creation by setting `kafka.enabled` to `false`,
# and create the topics using `kafka.provisioning.topics` with the desired partition and replication factor.
# Note that when you set `kafka.enabled` to `false`, snuba component might fail to start if newly added topics are not created by `kafka.provisioning`.
kafka:
enabled: false
Ясно написано, что выставление этого параметра в false должно отключить создание топиков, но этого не происходит. snuba init всё равно пытается их создать и падает…
Что думаете об этом? Приветствую любые идеи как это можно ещё расковырять.. Я думал может какой-то питоновский инструмент засунуть, со всякими стек дампами и т.д., чтоб посмотреть где по функциям что не так идёт..