Сбор всей информации из комментариев:
Причина сбоя аутентификации была из-за нераспознанного имени пользователя / пароля.
Удаление раздела жизненного цикла работает, так как отключает аутентификацию, и пользователь может получить доступ к MongoDB и создать новых пользователей.
Если вы не предоставите эти две переменные или не установите --auth
пометка с вашей собственной настройкой пользователя, тогда MongoDB не потребует
аутентификация. Для более подробной информации о функциональности описаны
здесь, пожалуйста, смотрите разделы в официальной документации, которые
опишите аутентификацию и авторизацию более подробно.
В соответствии с документацией MongoDB :
Использовать параметры аутентификации командной строки mongo (--username,
--password и --authenticationDatabase) при подключении к экземпляру mongod или mongos или
Сначала подключитесь к экземпляру mongod или mongos, а затем запустите
команда authenticate или метод db.auth () для
база данных аутентификации.
Так что в случае с докером вы можете запустить что-то вроде:
docker run -d --name some-mongo -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo
В Kubernetes, поскольку он имеет другой характер, вы можете создать контейнеры для запуска определенных команд в конфигурации yaml:
например:
containers:
- image: mongo
name: mongoadmin
command: ["mongo", "--auth"]
Хотя самый безопасный способ - это использовать секреты, потому что передача имени пользователя и пароля в переменных среды не является наилучшей практикой.
Вы можете найти больше информации о секретах в официальной документации . И многое другое с точки зрения Docker в главе «Секреты Docker» здесь .