Ошибка проверки разрешений push при попытке отправить в частный небезопасный реестр докеров
Я использую gitlab runner на kubernetes, kaniko, чтобы отправить изображение в частный реестр докеров (небезопасно), как я могу предоставить разрешения kaniko push?
Я пробовал --insecure-registry, --skip-tls-verify params, но возникла та же ошибка
build:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --insecure-registry --destination registry-ip:5000/soccer
ошибка при проверке разрешений push - убедитесь, что вы ввели правильное имя тега и правильно прошли аутентификацию, и повторите попытку: проверка разрешения push для "registry-ip:5000/soccer": Сообщение http://registry-ip:5000/v2/soccer/blobs/uploads/: net / http: HTTP / 1.x транспортное соединение нарушено: неверный HTTP-ответ "\x15\x03\x01\x00\x02\x02\x16"
2 ответа
В случае использования необеспеченного реестра, вы должны использовать --insecure вариант kaniko исполнителя, для exmaple:
- /kaniko/executor --insecure --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $MY_REGISTRY/$MY_IMAGE:$MY_IMAGE_TAG
Отправка в небезопасные реестры требует изменения демона докера. Демон Docker (какую бы среду выполнения вы не использовали для кластера Kubernetes, например, Docker, Containerd и т. Д., Я предполагаю, что вы используете Docker Daemon) необходимо отредактировать, чтобы разрешить небезопасные реестры. Отредактируйте/etc/docker/daemon.json
и добавьте следующее:
{
"insecure-registries" : [ "registry-ip:5000" ]
}
Затем перезапустите докер на каждом из узлов.
Лучшим подходом было бы добавить некоторую форму аутентификации через локальный реестр докеров. Вы можете включить базовую аутентификацию HTTP в реестре Docker. Или вы можете настроить SSL в реестре докеров с помощью подписанного сертификата (хотя самозаверяющие сертификаты необходимо добавить в демон Docker, прежде чем они станут доверенными).