До этого мы рассмотрели как установить Harbor:
☸️ Установка Harbor — реджестри образов в Kubernetes / OpenShift с помощью Helm
Содержание
Невозможно использовать учетную запись robot. ImagePullBackOff pull access denied
Это руководство в основном посвящено robot аккаунтам Harbor.
Robot accounts – это учетные записи, используемые для выполнения автоматических операций.
Учетная запись для вашего CI или секретных пользователей k8s.
Вы можете создать robot account, перейдя в:
Project -> Robot Accounts -> New Robot Account
Проблема
Harbour заставляет делать имя пользователя учетной записи робота быть следующим: robot$<account_name>.
Префикс $robot делает его легко отличимым от обычной учетной записи пользователя Harbour
Пример:
При добавлении секрета в kubernetes (через ранчер) я получаю:
Error: ImagePullBackOff
Когда я сохраняю имя пользователя как robot$rancher как переменную среды gitlab.
Он не хранит ничего после знака $.
$ echo $HARBOR_USERNAME
robot
Выполнение входа в одну строку не работает:
echo -n $HARBOR_PASSWORD | docker login -u "robot$gitlab_portal" --password-stdin $HARBOR_REGISTRY
однако выполнение этого метода работает:
docker login $HARBOR_REGISTRY
username: ...
password: ...
Кажется, проблема в имени пользователя:
$ export HARBOR_USERNAME="robot$gitlab_portal"
$ echo $HARBOR_USERNAME
robot
Исправление ошибки
На гитхабе пользователь предложил процитировать пароль:
docker login <url> -u '<robot$name>' -p '<token>
это сработало.
Итак, в вашем файле gitlab ci вы можете сделать:
echo -n $HARBOR_PASSWORD | docker login -u 'robot$gitlab_portal' --password-stdin $HARBOR_REGISTRY
Также это помолгло избавиться от ошибки:
Error: Cannot perform an interactive login from a non TTY device
Error response from daemon: Get http://[MASKED]/v2/: unauthorized: authentication required
Чтобы решить эту проблему вы можете добавить переменную как robot$$user