2016-08-03 15 views
8

Ich versuche, Minikube für lokale kubernetes Entwicklung zu verwenden. Ich habe meine Docker-Umgebung eingerichtet, um die Docker-Daemon in dem mitgelieferten Minikube VM laufen zu verwenden (boot2docker) wie vorgeschlagen:Kann Docker Bild nicht von privaten Repo ziehen, wenn Minikube

eval $(minikube docker-env) 

Sie setzt diese Umgebungsvariablen:

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

Wenn ich zu ziehen versuchen, ein Bild von unserem privaten docker Repository:

docker pull oururl.com:5000/myimage:v1 

ich diesen Fehler:

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

Es scheint, dass ich ein vertrauenswürdiges CA-Stammzertifikat irgendwie hinzufügen muss, aber bisher bei meinen Versuchen nicht erfolgreich war.

Ich kann das Repository feinen Hit mit curl unseres ca. root cert mit:

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

Versuchen Sie, das Image auf Ihrem lokalen Computer zu erstellen, oder versuchen Sie, einen Kubernetes Pod zu erstellen, der das Image aus der VM ziehen kann? – springle

+0

Ich stieß zuerst auf das Problem beim Versuch, einen Pod zu erstellen, der ein Bild aus dem privaten Repo zum Erstellen ziehen musste, also war es die VM, die versucht, das Bild zu ziehen, wenn es das Problem gab, das x509 nicht zu überprüfen Zertifikat –

Antwort

3

ich mit einem Work-around kam für die Situation mit Anregungen aus diesen Quellen:

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

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

Ich habe mich in die Minikube VM (minikube ssh) eingeloggt und die /usr/local/etc/ssl/certs/ca-certificates.crt Datei bearbeitet, indem ich mein eigenes CA-Cert angefügt habe.

ich neu gestartet dann den Docker Dämon, während immer noch innerhalb der VM: sudo /etc/init.d/docker restart

Dies, dass nicht sehr elegant ist, wenn ich die Minikube VM neu starten, ich brauche diese manuellen Schritte jedes Mal zu wiederholen.

Als Alternative habe ich auch versucht, die --insecure-registry myurl.com:5000 Option in der DOCKER_OPTS Umgebungsvariable (neu gestartet Docker), aber das hat nicht für mich arbeiten.

+1

Jetzt können Sie minikube starten --insecure-registry = '' aber Sie müssen zunächst minikube löschen ausführen, um einen frischen Cluster zu erhalten. – KyleHodgetts

0

Das Kubernetes documentation auf das ist ziemlich gut.

Je nachdem, wo Ihr privates Docker-Repository gehostet wird, sieht die Lösung ein wenig anders aus. Die Dokumentation erläutert, wie mit jedem Repository-Typ umgegangen wird.

Wenn Sie einen automatisierten Ansatz für diese Authentifizierung wünschen, sollten Sie ein Kubernetes-Geheimnis verwenden und die imagePullSecrets für Ihren Pod angeben.

+0

Vielen Dank für Ihre Antwort, aber ich habe Probleme, den Docker-Daemon in der Minikube-VM laufen zu lassen, um eine Verbindung zu unserem Repo herzustellen (ganz zu schweigen von allen Kubernetes-Funktionen, die oben drauf gebaut wurden). Ich glaube, ich muss irgendwie den Docker-Daemon in Minkube VM bekommen, um ein Ca-Cert zu benutzen, den ich zur Verfügung stellen kann. –

0

Klingt wie Ihre Frage hat mehr mit Docker als Kubernetes zu tun. Das Docker CLI unterstützt eine Reihe von TLS-related options. Da Sie bereits das CA-Zertifikat haben, sollte in etwa so funktionieren:

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

Vielen Dank für die Antwort. Ich habe versucht, den von Ihnen bereitgestellten Befehl auszuführen, aber ich erhalte immer noch den Fehler "x509: Zertifikat von unbekannter Behörde signiert". Ich habe sogar die DOCKER_TLS_VERIFY und DOCKER_CERT_PATH deaktiviert und immer noch den gleichen Fehler. Ich kann nur davon ausgehen, dass der Docker-Daemon in der VM etwas läuft, was die Dinge hier kompliziert. –

1

Ich konnte sowieso nicht finden, um das Zertifikat in den minikube vm zu bekommen. Minikube verfügt jedoch über einen Befehlszeilenparameter, um eine unsichere Registrierung zu übergeben.

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

Dann zur Authentifizierung in der Registrierung zu konfigurieren, erstellen Sie ein Geheimnis.

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 

secret auf das Konto Standard-Service wie in den kubernetes docs beschrieben.

1

Für ein http-Registry Dies funktioniert für mich die Schritte:

1) minikube ssh

2) bearbeiten /var/lib/boot2docker/profile und in den $ extra_args --insecure-registry yourdomain.com:5000

3) Starten Sie den Docker Daemon sudo /etc/init.d/docker restart

0

Sie müssen /etc/default/docker bearbeiten wie so aussehen:

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

Achten Sie darauf, zu sudo service docker stop und sudo docker start die Änderungen zu übernehmen. Sie sollten dann in der Lage sein, Push/Pull zu Ihrer Registrierung.

+0

Diese Datei existiert nicht, minikube v0.22.2 –

Verwandte Themen