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/kubernetes создаётся там же.
|
||||||
auth:
|
auth:
|
||||||
securePassword: true
|
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: ""
|
existingPasswordSecret: ""
|
||||||
vault:
|
vault:
|
||||||
enabled: true
|
enabled: true
|
||||||
@ -95,3 +103,15 @@ spec:
|
|||||||
secretPath: secrets/data/rabbitmq/auth
|
secretPath: secrets/data/rabbitmq/auth
|
||||||
usernameKey: username
|
usernameKey: username
|
||||||
passwordKey: password
|
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