Поддерживает ли Kubernetes kubelet хранилища учетных данных Docker для частных реестров? - PullRequest
0 голосов
/ 26 апреля 2018

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 читается.

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

На момент написания статьи Kubernetes v1.14 не поддерживает помощников по учетным данным согласно официальным документам Настройка узлов для аутентификации в частном реестре

Примечание. На данный момент Kubernetes поддерживает только раздел auths и HttpHeaders в конфигурации docker. Это означает, что учетные данные помощников (credHelpers или credsStore) не поддерживаются.

0 голосов
/ 27 апреля 2018

Да, Kubernetes имеет тот же механизм, называемый секретами , но с расширенной функциональностью, и включает в себя определенный тип секрета, называемый docker-registry . Вы можете создать свой конкретный секрет с учетными данными для реестра Docker:

$ kubectl create secret docker-registry myregistrykey \
 --docker-server=DOCKER_REGISTRY_SERVER \
 --docker-username=DOCKER_USER \
 --docker-password=DOCKER_PASSWORD \
 --docker-email=DOCKER_EMAIL

secret "myregistrykey" created.

и используйте его:

apiVersion: v1
kind: Pod
metadata:
  name: foo
  namespace: awesomeapps
spec:
  containers:
    - name: foo
      image: janedoe/awesomeapp:v1
  imagePullSecrets:
    - name: myregistrykey
...