7.2. コンテナーレジストリー証明書の管理
OpenShift Container Platform 内部レジストリーは Pod として作成されます。ただし、コンテナーは必要な場合は外部レジストリーからプルされます。デフォルトでは、レジストリーは TCP ポート 5000 をリッスンします。レジストリーは TLS 経由でエクスポートされたイメージのセキュリティーを保護するか、またはトラフィックを暗号化せずにレジストリーを実行するオプションを提供します。
Docker は .crt
ファイルを CA 証明書として、.cert
ファイルをクライアント証明書として解釈します。CA 拡張は .crt
である必要があります。
7.2.1. 外部レジストリー用の認証局証明書のインストール
OpenShift Container Platform を外部レジストリーで使用するために、レジストリーの認証局 (CA) 証明書が、レジストリーからイメージをプルできるすべてのノードについて信頼されている必要があります。
Docker のバージョンによっては、コンテナーイメージレジストリーを信頼するプロセスは異なります。最新バージョンの Docker のルート認証局はシステムのデフォルトにマージされています。docker
バージョン 1.13 よりも前のバージョンでは、システムのデフォルト証明書は他のカスタムルート証明書が存在しない場合にのみ使用されます。
手順
CA 証明書を
/etc/pki/ca-trust/source/anchors/
にコピーします。$ sudo cp myregistry.example.com.crt /etc/pki/ca-trust/source/anchors/
CA 証明書を展開し、信頼される認証局の一覧に追加します。
$ sudo update-ca-trust extract
openssl
コマンドを使用して SSL 証明書を確認します。$ openssl verify myregistry.example.com.crt myregistry.example.com.crt: OK
証明書が配置され、信頼が更新されたら、
docker
サービスを再起動して新規証明書が適切に設定されていることを確認します。$ sudo systemctl restart docker.service
Docker バージョンの 1.13 よりも前のバージョンの場合は、認証局を信頼するために以下の追加の手順を実行します。
すべてのノードで、ディレクトリーの名前がコンテナーイメージレジストリーのホスト名となっている新規ディレクトリーを
/etc/docker/certs.d
に作成します。$ sudo mkdir -p /etc/docker/certs.d/myregistry.example.com
注記ポート番号は、コンテナーイメージレジストリーがポート番号なしにアクセスできない場合を除き不要です。ポートを元の Docker レジストリーにポイントするには、
myregistry.example.com:port
を使用します。コンテナーイメージレジストリーに IP アドレス経由でアクセスするには、ディレクトリーの名前がコンテナーイメージレジストリーの IP である新規ディレクトリーを、すべてのノードの
/etc/docker/certs.d
内に作成する必要があります。$ sudo mkdir -p /etc/docker/certs.d/10.10.10.10
CA 証明書を直前の手順で新たに作成された Docker ディレクトリーにコピーします。
$ sudo cp myregistry.example.com.crt \ /etc/docker/certs.d/myregistry.example.com/ca.crt $ sudo cp myregistry.example.com.crt /etc/docker/certs.d/10.10.10.10/ca.crt
証明書がコピーされた後に、
docker
サービスを再起動して新規証明書が使用されていることを確認します。$ sudo systemctl restart docker.service