Docker имеет механизм для получения паролей реестра Docker из удаленного хранилища, вместо того, чтобы просто сохранять их в файле конфигурации - этот механизм называется Хранилище учетных данных . У него есть аналогичный механизм, который используется для получения пароля для определенного реестра с именем Credential Helpers .
По сути, это включает определение значения в ~/.docker/config.json
, которое интерпретируется как имя исполняемого файла.
{
"credsStore": "osxkeychain"
}
Значение ключа credsStore
имеет префикс docker-credential-
, предварительно добавленный к нему, и если этот исполняемый файл (например, docker-credential-osxkeychain
) существует в пути, он будет выполнен и, как ожидается, отобразит имя пользователя и пароль stdout
, который Docker будет использовать для входа в личный реестр. Идея состоит в том, что исполняемый файл обращается к хранилищу и получает ваш пароль для вас, поэтому вам не нужно много файлов, лежащих в кластере с вашим именем пользователя / паролем, закодированным в них.
Я не могу заставить куберца Кубернетса воспользоваться этим хранилищем учетных данных. Кажется, он просто игнорирует это, и когда Kubernetes пытается загрузить файл из частного реестра, я получаю сообщение об ошибке «no basic auth credentials». Если у меня просто есть config.json
с именем пользователя / паролем, то kubelet работает нормально.
Поддерживает ли Kubernetes хранилища учетных данных Docker / помощники по учетным данным и, если да, то как мне заставить их работать?
Для справки, kubelet проходит через systemd
, исполняемый файл хранилища учетных данных находится по пути, а файл config.json
читается.