2.4.3. セキュアなレジストリーの手動による公開
OpenShift Container Platform クラスター内から、OpenShift Container Platform レジストリーにログインするのではなく、外部からレジストリーにアクセスできるようにするには、先にレジストリーのセキュリティーを確保してから、このレジストリーをルートに公開します。この方法を使うと、ルートアドレスを使ってクラスターの外部からレジストリーにログインし、ルートのホストを使ってイメージにタグ付けしたり、イメージをプッシュしたりできます。
以下の前提条件に関するそれぞれの手順は、標準的なクラスターのインストール時にデフォルトで実行されます。これが実行されていない場合は、手動で実行してください。
パススルールート は、クラスターの初回のインストール時にレジストリーについてデフォルトで作成されている必要があります。
ルートが存在するかどうかを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Re-encrypt ルートはセキュアなレジストリーを公開するためにもサポートされています。
ルートが存在していない場合、
oc create route passthrough
コマンドで、レジストリーをルートのサービスとして指定してルートを作成します。デフォルトでは、作成したルートの名前はサービス名と同じです。docker-registry サービスの詳細を取得します。
oc get svc
$ oc get svc NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE docker-registry 172.30.69.167 <none> 5000/TCP docker-registry=default 4h kubernetes 172.30.0.1 <none> 443/TCP,53/UDP,53/TCP <none> 4h router 172.30.172.132 <none> 80/TCP router=router 4h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートを作成します。
oc create route passthrough \ --service=docker-registry \ --hostname=<host>
$ oc create route passthrough \ --service=docker-registry \
1 --hostname=<host> route "docker-registry" created
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次に、ホストシステム上のレジストリーに使用されている証明書を信頼し、ホストによるイメージのプッシュおよびプルを許可する必要があります。参照される証明書は、レジストリーのセキュリティー保護を実行したときに作成されたものです。
sudo mkdir -p /etc/docker/certs.d/<host> sudo cp <ca_certificate_file> /etc/docker/certs.d/<host> sudo systemctl restart docker
$ sudo mkdir -p /etc/docker/certs.d/<host> $ sudo cp <ca_certificate_file> /etc/docker/certs.d/<host> $ sudo systemctl restart docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レジストリーのセキュリティー保護の実行時に得られた情報を使って レジストリーにログイン します。ただし、ここではサービス IP ではなくルートで使用されているホスト名を指定します。セキュリティーが保護され、公開されているレジストリーにログインする際は、必ず
docker login
コマンドのレジストリーを指定してください。docker login -e user@company.com \ -u f83j5h6 \ -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \ <host>
# docker login -e user@company.com \ -u f83j5h6 \ -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \ <host>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これでルートのホストを使ってイメージのタグ付けとプッシュを実行できます。たとえば、
test
という名前のプロジェクトにあるbusybox
イメージをタグ付けし、プッシュするには、以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記イメージストリームにはルート名とポートではなく、レジストリーサービスの IP アドレスとポートが設定されます。詳細は
oc get imagestreams
を参照してください。