RabbitMQ: снят loopback-only для администратора
Celery не поднимался: worker падал в CrashLoopBackOff на amqp.exceptions.AccessRefused (403) при подключении к брокеру. Диагностика уводила в сторону — 403 читается как несовпадение пароля, но пароль был верный: хеши значения в Vault, в файле, смонтированном в под брокера, и в собранном BROKER_URL совпадали, а rabbitmqctl authenticate_user с ним проходил. Настоящая причина нашлась в логе брокера: PLAIN login refused: user 'rabbit' can only connect via localhost Пользователю разрешён вход только с localhost, поэтому отбивалось любое подключение из кластера — и по той же причине в management UI нельзя было войти снаружи. Лечится так же, как в d8-ugmk-prod: флагом auth.enableLoopbackUser и дублирующим advancedConfiguration. Дубль не избыточен — флаг лишь пишет в rabbitmq.conf строку "loopback_users.<user> = false", которую брокер не применяет: в рантайме loopback_users всё равно оставался [<<"rabbit">>]. Значение задаёт именно advanced.config.
This commit is contained in:
parent
c2a9bae0db
commit
237dcb9b28
@ -87,6 +87,14 @@ spec:
|
||||
# auth/kubernetes создаётся там же.
|
||||
auth:
|
||||
securePassword: true
|
||||
# Без этого администратор пускается только с localhost, и любое
|
||||
# подключение из кластера отбивается на аутентификации:
|
||||
# PLAIN login refused: user 'rabbit' can only connect via localhost
|
||||
# Диагностика сбивает с толку: клиент видит 403 ACCESS_REFUSED, будто
|
||||
# не сошёлся пароль, хотя пароль верный — rabbitmqctl authenticate_user
|
||||
# с тем же значением проходит. Так у celery не поднимался worker, и по
|
||||
# той же причине в management UI нельзя было войти снаружи.
|
||||
enableLoopbackUser: false
|
||||
existingPasswordSecret: ""
|
||||
vault:
|
||||
enabled: true
|
||||
@ -95,3 +103,15 @@ spec:
|
||||
secretPath: secrets/data/rabbitmq/auth
|
||||
usernameKey: username
|
||||
passwordKey: password
|
||||
# Дублирует enableLoopbackUser: false намеренно, тем же способом, что и
|
||||
# d8-ugmk-prod. Одного флага мало: он лишь заменяет в rabbitmq.conf строку
|
||||
# loopback_users.<user> на "= false", а брокер её не применяет — в рантайме
|
||||
# rabbitmqctl eval "application:get_env(rabbit, loopback_users)." всё равно
|
||||
# отдавал {ok,[<<"rabbit">>]}. advanced.config разбирается позже и задаёт
|
||||
# значение явным списком, поэтому именно он и решает.
|
||||
advancedConfiguration: |-
|
||||
[
|
||||
{rabbit, [
|
||||
{loopback_users, []}
|
||||
]}
|
||||
].
|
||||
|
||||
Loading…
Reference in New Issue
Block a user