Закрытый реестр Dober в Kubernetes не работает - альтернатива командной строки работает, но k8s не может получить изображение
У меня есть следующий docker-compose.yaml для частного реестра Docker, который будет работать на Minikube:
version: '3'
services:
registry:
restart: always
image: registry:2
command: ["/bin/sh", "-ec","sleep 1000"]
ports:
- 443:443
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
- /home/usr/registry/data:/var/lib/registry
- /home/usr/registry/certs:/certs
- /home/usr/registry/auth:/auth
Когда я делаю kompose up
, реестр должен быть запущен. Но делать docker login localhost:443
только дает мне ошибку соединения отказано. Если я бегу
docker run -d --restart=always --name registry -v `pwd`/auth:/auth -v `pwd`/certs:/certs -v `pwd`/certs:/certs -e REGISTRY_AUTH=htpasswd -e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2
все работает нормально, и я могу войти в свой личный реестр. Это важно по той причине, что у меня есть webapp-образ, который находится в частном реестре и должен быть извлечен kubernetes (minikube) из него. Тем не менее, я всегда получаю ошибку CrashLoopBackoff, которую я считаю из-за того, что реестр не может быть запущен из kubernetes и, между прочим, не доступен для него. Что я делаю не так?
1 ответ
Решение состоит в том, чтобы настроить реестр в мини-кубе и переадресовать порт на локальный хост, чтобы изображение помещалось в реестр мини-кубов.