Hashicorp Vault - Django запрос из докер-контейнера

Добрый день,

У меня есть два контейнера docker, в одном запущено приложение django, а в другом - Hashicorp Vault, поскольку я начинаю играть с Vault в dev-среде.

Я использую HVAC из представления django для записи секрета в хранилище, который вводится пользователем, чтобы настроить интеграцию с REST API для получения данных.

Когда я запускаю следующее с хост-машины, он пишет просто отлично.

client_write = hvac.Client(url='http://127.0.0.1:8200', token='MY_TOKEN')
client_write.is_authenticated()

Когда я запускаю то же самое из контейнера Django, он терпит неудачу с:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8200): Max retries exceeded с url: /v1/auth/token/lookup-self (Причина - NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f2a21990610>: Failed to establish a new connection: [Errno 111]. Connection refused'))

Django docker container запущен на localhost:8000 & хранилище - localhost:8200. У меня также есть front end, написанный на VueJS, запущенный на localhost:8080, который без проблем взаимодействует с django rest API (django-rest-framework).

Есть ли что-то в vault, что мне нужно перечислить, откуда могут приходить запросы?

EDIT: Также, я использовал оба моих специально созданных токена с политиками, которые разрешают запись рассматриваемых секретов, вместе со следующим вводом perms (согласно https://github.com/hashicorp/vault/issues/781 ):

path "auth/token/lookup-self" {
    capabilities = ["read"]
} 

path "auth/token/renew-self" {
    capabilities = ["update"]
}

Более того, такое же поведение происходит при тестировании с помощью корневого токена и специально созданных токенов, работающих от хост-системы.

Спасибо, я очень новичок в Vault и пробиваюсь через это с трудом.

BCBB

OK, поэтому я не предоставил достаточно релевантной информации в своем первом сообщении из-за своего непонимания. Благодаря ссылке на сетевое взаимодействие в compose в комментарии выше, я начал двигаться по пути.

Теперь я понимаю, что у меня каждый элемент находится в отдельном docker-compose: project_ui/docker-compose для VueJS front end, project_api/ для Django & Postgres, а затем project_vault для контейнера hashicorp vault.

Чтобы обеспечить их взаимодействие, я следовал руководству, приведенному здесь: Связь между несколькими проектами docker-compose

Я создал сеть в приложении django, а затем связал с ней другие контейнеры, как описано в этом ответе.

Спасибо.

Вернуться на верх