3.7. vSphere のレジストリーの設定
3.7.1. インストール時に削除されたイメージレジストリー
共有可能なオブジェクトストレージを提供しないプラットフォームでは、OpenShift Image Registry Operator 自体が Removed
としてブートストラップされます。これにより、openshift-installer
がそれらのプラットフォームタイプでのインストールを完了できます。
インストール後に、Image Registry Operator 設定を編集して managementState
を Removed
から Managed
に切り替える必要があります。これが完了したら、ストレージを設定する必要があります。
3.7.2. イメージレジストリーの管理状態の変更
イメージレジストリーを起動するには、Image Registry Operator 設定の managementState
を Removed
から Managed
に変更する必要があります。
手順
managementState
Image Registry Operator 設定をRemoved
からManaged
に変更します。以下に例を示します。$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
3.7.3. イメージレジストリーストレージの設定
Image Registry Operator は、デフォルトストレージを提供しないプラットフォームでは最初は利用できません。インストール後に、レジストリー Operator を使用できるようにレジストリーをストレージを使用するように設定する必要があります。
実稼働クラスターに必要な永続ボリュームの設定に関する手順が示されます。該当する場合、空のディレクトリーをストレージの場所として設定する方法が表示されます。これは、実稼働以外のクラスターでのみ利用できます。
アップグレード時に Recreate
ロールアウトストラテジーを使用して、イメージレジストリーがブロックストレージタイプを使用することを許可するための追加の手順が提供されます。
3.7.3.1. VMware vSphere のレジストリーストレージの設定
クラスター管理者は、インストール後にレジストリーをストレージを使用できるように設定する必要があります。
前提条件
- クラスター管理者のパーミッション。
- VMware vSphere 上のクラスター。
Red Hat OpenShift Data Foundation など、クラスターのプロビジョニングされた永続ストレージ。
重要OpenShift Container Platform は、1 つのレプリカのみが存在する場合にイメージレジストリーストレージの
ReadWriteOnce
アクセスをサポートします。ReadWriteOnce
アクセスでは、レジストリーがRecreate
ロールアウト戦略を使用する必要もあります。2 つ以上のレプリカで高可用性をサポートするイメージレジストリーをデプロイするには、ReadWriteMany
アクセスが必要です。"100Gi" の容量が必要です。
重要テストにより、NFS サーバーを RHEL でコアサービスのストレージバックエンドとして使用することに関する問題が検出されています。これには、OpenShift Container レジストリーおよび Quay、メトリックストレージの Prometheus、およびロギングストレージの Elasticsearch が含まれます。そのため、コアサービスで使用される PV をサポートするために RHEL NFS を使用することは推奨されていません。
他の NFS の実装ではこれらの問題が検出されない可能性があります。OpenShift Container Platform コアコンポーネントに対して実施された可能性のあるテストに関する詳細情報は、個別の NFS 実装ベンダーにお問い合わせください。
手順
レジストリーをストレージを使用できるように設定するには、
configs.imageregistry/cluster
リソースのspec.storage.pvc
を変更します。注記共有ストレージを使用する場合は、外部からアクセスを防ぐためにセキュリティー設定を確認します。
レジストリー Pod がないことを確認します。
$ oc get pod -n openshift-image-registry -l docker-registry=default
出力例
No resourses found in openshift-image-registry namespace
注記出力にレジストリー Pod がある場合は、この手順を続行する必要はありません。
レジストリー設定を確認します。
$ oc edit configs.imageregistry.operator.openshift.io
出力例
storage: pvc: claim: 1
- 1
image-registry-storage
永続ボリューム要求 (PVC) の自動作成を許可するには、claim
フィールドを空白のままにします。PVC は、デフォルトのストレージクラスに基づいて生成されます。ただし、デフォルトのストレージクラスは、RADOS ブロックデバイス (RBD) などの ReadWriteOnce (RWO) ボリュームを提供する可能性があることに注意してください。これは、複数のレプリカに複製するときに問題を引き起こす可能性があります。
clusteroperator
ステータスを確認します。$ oc get clusteroperator image-registry
出力例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.7 True False False 6h50m
3.7.3.2. 実稼働以外のクラスターでのイメージレジストリーのストレージの設定
Image Registry Operator のストレージを設定する必要があります。実稼働用以外のクラスターの場合、イメージレジストリーは空のディレクトリーに設定することができます。これを実行する場合、レジストリーを再起動するとすべてのイメージが失われます。
手順
イメージレジストリーストレージを空のディレクトリーに設定するには、以下を実行します。
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
警告実稼働用以外のクラスターにのみこのオプションを設定します。
Image Registry Operator がそのコンポーネントを初期化する前にこのコマンドを実行する場合、
oc patch
コマンドは以下のエラーを出して失敗します。Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
数分待機した後に、このコマンドを再び実行します。
3.7.3.3. VMware vSphere のブロックレジストリーストレージの設定
イメージレジストリーがクラスター管理者によるアップグレード時に vSphere Virtual Machine Disk (VMDK) などのブロックストレージタイプを使用できるようにするには、Recreate
ロールアウトストラテジーを使用できます。
ブロックストレージボリュームはサポートされますが、実稼働クラスターでのイメージレジストリーと併用することは推奨されません。レジストリーに複数のレプリカを含めることができないため、ブロックストレージにレジストリーが設定されているインストールに高可用性はありません。
手順
次のコマンドを入力してイメージレジストリーストレージをブロックストレージタイプとして設定し、レジストリーにパッチを適用して
Recreate
ロールアウトストラテジーを使用し、1
つのレプリカのみで実行されるようにします。$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
ブロックストレージデバイスの PV をプロビジョニングし、そのボリュームの PVC を作成します。要求されたブロックボリュームは ReadWriteOnce (RWO) アクセスモードを使用します。
以下の内容で
pvc.yaml
ファイルを作成して VMware vSpherePersistentVolumeClaim
オブジェクトを定義します。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: image-registry-storage 1 namespace: openshift-image-registry 2 spec: accessModes: - ReadWriteOnce 3 resources: requests: storage: 100Gi 4
次のコマンドを入力して、ファイルから
PersistentVolumeClaim
オブジェクトを作成します。$ oc create -f pvc.yaml -n openshift-image-registry
次のコマンドを入力して、正しい PVC を参照するようにレジストリー設定を編集します。
$ oc edit config.imageregistry.operator.openshift.io -o yaml
出力例
storage: pvc: claim: 1
- 1
- カスタム PVC を作成することにより、
image-registry-storage
PVC のデフォルトの自動作成のclaim
フィールドを空のままにできます。
正しい PVC を参照するようにレジストリーストレージを設定する手順は、vSphere のレジストリーの設定 を参照してください。
3.7.3.4. Red Hat OpenShift Data Foundation で Ceph RGW ストレージを使用するための Image Registry Operator の設定
Red Hat OpenShift Data Foundation は、OpenShift イメージレジストリーで使用できる複数のストレージタイプを統合します。
- Ceph、共有および分散ファイルシステムとオンプレミスオブジェクトストレージ
- NooBaa。Multicloud Object Gateway を提供します。
このドキュメントでは、Ceph RGW ストレージを使用するようにイメージレジストリーを設定する手順の概要を説明します。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
-
oc
CLI がインストールされている。 - オブジェクトストレージおよび Ceph RGW オブジェクトストレージを提供するために OpenShift Data Foundation Operator をインストールしている。
手順
ocs-storagecluster-ceph-rgw
ストレージクラスを使用してオブジェクトバケットクレームを作成します。以下に例を示します。cat <<EOF | oc apply -f - apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: rgwbucket namespace: openshift-storage 1 spec: storageClassName: ocs-storagecluster-ceph-rgw generateBucketName: rgwbucket EOF
- 1
- あるいは、
openshift-image-registry
namespace を使用することもできます。
次のコマンドを入力して、バケット名を取得します。
$ bucket_name=$(oc get obc -n openshift-storage rgwbucket -o jsonpath='{.spec.bucketName}')
次のコマンドを入力して、AWS 認証情報を取得します。
$ AWS_ACCESS_KEY_ID=$(oc get secret -n openshift-storage rgwbucket -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 --decode)
$ AWS_SECRET_ACCESS_KEY=$(oc get secret -n openshift-storage rgwbucket -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 --decode)
次のコマンドを入力して、
openshift-image-registry プロジェクト
の下にある新しいバケットの AWS 認証情報を使用して、秘密のimage-registry-private-configuration-user
を作成します。$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=${AWS_ACCESS_KEY_ID} --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=${AWS_SECRET_ACCESS_KEY} --namespace openshift-image-registry
次のコマンドを入力して、
route
ホストを取得します。$ route_host=$(oc get route ocs-storagecluster-cephobjectstore -n openshift-storage --template='{{ .spec.host }}')
次のコマンドを入力して、入力証明書を使用する設定マップを作成します。
$ oc extract secret/router-certs-default -n openshift-ingress --confirm
$ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt -n openshift-config
次のコマンドを入力して、Ceph RGW オブジェクトストレージを使用するようにイメージレジストリーを設定します。
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","s3":{"bucket":'\"${bucket_name}\"',"region":"us-east-1","regionEndpoint":'\"https://${route_host}\"',"virtualHostedStyle":false,"encrypt":false,"trustedCA":{"name":"image-registry-s3-bundle"}}}}}' --type=merge
3.7.3.5. Red Hat OpenShift Data Foundation で Noobaa ストレージを使用するための Image Registry Operator の設定
Red Hat OpenShift Data Foundation は、OpenShift イメージレジストリーで使用できる複数のストレージタイプを統合します。
- Ceph、共有および分散ファイルシステムとオンプレミスオブジェクトストレージ
- NooBaa。Multicloud Object Gateway を提供します。
このドキュメントでは、Noobaa ストレージを使用するようにイメージレジストリーを設定する手順の概要を説明します。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
-
oc
CLI がインストールされている。 - OpenShift Data Foundation Operator をインストールして、オブジェクトストレージと Noobaa オブジェクトストレージを提供しました。
手順
openshift-storage.noobaa.io
ストレージクラスを使用してオブジェクトバケットクレームを作成します。以下に例を示します。cat <<EOF | oc apply -f - apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: noobaatest namespace: openshift-storage 1 spec: storageClassName: openshift-storage.noobaa.io generateBucketName: noobaatest EOF
- 1
- あるいは、
openshift-image-registry
namespace を使用することもできます。
次のコマンドを入力して、バケット名を取得します。
$ bucket_name=$(oc get obc -n openshift-storage noobaatest -o jsonpath='{.spec.bucketName}')
次のコマンドを入力して、AWS 認証情報を取得します。
$ AWS_ACCESS_KEY_ID=$(oc get secret -n openshift-storage noobaatest -o yaml | grep -w "AWS_ACCESS_KEY_ID:" | head -n1 | awk '{print $2}' | base64 --decode)
$ AWS_SECRET_ACCESS_KEY=$(oc get secret -n openshift-storage noobaatest -o yaml | grep -w "AWS_SECRET_ACCESS_KEY:" | head -n1 | awk '{print $2}' | base64 --decode)
次のコマンドを入力して、
openshift-image-registry プロジェクト
の下にある新しいバケットの AWS 認証情報を使用して、秘密のimage-registry-private-configuration-user
を作成します。$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=${AWS_ACCESS_KEY_ID} --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=${AWS_SECRET_ACCESS_KEY} --namespace openshift-image-registry
次のコマンドを入力して、ルートホストを取得します。
$ route_host=$(oc get route s3 -n openshift-storage -o=jsonpath='{.spec.host}')
次のコマンドを入力して、入力証明書を使用する設定マップを作成します。
$ oc extract secret/$(oc get ingresscontroller -n openshift-ingress-operator default -o json | jq '.spec.defaultCertificate.name // "router-certs-default"' -r) -n openshift-ingress --confirm
$ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt -n openshift-config
次のコマンドを入力して、Nooba オブジェクトストレージを使用するようにイメージレジストリーを設定します。
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","s3":{"bucket":'\"${bucket_name}\"',"region":"us-east-1","regionEndpoint":'\"https://${route_host}\"',"virtualHostedStyle":false,"encrypt":false,"trustedCA":{"name":"image-registry-s3-bundle"}}}}}' --type=merge
3.7.4. Red Hat OpenShift Data Foundation で CephFS ストレージを使用するための Image Registry Operator の設定
Red Hat OpenShift Data Foundation は、OpenShift イメージレジストリーで使用できる複数のストレージタイプを統合します。
- Ceph、共有および分散ファイルシステムとオンプレミスオブジェクトストレージ
- NooBaa。Multicloud Object Gateway を提供します。
このドキュメントでは、CephFS ストレージを使用するようにイメージレジストリーを設定する手順の概要を説明します。
CephFS は persistent volume claim (PVC) ストレージを使用します。Ceph RGW や Noobaa など、他のオプションが利用可能な場合は、イメージレジストリーストレージに PVC を使用することは推奨しません。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
-
oc
CLI がインストールされている。 - オブジェクトストレージと CephFS ファイルストレージを提供するために、OpenShift Data Foundation Operator をインストールしました。
手順
cephfs
ストレージクラスを使用する PVC を作成します。以下に例を示します。cat <<EOF | oc apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: registry-storage-pvc namespace: openshift-image-registry spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: ocs-storagecluster-cephfs EOF
次のコマンドを入力して、CephFS ファイルシステムストレージを使用するようにイメージレジストリーを設定します。
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","pvc":{"claim":"registry-storage-pvc"}}}}' --type=merge