2016-08-03 41 views
8

Próbuję użyć Minikube do rozwoju lokalnego kubernetes. Mam skonfigurować środowisko Döcker korzystania z demona Döcker działa w przewidzianym Minikube VM (boot2docker) jak sugeruje:Nie można pobrać obrazu dokowanego z prywatnego repo podczas korzystania z Minikube

eval $(minikube docker-env) 

Ustala się następujące zmienne środowiskowe:

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

Gdy próbuję ciągnąć obraz z naszym prywatnym repozytorium Döcker:

docker pull oururl.com:5000/myimage:v1 

otrzymuję ten błąd:

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

Wygląda na to, że muszę jakoś dodać zaufany certyfikat główny, ale moje próby zakończyły się niepowodzeniem.

mogę uderzyć repozytorium dobrze z curl za pomocą naszego urzędu certyfikacji cert:

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

Czy próbujesz pobrać obraz na lokalnej maszynie, czy próbujesz utworzyć kapsułę Kubernetes, która może pobrać obraz z wnętrza maszyny wirtualnej? – springle

+0

Po raz pierwszy natknąłem się na problem, gdy próbowałem utworzyć strąk, który musiał pobrać obraz z prywatnego repozytu, aby utworzyć, więc to była maszyna wirtualna próbowała pobrać obraz, gdy pojawił się problem braku możliwości zweryfikowania x509 certyfikat –

Odpowiedz

3

wpadłem na obejście sytuacji z sugestiami z tych źródeł:

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

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

Zalogowałem się do maszyny Minikube VM (minikube ssh) i edytowałem plik /usr/local/etc/ssl/certs/ca-certificates.crt, dołączając mój własny certyfikat ca.

I wtedy ponownie uruchomić demona Döcker jednocześnie w VM: sudo /etc/init.d/docker restart

To nie jest bardzo elegancki, że jeśli ponownie uruchomić Minikube VM, muszę powtórzyć te kroki za każdym razem ręcznie.

Jako alternatywę, próbowałem również ustawić opcję --insecure-registry myurl.com:5000 w zmiennej środowiskowej DOCKER_OPTS (ponownie uruchomiony doker), ale to nie działało dla mnie.

+1

Teraz możesz użyć minikube start --insecure-registry = '' , ale musisz najpierw uruchomić minikube delete , aby otrzymać nowy klaster. – KyleHodgetts

0

Kubernetes documentation na to dość dobre.

W zależności od tego, gdzie znajduje się prywatne repozytorium dokerów, rozwiązanie będzie wyglądać nieco inaczej. W dokumentacji objaśniono sposób postępowania z każdym typem repozytorium.

Jeśli chcesz zautomatyzowane podejście do obsługi tego uwierzytelnienia, będziesz chciał użyć tajnego klucza Kubernetes i określić numer imagePullSecrets dla swojej kapsuły.

+0

Dziękuję za odpowiedź, ale mam problemy z uruchomieniem demona docker w maszynie Minikube VM, aby połączyć się z naszym repo (nie mówiąc już o funkcji Kubernetes zbudowanej na górze). Sądzę, że muszę jakoś uzyskać demona docker w Minkube VM, aby użyć certyfikatu ca, który mogę dostarczyć. –

0

Brzmi jak twoje pytanie ma więcej wspólnego z Dockerem niż Kubernetes. Docker CLI obsługuje numer TLS-related options. Skoro masz już cert CA, coś jak to powinno działać:

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

Dziękuję za odpowiedź. Próbowałem wykonać podane polecenie, ale nadal otrzymuję komunikat o błędzie "x509: certyfikat podpisany przez nieznane uprawnienia". Nawet zdejmuję DOCKER_TLS_VERIFY i DOCKER_CERT_PATH, i wciąż mam ten sam błąd. Mogę tylko założyć, że jest coś w demona Dockera działającym na VM, co komplikuje sprawy. –

1

Nie udało mi się znaleźć ani razu, aby uzyskać certyfikat do minikube vm. Ale minikube ma parametr wiersza poleceń do przekazania w niezabezpieczonym rejestrze.

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

Następnie, aby skonfigurować uwierzytelnianie w rejestrze, utwórz sekret.

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 

Dodaj sekret do domyślnego konta usługi zgodnie z opisem w kubernetes docs.

1

Dla rejestru http to kroki prace dla mnie:

1) minikube ssh

2) Edytuj /var/lib/boot2docker/profile i dodać do $ EXTRA_ARGS --insecure-registry yourdomain.com:5000

3) zrestartować demon Döcker sudo /etc/init.d/docker restart

0

Musisz edytować /etc/default/docker wyglądać tak:

# 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" 

Upewnij się sudo service docker stop i sudo docker start aby zastosować zmiany. Powinieneś wtedy móc wcisnąć/wyciągnąć do rejestru.

+0

ten plik nie istnieje, minikube v0.22.2 –