2.5. Azure 上でプライベートストレージエンドポイントを設定する
Image Registry Operator を利用すると、Azure 上でプライベートエンドポイントを使用できます。これにより、OpenShift Container Platform がプライベート Azure クラスターにデプロイされている場合に、プライベートストレージアカウントのシームレスな設定が可能になります。これにより、パブリック向けのストレージエンドポイントを公開せずにイメージレジストリーをデプロイできます。
Microsoft Azure Red Hat OpenShift (ARO) でプライベートストレージエンドポイントを設定しないでください。エンドポイントによって、Microsoft Azure Red Hat OpenShift クラスターが回復不能な状態になる可能性があります。
次のどちらかの方法で、Azure 上のプライベートストレージエンドポイントを使用するように Image Registry Operator を設定できます。
- Image Registry Operator を設定して VNet 名とサブネット名を検出する
- ユーザーが指定した Azure 仮想ネットワーク (VNet) 名とサブネット名を使用する
2.5.1. Azure 上でプライベートストレージエンドポイントを設定する場合の制限事項
Azure 上でプライベートストレージエンドポイントを設定する場合は、次の制限が適用されます。
-
プライベートストレージエンドポイントを使用するように Image Registry Operator を設定すると、ストレージアカウントへのパブリックネットワークアクセスが無効になります。したがって、OpenShift Container Platform の外部のレジストリーからイメージをプルするには、レジストリーの Operator 設定で
disableRedirect: true
を設定する必要があります。リダイレクトが有効になっていると、ストレージアカウントからイメージを直接プルするように、レジストリーによってクライアントがリダイレクトされますが、これは機能しません。パブリックネットワークアクセスが無効になっているためです。詳細は、「Azure でプライベートストレージエンドポイントを使用する場合にリダイレクトを無効にする」を参照してください。 - この操作は、Image Registry Operator によって元に戻すことはできません。
2.5.2. Image Registry Operator による VNet 名とサブネット名の検出を有効にして Azure 上でプライベートストレージエンドポイントを設定する
次の手順では、VNet 名とサブネット名を検出するように Image Registry Operator を設定して、Azure 上でプライベートストレージエンドポイントを設定する方法を示します。
前提条件
- Azure 上で動作するようにイメージレジストリーを設定している。
ネットワークが、Installer Provisioned Infrastructure インストール方法を使用してセットアップされている。
カスタムネットワーク設定を使用するユーザーの場合は、「ユーザー指定の VNet 名とサブネット名を使用して Azure 上でプライベートストレージエンドポイントを設定する」を参照してください。
手順
Image Registry Operator の
config
オブジェクトを編集し、networkAccess.type
をInternal
に設定します。$ oc edit configs.imageregistry/cluster
# ... spec: # ... storage: azure: # ... networkAccess: type: Internal # ...
オプション: 次のコマンドを入力して、Operator がプロビジョニングを完了したことを確認します。これには数分かかる場合があります。
$ oc get configs.imageregistry/cluster -o=jsonpath="{.spec.storage.azure.privateEndpointName}" -w
オプション: レジストリーがルートによって公開されており、ストレージアカウントをプライベートに設定する場合、クラスターの外部へのプルを引き続き機能させるには、リダイレクトを無効にする必要があります。次のコマンドを入力して、Image Operator 設定のリダイレクトを無効にします。
$ oc patch configs.imageregistry cluster --type=merge -p '{"spec":{"disableRedirect": true}}'
注記リダイレクトが有効になっていると、クラスターの外部からのイメージのプルが機能しなくなります。
検証
次のコマンドを実行して、レジストリーサービス名を取得します。
$ oc registry info --internal=true
出力例
image-registry.openshift-image-registry.svc:5000
次のコマンドを実行してデバッグモードに入ります。
$ oc debug node/<node_name>
推奨される
chroot
コマンドを実行します。以下に例を示します。$ chroot /host
次のコマンドを入力して、コンテナーレジストリーにログインします。
$ podman login --tls-verify=false -u unused -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
出力例
Login Succeeded!
次のコマンドを入力して、レジストリーからイメージをプルできることを確認します。
$ podman pull --tls-verify=false image-registry.openshift-image-registry.svc:5000/openshift/tools
出力例
Trying to pull image-registry.openshift-image-registry.svc:5000/openshift/tools/openshift/tools... Getting image source signatures Copying blob 6b245f040973 done Copying config 22667f5368 done Writing manifest to image destination Storing signatures 22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9
2.5.3. ユーザー指定の VNet 名とサブネット名を使用して Azure 上でプライベートストレージエンドポイントを設定する
次の手順を使用して、パブリックネットワークアクセスが無効な、Azure 上のプライベートストレージエンドポイントの背後で公開されるストレージアカウントを設定します。
前提条件
- Azure 上で動作するようにイメージレジストリーを設定している。
- Azure 環境で使用する VNet 名とサブネット名を把握している。
- ネットワークが Azure の別のリソースグループに設定されている場合は、そのリソースグループの名前も把握している。
手順
Image Registry Operator の
config
オブジェクトを編集し、VNet 名とサブネット名を使用してプライベートエンドポイントを設定します。$ oc edit configs.imageregistry/cluster
# ... spec: # ... storage: azure: # ... networkAccess: type: Internal internal: subnetName: <subnet_name> vnetName: <vnet_name> networkResourceGroupName: <network_resource_group_name> # ...
オプション: 次のコマンドを入力して、Operator がプロビジョニングを完了したことを確認します。これには数分かかる場合があります。
$ oc get configs.imageregistry/cluster -o=jsonpath="{.spec.storage.azure.privateEndpointName}" -w
注記リダイレクトが有効になっていると、クラスターの外部からのイメージのプルが機能しなくなります。
検証
次のコマンドを実行して、レジストリーサービス名を取得します。
$ oc registry info --internal=true
出力例
image-registry.openshift-image-registry.svc:5000
次のコマンドを実行してデバッグモードに入ります。
$ oc debug node/<node_name>
推奨される
chroot
コマンドを実行します。以下に例を示します。$ chroot /host
次のコマンドを入力して、コンテナーレジストリーにログインします。
$ podman login --tls-verify=false -u unused -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
出力例
Login Succeeded!
次のコマンドを入力して、レジストリーからイメージをプルできることを確認します。
$ podman pull --tls-verify=false image-registry.openshift-image-registry.svc:5000/openshift/tools
出力例
Trying to pull image-registry.openshift-image-registry.svc:5000/openshift/tools/openshift/tools... Getting image source signatures Copying blob 6b245f040973 done Copying config 22667f5368 done Writing manifest to image destination Storing signatures 22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9
2.5.4. オプション: Azure でプライベートストレージエンドポイントを使用する場合にリダイレクトを無効にする
デフォルトでは、イメージレジストリーを使用する場合、リダイレクトが有効になります。リダイレクトにより、レジストリー Pod からオブジェクトストレージへのトラフィックのオフロードが可能になり、プルが高速化されます。リダイレクトが有効で、ストレージアカウントがプライベートである場合、クラスターの外部のユーザーはレジストリーからイメージをプルできません。
場合によっては、クラスターの外部のユーザーがレジストリーからイメージをプルできるように、リダイレクトを無効にする必要があります。
リダイレクトを無効にするには、次の手順を実行します。
前提条件
- Azure 上で動作するようにイメージレジストリーを設定している。
- ルートを設定している。
手順
次のコマンドを入力して、イメージレジストリー設定のリダイレクトを無効にします。
$ oc patch configs.imageregistry cluster --type=merge -p '{"spec":{"disableRedirect": true}}'
検証
次のコマンドを実行して、レジストリーサービス名を取得します。
$ oc registry info
出力例
default-route-openshift-image-registry.<cluster_dns>
次のコマンドを入力して、コンテナーレジストリーにログインします。
$ podman login --tls-verify=false -u unused -p $(oc whoami -t) default-route-openshift-image-registry.<cluster_dns>
出力例
Login Succeeded!
次のコマンドを入力して、レジストリーからイメージをプルできることを確認します。
$ podman pull --tls-verify=false default-route-openshift-image-registry.<cluster_dns> /openshift/tools
出力例
Trying to pull default-route-openshift-image-registry.<cluster_dns>/openshift/tools... Getting image source signatures Copying blob 6b245f040973 done Copying config 22667f5368 done Writing manifest to image destination Storing signatures 22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9