2017-01-27 2 views
0

Ich benutze die All-in-One VM OpenShift Ursprung. Ich versuche, Bilder aus einer privaten, sicheren Registrierung mit einem Bildstrom zu ziehen. Dies ist die ImageStream-Definition:Openshift: Fehler beim Ziehen von Bild aus der Remote, sichere Docker Registrierung mit Zertifikaten

apiVersion: v1                   
kind: ImageStream                  
metadata:                    
    name: my-image-stream                  
    annotations:                   
    description: Keeps track of changes in the application image       
    name: my-image                
spec:                     
    dockerImageRepository: "my.registry.net/myproject/my-image" 

Das Repository ist mit einem Zertifikat gesichert. Auf meinem lokalen Rechner habe ich sie in und ich kann mich mit docker login my.registry.net einloggen.

Wenn ich laufen oc import-image jedoch bekomme ich folgende Fehlermeldung:

The import completed with errors.              

Name:      my-image              
Namespace:   myproject               
Created:   About an hour ago             
Labels:      <none>              
Description:    Keeps track of changes in the application image    
Annotations:    openshift.io/image.dockerRepositoryCheck=2017-01-27T08:09:49Z 
Docker Pull Spec: 172.30.53.244:5000/myproject/my-image        
Unique Images:    0               
Tags:      1               

latest                     
    tagged from my.registry.net/myproject/my-image           

    ! error: Import failed (InternalError): Internal error occurred: Get https://my.registry.net/v2/: remote error: handshake failure 
      About an hour ago                

ich die Zertifikate an die vagabundierenden Maschine kopiert und neu gestartet, die Docker-Daemon, aber das Problem bleibt. Ich habe keine Dokumentation darüber gefunden, wie man die Zertifikate richtig hinzufügt, also lege ich sie einfach in den üblichen Docker-Ordner.

Was ist der geeignete Weg, um dies zu erreichen?

-Update als Antwort auf rezie's Antwort:

Es existiert keine Datei etc/origin/master/ca-bundle.crt auf meiner vagrant Box. Ich fand die folgenden CA-bundle.crt Dateien:

$ find/-iname ca-bundle.crt 
/etc/pki/tls/certs/ca-bundle.crt 
##multiple lines like 
/var/lib/docker/devicemapper/mnt/something-hash-like/rootfs/etc/pki/tls/certs/ca-bundle.crt 
/var/lib/origin/openshift.local.config/master/ca-bundle.crt 

ich das Stammzertifikat zu /etc/pki/tls/certs/ca-bundle.crt angehängt und an var/lib/origin/openshift.local.config/master/ca-bundle.crt, aber das hat nichts ändern. Bitte beachten Sie jedoch, dass ich brauche nicht in /etc/docker/certs.d dieses Root-Zertifikat haben/..., um direkt zum Login mit docker login my.registry.net

I

Antwort

0

angehängt habe Versuchen Anfügen Ihrer CA (das gleiche Sie sagten, Sie haben gesagt, im my.registry.net Verzeichnis verwendet wurde) in Openshift von ca Bündel (zB /etc/origin/master/ca-bundle.crt. Dann den Dienst neu starten und import-image (achten Sie darauf erneut versuchen, dass Sie die --insecure Flagge nicht enthalten.)

Für Referenz, Auschecken this issue aus dem Projekt Origin. Wie Sie bereits erwähnt haben, t Es gibt derzeit keine Möglichkeit, Zertifikate zusammen mit dem dockercfg-Secret bereitzustellen, und der Vorschlag dieses Problems besteht darin, die CA als vertrauenswürdige Stammzertifizierungsstelle für alle Hosts hinzuzufügen.

+0

Vielen Dank - leider, dass nicht den Trick gemacht. Ich habe meine Frage entsprechend aktualisiert – feob

+0

In RHEL, die andere Option, die wir versuchten, war das Zertifikat zu "/ etc/pki/ca-trust/sources/anchors" hinzuzufügen, führen Sie "update-ca-trust", gefolgt von einem Neustart der Master (s) wieder. Ich bin nicht sicher, ob dies ein kongruenter Fall für die VM-Option wäre, aber es könnte einen Versuch wert sein. – rezie

1

Ich kann nicht kommen wegen tow lo Karma, also werde ich eine Antwort schreiben sagen fast das gleiche wie rezie.

Der Fehler:

! error: Import failed (InternalError): Internal error occurred: Get https://my.registry.net/v2/: remote error: handshake failure 
     About an hour ago                

kommt von Openshift, nicht von Docker und fügt hinzu, damit es zu /etc/docker/certs.d/my.registry.net nicht daran hindert, den Fehler nicht passiert.

Sie sollten das CA-Zertifikat auf OS-Ebene hinzufügen, ist meine Vermutung die Schritte aus irgendeinem Grund versagt, so tun es auf diese Weise:

openssl s_client -connect my.registry.net:443 </dev/null | 
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \ 
> /etc/pki/ca-trust/source/anchors/my.registry.net.crt && 
update-ca-trust check && update-ca-trust extract 

Schließlich testen, ob es

curl https://my.registry.net/v2 

läuft gearbeitet Wenn es gibt Ihnen kein Zertifikat Fehler und Sie können immer noch nicht die OC-Import starten atomic-openshift-master-api Service

Verwandte Themen