2016-08-03 6 views
8

Я пытаюсь использовать Minikube для разработки местных кубернетов. Я настроил мое окружение Docker использовать Docker демон работает в предоставленном Minikube VM (boot2docker), как предложено:Невозможно вытащить изображение докера из частного репо при использовании Minikube

eval $(minikube docker-env) 

Он устанавливает эти переменные среды:

export DOCKER_TLS_VERIFY="1" 
export DOCKER_HOST="tcp://192.168.99.100:2376" 
export DOCKER_CERT_PATH="/home/jasonwhite/.minikube/certs" 

При попытке вытащить изображение из нашего частного хранилища Docker:

docker pull oururl.com:5000/myimage:v1 

Я получаю эту ошибку:

Error response from daemon: Get https://oururl.com:5000/v1/_ping: x509: certificate signed by unknown authority 

Похоже, мне нужно как-то добавить доверенный сертификат root, но до сих пор не удалось выполнить мои попытки.

Я попал в хранилище штрафа с завитком с помощью нашего ч корневого сертификата:

curl --cacert /etc/ssl/ca/ca.pem https://oururl.com:5000/v1/_ping 
+0

Вы пытаетесь вытащить изображение на свою локальную машину или пытаетесь создать Kubernetes Pod, который может вытащить изображение из виртуальной машины? – springle

+0

Я впервые столкнулся с проблемой при попытке создать блок, который должен был вытащить изображение из частного репо для создания, поэтому именно VM попыталась вытащить изображение, когда столкнулась с проблемой неспособности проверить x509 сертификат –

ответ

3

Я придумал работы вокруг ситуации с предложениями из этих источников:

https://github.com/docker/machine/issues/1799

https://github.com/docker/machine/issues/1872

Я вошел в Minikube VM (minikube ssh) и редактировал файл /usr/local/etc/ssl/certs/ca-certificates.crt, добавив свой собственный сертификат ca.

Затем я перезапустил докер демона, пока еще находится в пределах виртуальной машины: sudo /etc/init.d/docker restart

Это не очень элегантно в том, что если я перезагрузить Minikube VM, мне нужно повторить эти действия вручную каждый раз.

В качестве альтернативы, я также попытался установить параметр --insecure-registry myurl.com:5000 в переменной окружения DOCKER_OPTS (перезапущенный докер), но это не сработало для меня.

+1

Теперь вы можете использовать minikube start --insecure-registry = '' , но вам нужно будет сначала запустить minikube удалить , чтобы получить новый кластер. – KyleHodgetts

0

Kubernetes documentation на это очень хорошо.

В зависимости от места размещения вашего приватного хранилища докеров решение будет выглядеть несколько иначе. В документации объясняется, как обращаться с каждым типом репозитория.

Если вы хотите использовать автоматизированный подход для обработки этой аутентификации, вам необходимо использовать секрет Kubernetes и указать imagePullSecrets для вашего Pod.

+0

Благодарим вас за ответ, но у меня возникли проблемы с получением демона докеров, запущенного в VM Minikube, для подключения к нашему репо (не говоря уже о функциях Kubernetes, построенных сверху). Я считаю, что мне нужно как-то получить демон докеров в Minkube VM, чтобы использовать сертификат ca, который я могу предоставить. –

0

Похоже, что ваш вопрос больше связан с Докером, чем с Кубернетом. CLI Docker поддерживает число TLS-related options. Так как у вас уже есть CA сертификат, что-то, как это должно работать:

docker --tlsverify --tlscacert=/etc/ssl/ca/ca.pem pull oururl.com:5000/myimage:v1 
+0

Благодарим за отзыв. Я попробовал выполнить команду, которую вы предоставили, но я все равно получаю сообщение об ошибке «x509: сертификат, подписанный неизвестной властью». Я даже отменил DOCKER_TLS_VERIFY и DOCKER_CERT_PATH, и все еще ту же ошибку. Я могу только предположить, что есть что-то о демоне Docker, работающем в VM, что усложняет ситуацию здесь. –

1

Я не смог найти все равно, чтобы получить сертификат в minikube vm. Но, minikube имеет параметр командной строки для перехода в небезопасный реестр.

minikube start --insecure-registry=<HOST>:5000 

Затем, чтобы настроить аутентификацию в реестре, создайте секрет.

kubectl create secret docker-registry tp-registry --docker-server=<REGISTRY>:5000 --docker-username=<USERNAME> --docker-password=<PASSWORD> --docker-email=<EMAIL> --insecure-skip-tls-verify=true 

Добавить секрет учетной записи службы по умолчанию, как описано в kubernetes docs.

1

Для HTTP реестром это шаги работает для меня:

1) minikube ssh

2) редактировать /var/lib/boot2docker/profile и добавить в $ extra_args --insecure-registry yourdomain.com:5000

3) перезапустить докер демон, осуществляющий sudo /etc/init.d/docker restart

0

Вам нужно отредактировать /etc/default/docker выглядеть так:

# Docker Upstart and SysVinit configuration file 

# 
# THIS FILE DOES NOT APPLY TO SYSTEMD 
# 
# Please see the documentation for "systemd drop-ins": 
# https://docs.docker.com/engine/admin/systemd/ 
# 

# Customize location of Docker binary (especially for development testing). 
#DOCKERD="/usr/local/bin/dockerd" 

# Use DOCKER_OPTS to modify the daemon startup options. 
DOCKER_OPTS="--insecure-registry oururl.com:5000" 

# If you need Docker to use an HTTP proxy, it can also be specified here. 
#export http_proxy="http://127.0.0.1:3128/" 

# This is also a handy place to tweak where Docker's temporary files go. 
#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp" 

Убедитесь, что sudo service docker stop и sudo docker start, чтобы применить изменения. Затем вы можете нажать/вытащить реестр.

+0

этот файл не существует, minikube v0.22.2 –