2017-01-27 10 views
0

オールインワンVMのOpenshiftを使用しています。 イメージストリームを使用してプライベートで安全なレジストリからイメージを取得しようとしています。これはImageStream定義です。Openshift:証明書を使用してリモートで安全なドッカーレジストリから画像を取り込む際にエラーが発生しました

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" 

リポジトリは証明書で保護されています。ローカルマシンでは/etc/docker/certs.d/my.registry.netにあり、docker login my.registry.netでログインできます。私はoc import-imageを実行すると

、しかし、私は次のエラーを取得:

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                

を私は浮浪者のマシンに証明書をコピーして、ドッキングウィンドウデーモンを再起動しますが、問題が残っています。証明書を正しく追加する方法に関するドキュメントが見つかりませんでしたので、通常のドッカーフォルダに入れておきます。

この作業を行う適切な方法は何ですか? rezie's答えに応じて

更新:

私の放浪ボックスには何のファイルetc/origin/master/ca-bundle.crtはありません。私は、以下のCA-bundle.crtファイルを見つけました:

$ 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 

私は/etc/pki/tls/certs/ca-bundle.crtにしてvar/lib/origin/openshift.local.config/master/ca-bundle.crtにルート証明書を添付し、それは何も変更しませんでした。 あなたを追加してみdocker login my.registry.net

を使用して直接ログインするためには、私は

答えて

0

を付加している私は/etc/docker/certs.dで、このルート証明書を持っている必要はありません/ ...ということ、しかし、注意してくださいCA(あなたはそれがmy.registry.netディレクトリ内で使用された前記と同じもの)OpenshiftのCAバンドル(例えば/etc/origin/master/ca-bundle.crtに。そして、()あなたが--insecureフラグが含まれていないことを確認してサービスを再起動し、import-imageを再試行してください。については

参考までに、Originプロジェクトからthis issueをチェックしてください。現在のところ、証明書をdockercfgの秘密と共に提供する方法はありません。その問題の提案は、すべてのホストにCAを信頼できるルートCAとして追加することです。

+0

ありがとう再起動OCのインポートを行うことができない - 残念ながら、トリックをしなかったという。私はそれに応じてRHELでは – feob

+0

私の質問を更新しました、私たちがしようとし、他のオプションは、/ etc/PKI/CAトラスト/ソースは/ anchors'、実行 '更新-CA-trust''に証明書を追加することで、再起動が続きますマスターをもう一度。私は、これはVMオプションの合同の場合であるかどうかわからないんだけど、それはショットの価値があるかもしれません。 – rezie

1

私は本当にトゥー・ロー・カルマをコメントすることはできませんので、私はレスキーとほとんど同じ答えを書いていきます。

エラー:

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

がないドッキングウィンドウから、OpenShiftから来るが、それゆえ起こってから、エラーを防ぐことはできません /etc/docker/certs.d/my.registry.netに追加します。あなたは、OSレベルでのCA証明書を追加する必要があります

、私の推測では、手順が何らかの理由で失敗したので、それをこのようにしますされています。それは場合

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

を実行している働いていた場合最後にテスト

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 

それはあなたの証明書エラーを与えていないとあなたはまだatomic-openshift-master-apiサービス

関連する問題