2.2. ミラーレジストリーの作成
OpenShift Container Platform のインストールに必要なミラーリングされたコンテンツをホストするためにレジストリーを作成します。
以下の手順では、/opt/registry
フォルダーにデータを保存し、podman
コンテナーで実行される単純なレジストリーを作成します。Red Hat Quay などの異なるレジストリーソリューションを使用できます。以下の手順で、レジストリーが正常に機能することを確認します。
前提条件
- レジストリーホストとして使用する Red Hat Enterprise Linux (RHEL) サーバーがネットワーク上にある。
- レジストリーホストはインターネットにアクセスできる。
手順
必要なパッケージをインストールします。
# yum -y install podman httpd-tools
podman
パッケージは、レジストリーを実行する際に使用するコンテナーパッケージを提供します。httpd-tools
パッケージは、ユーザーの作成に使用するhtpasswd
ユーティリティーを提供します。レジストリーのフォルダーを作成します。
# mkdir -p /opt/registry/{auth,certs,data}
これらのフォルダーはレジストリーコンテナー内にマウントされます。
レジストリーの証明書を指定します。既存の信頼される認証局がない場合は、自己署名の証明書を生成することができます。
$ cd /opt/registry/certs # openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt
プロンプト時に、証明書に必要な値を指定します。
国名 (2 文字コード)
場所として 2 文字の ISO 国コードを指定します。ISO 3166 国名コード 標準を参照してください。
State or Province Name (正式名)
都道府県名の正式名を入力します。
Locality Name (例: 市)
市の名前を入力します。
Organization Name (例: 会社)
会社名を入力します。
Organizational Unit Name (例: セクション)
部門名を入力します。
Common Name (例: 本人の名前またはサーバーのホスト名)
レジストリーホストのホスト名を入力します。ホスト名が DNS にあり、予想される IP アドレスに解決されていることを確認します。
Email Address
メールアドレスを入力します。詳細は、OpenSSL ドキュメントの req の説明を参照してください。
bcrpt
形式を使用するレジストリー用のユーザー名およびパスワードを生成します。# htpasswd -bBc /opt/registry/auth/htpasswd <user_name> <password> 1
- 1
<user_name>
および<password>
をユーザー名およびパスワードに置き換えます。
レジストリーをホストする
mirror-registry
コンテナーを作成します。# podman run --name mirror-registry -p <local_registry_host_port>:5000 \ 1 -v /opt/registry/data:/var/lib/registry:z \ -v /opt/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /opt/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \ -d docker.io/library/registry:2
- 1
<local_registry_host_port>
については、ミラーレジストリーがコンテンツの送信に使用するポートを指定します。
レジストリーに必要なポートを開きます。
# firewall-cmd --add-port=<local_registry_host_port>/tcp --zone=internal --permanent 1 # firewall-cmd --add-port=<local_registry_host_port>/tcp --zone=public --permanent 2 # firewall-cmd --reload
信頼された証明書の一覧に自己署名証明書を追加します。
# cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/ # update-ca-trust
ミラープロセス中にレジストリーにログインするには、証明書を信頼する必要があります。
レジストリーが使用できることを確認します。
$ curl -u <user_name>:<password> -k https://<local_registry_host_name>:<local_registry_host_port>/v2/_catalog 1 {"repositories":[]}
- 1
<user_name>
および<password>
については、レジストリーにユーザー名とパスワードを指定します。<local_registry_host_name>
については、registry.example.com
などのように、証明書に指定したレジストリードメイン名を指定します。<local_registry_host_port>
については、ミラーレジストリーがコンテンツの送信に使用するポートを指定します。
コマンドの出力に空のリポジトリーが表示される場合、レジストリーは利用可能な状態です。