2.2. ミラーレジストリーの作成

OpenShift Container Platform のインストールに必要なミラーリングされたコンテンツをホストするためにレジストリーを作成します。

注記

以下の手順では、/opt/registry フォルダーにデータを保存し、podman コンテナーで実行される単純なレジストリーを作成します。Red Hat Quay などの異なるレジストリーソリューションを使用できます。以下の手順で、レジストリーが正常に機能することを確認します。

前提条件

  • レジストリーホストとして使用する Red Hat Enterprise Linux (RHEL) サーバーがネットワーク上にある。
  • レジストリーホストはインターネットにアクセスできる。

手順

  1. 必要なパッケージをインストールします。

    # yum -y install podman httpd-tools

    podman パッケージは、レジストリーを実行する際に使用するコンテナーパッケージを提供します。httpd-tools パッケージは、ユーザーの作成に使用する htpasswd ユーティリティーを提供します。

  2. レジストリーのフォルダーを作成します。

    # mkdir -p /opt/registry/{auth,certs,data}

    これらのフォルダーはレジストリーコンテナー内にマウントされます。

  3. レジストリーの証明書を指定します。既存の信頼される認証局がない場合は、自己署名の証明書を生成することができます。

    $ 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 の説明を参照してください。

  4. bcrpt 形式を使用するレジストリー用のユーザー名およびパスワードを生成します。

    # htpasswd -bBc /opt/registry/auth/htpasswd <user_name> <password> 1
    1
    <user_name> および <password> をユーザー名およびパスワードに置き換えます。
  5. レジストリーをホストする 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 2
    1
    <local_registry_host_port> については、ミラーレジストリーがコンテンツの送信に使用するポートを指定します。
    2
    IBM Power にインストールする場合は、代わりに docker.io/ibmcom/registry:2.6.2.5 を指定します。
  6. レジストリーに必要なポートを開きます。

    # 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
    1 2
    <local_registry_host_port> については、ミラーレジストリーがコンテンツの送信に使用するポートを指定します。
  7. 信頼された証明書の一覧に自己署名証明書を追加します。

    # cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
    # update-ca-trust

    ミラープロセス中にレジストリーにログインするには、証明書を信頼する必要があります。

  8. レジストリーが使用できることを確認します。

    $ 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> については、ミラーレジストリーがコンテンツの送信に使用するポートを指定します。

    コマンドの出力に空のリポジトリーが表示される場合、レジストリーは利用可能な状態です。