5.2. スケーラビリティーとセキュリティーの設定


イメージキャッシュとスパースイメージアップロードを設定することで、Image サービス (glance) 操作のスケーラビリティーを改善できます。イメージの署名と検証、メタデータ定義 (metadef) API などのセキュリティー機能を設定できます。

Image サービス API (glanceAPI) のキャッシュメカニズムを使用して、イメージのコピーを glanceAPI サーバーに保存し、それらを自動的に取得することでリソースの負荷を軽減し、スケーラビリティーを高めることができます。

前提条件

  • ワークステーションに oc コマンドラインツールがインストール済みである。
  • cluster-admin 権限を持つユーザーとして、RHOSO コントロールプレーンにアクセスできるワークステーションにログオン済みである。

5.2.1. イメージキャッシュによるスケーラビリティーの向上

Image サービス API (glanceAPI) キャッシュメカニズムを使用して、イメージのコピーを glanceAPI サーバーに保存し、それらを自動的に取得します。イメージキャッシュを使用すると、API はバックエンドストレージから同じイメージを複数回取得する必要がなくなります。イメージコピーの自動取得により、リソースの負荷が軽減され、スケーラビリティーとパフォーマンスが向上します。

イメージキャッシュを管理するには、次の 2 つのファイルを使用します。

  • サーバーを設定するには、glance-api.conf を使用します。
  • ユーティリティーを設定するには、glance-cache.conf を使用します。

次のオプションは両方の設定ファイルに存在します。これらのオプションは、両方のファイルで同じ値である必要があります。

Expand
表5.1 イメージキャッシュの設定オプション
オプション説明デフォルト

image_cache_dir

Image サービス (glance) がキャッシュデータを保存するベースディレクトリー。

ありません。設定する必要があります。

image_cache_sqlite_db

キャッシュ管理に使用する sqlite ファイルデータベースへのパス。このパスは、image_cache_dir ディレクトリーからの相対パスです。

cache.db

image_cache_driver

キャッシュ管理に使用されるドライバー。

sqlite

image_cache_max_size

glance-cache-pruner は、ここで指定されたキャッシュサイズ値をバイト数が下回るまで、最も古いイメージを削除します。

10 GB

image_cache_stall_time

不完全なイメージが削除されるまでキャッシュ内に留まる時間。

1 day

cron ジョブを使用して、定期的に最も古いイメージを削除するために glance-cache-pruner を実行できます。また、cron ジョブを使用して glance-cache-cleaner を実行し、イメージキャッシュの書き込みが完了しなかった、あるいはイメージファイルがディスクに正常に書き込まれなかったために停止状態または無効な状態になっているイメージファイルをクリーンアップすることもできます。

以下の値は、glance-cache.conf ファイルに固有の値であり、プリフェッチャーを正常に実行するためにのみ必要です。

  • filesystem_store_datadir: ファイルシステムストアを使用している場合は、このパラメーターを使用します。パラメーターはデータが保存される場所を指します。
  • filesystem_store_datadirs: このパラメーターを使用して、複数のファイルシステムストアを指します。

Red Hat OpenStack Services on OpenShift (RHOSO) では、以前の Red Hat OpenStack Platform バージョンのように定期的なジョブを使用してキューに入れられたイメージをプリフェッチする代わりに、イメージをキューに入れて即時にキャッシュすることができます。

5.2.1.1. イメージキャッシュの有効化

Image サービス (glance) でイメージキャッシュを有効にするには、OpenStackControlPlane カスタムリソース (CR) ファイルの glance テンプレートの imageCache セクションに Size パラメーターを追加して、キャッシュに割り当てるサイズを指定します。

手順

  1. OpenStackControlPlane CR ファイル (openstack_control_plane.yaml) を開き、次のパラメーターを glance テンプレートに追加します。

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
        ...
      glance:
        template:
          databaseInstance: openstack
          databaseUser: glance
          customServiceConfig: |
            ...
          imageCache:
            size: 10Gi
          storage:
            storageRequest: 10Gi
            storageClass: ""
          glanceAPIs:
            default:
      ...
    Copy to Clipboard Toggle word wrap
  2. コントロールプレーンを更新します。

    $ oc apply -f openstack_control_plane.yaml -n openstack
    Copy to Clipboard Toggle word wrap
  3. RHOCP が OpenStackControlPlane CR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。

    $ oc get openstackcontrolplane -n openstack
    Copy to Clipboard Toggle word wrap

    ステータスが "Setup complete" であれば、OpenStackControlPlane リソースが作成されています。

    ヒント

    デプロイの進行状況を追跡するには、get コマンドの末尾に -w オプションを追加します。

5.2.1.2. イメージキャッシュのコマンドオプション

glance クライアントを使用してキャッシュされたイメージを管理できます。イメージキャッシュは各ノードに対してローカルであるため、キャッシュ操作は各ノードに対してローカルに実行する必要があります。Red Hat OpenStack Services on OpenShift (RHOSO) デプロイメントに 3 個、5 個、または 7 個のコントローラーを備えた高可用性がある場合は、キャッシュ操作の実行時に --os-image-url オプションを使用してホストアドレスを指定します。

以下に例を示します。

$ glance --os-image-url=<image_url> cache-list
Copy to Clipboard Toggle word wrap
  • <image_url> は、たとえば "http://REPLICA""0.{REPLICA}""0.REPLICA""0.DOMAIN:9292" のようなイメージの URL に置き換えます。その場合の REPLICA は、データを所有しない glanceAPI レプリカであり、DOMAIN は特定の glanceAPI に関連付けられたサービスホスト名です。

cachemanage ミドルウェアが有効になっている場合は、glance-cache-manage プログラムを使用してキャッシュされたイメージを管理できます。イメージキャッシュが含まれるホストとは別のホストから、glance-cache-manage プログラムを実行できます。

Expand
表5.2 glance クライアント使用時のイメージキャッシュのコマンドオプション
コマンド説明

$ glance --os-image-url=<image_url> cache-queue <image_id>

即時にキャッシュするためにイメージをキューに入れます。

$ glance --os-image-url=<image_url> cache-list

現在キャッシュされているすべてのイメージをリスト表示します。

$ glance --os-image-url=<image_url> cache-delete <image_id> [<image_id> ...]

キャッシュディレクトリーから、キャッシュされたイメージまたはキャッシュ待ちのキューに入っているイメージを 1 つ以上削除します。

$ glance --os-image-url=<image_url> cache-clear

キャッシュディレクトリーから、キャッシュされたイメージとキャッシュ待ちのキューに入っているイメージをすべて削除します。

$ glance --os-image-url=<image_url> --target cached

キャッシュディレクトリーから、キャッシュされたイメージをすべて削除します。

$ glance --os-image-url=<image_url> cache-clear --target queued

キャッシュディレクトリーから、キャッシュキューに入れられたすべてのイメージを削除します。

Expand
表5.3 glance-cache-manage プログラム使用時のイメージキャッシュのコマンドオプション
コマンド説明

$ glance-cache-manage --host=<host> list-cached

特定のホストに現在キャッシュされているすべてのイメージをリスト表示します。

$ glance-cache-manage --host=<host> list-queued

特定のホストでキャッシュするために現在キューに入れられているすべてのイメージをリスト表示します。

$ glance-cache-manage --host=<host> queue-image

特定のホストにキャッシュするためにイメージをキューに入れます。

$ glance-cache-manage --host=<host> delete-cached-image

特定のホストのキャッシュまたはキャッシュキューからイメージを削除します。

$ glance-cache-manage --host=<host> delete-all-cached-images

特定のホスト上のキャッシュからすべてのイメージを削除します。

$ glance-cache-manage --host=<host> delete-queued-image

特定のホストのキャッシュキューからイメージを削除しました。

$ glance-cache-manage --host=<host> delete-all-queued-images

特定のホストのキャッシュキューからすべてのイメージを削除しました。

5.2.2. スパースイメージのアップロードを有効にする

Red Hat Ceph Storage RADOS Block Device (RBD) を Image サービス (glance) のストレージバックエンドとして使用する場合、スパースイメージアップロードを使用してネットワークトラフィックを削減し、ストレージスペースを節約できます。この機能は、分散コンピュートノード (DCN) 環境で役立ちます。スパースイメージファイルの場合、Image サービスは null バイトシーケンスを書き込みません。Image サービスは、指定されたオフセットでデータを書き込みます。ストレージバックエンドは、これらのオフセットを、実際にはストレージスペースを使用しない null バイトとして解釈します。

前提条件

  • Red Hat OpenStack Services on OpenShift (RHOSO) デプロイメントは、Ceph Storage RBD を Image サービスのストレージバックエンドとして使用する。

手順

  1. OpenStackControlPlane CR ファイル (openstack_control_plane.yaml) を開き、次のパラメーターを glance テンプレートに追加します。rbd_thin_provisioning パラメーターを True に設定して、スパースイメージのアップロードを有効にします。

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
        ...
      glance:
        template:
          databaseInstance: openstack
          databaseUser: glance
          customServiceConfig: |
            [DEFAULT]
            enabled_backends = <backend_name>:rbd
            enabled_import_methods=[web-download]
            [glance_store]
            default_backend = <backend_name>
            [<backend_name>]
            rbd_store_ceph_conf = /etc/ceph/ceph.conf
            store_description = "RBD backend"
            rbd_store_pool = images
            rbd_store_user = openstack
            rbd_thin_provisioning = True
      ...
    Copy to Clipboard Toggle word wrap
    • <backend_name> は、デフォルトのバックエンドの名前に置き換えます。
  2. コントロールプレーンを更新します。

    $ oc apply -f openstack_control_plane.yaml -n openstack
    Copy to Clipboard Toggle word wrap
  3. RHOCP が OpenStackControlPlane CR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。

    $ oc get openstackcontrolplane -n openstack
    Copy to Clipboard Toggle word wrap

    ステータスが "Setup complete" であれば、OpenStackControlPlane リソースが作成されています。

    ヒント

    デプロイの進行状況を追跡するには、get コマンドの末尾に -w オプションを追加します。

検証

イメージをインポートしてそのサイズを確認し、スパースイメージのアップロードを検証することができます。

  1. イメージファイルをローカルにダウンロードします。

    $ wget <file_location>/<file_name>
    Copy to Clipboard Toggle word wrap
    • <file_location> をファイルの場所に置き換えます。
    • <file_name> は、ファイルの名前に置き換えます。

      以下に例を示します。

      $ wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2
      Copy to Clipboard Toggle word wrap
  2. アップロードするイメージのディスクサイズと仮想サイズを確認します。

    $ qemu-img info <file_name>
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    $ qemu-img info CentOS-6-x86_64-GenericCloud-1508.qcow2
    
    image: CentOS-6-x86_64-GenericCloud-1508.qcow2
    file format: qcow2
    virtual size: 8 GiB (8589934592 bytes)
    disk size: 1.09 GiB
    cluster_size: 65536
    Format specific information:
    compat: 0.10
    refcount bits: 1
    Copy to Clipboard Toggle word wrap
  3. イメージをインポートします。

    $ glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>
    Copy to Clipboard Toggle word wrap
  4. イメージ ID を記録します。後続のステップで必要になります。
  5. イメージがインポートされ、アクティブ状態にあることを確認します。

    • ワークステーションから OpenStackClient Pod のリモートシェルにアクセスします。

      $ oc rsh -n openstack openstackclient
      Copy to Clipboard Toggle word wrap
    • イメージを表示します。

      $ openstack image show <image_id>
      Copy to Clipboard Toggle word wrap
    • openstackclient Pod を終了します。

      $ exit
      Copy to Clipboard Toggle word wrap
  6. Ceph Storage ノードから、イメージのサイズが、ステップ 2 出力の仮想サイズよりも小さいことを確認します。

    $ sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }'
    
    1.03906 GB
    Copy to Clipboard Toggle word wrap

5.2.3. Image サービス API の追加

複数のワークロードをサポートしたり、既存の glanceAPI とそのバックエンドサービスのライフサイクルを維持したりするために、新しい Image サービス API (glanceAPI) を Red Hat OpenStack Services on OpenShift (RHOSO) デプロイメントに追加できます。たとえば、デプロイメントに Red Hat Ceph Storage などの split レイアウトのバックエンドと NFS などの single レイアウトのバックエンドがある場合、single または split レイアウトに変更を加えることはできません。変更は PersistentVolumeClaims (PVC) などの設定要素に影響するためです。代わりに、バックエンドを切り替えるための新しい glanceAPI を追加できます。

手順

  1. OpenStackControlPlane CR ファイル openstack_control_plane.yaml を開き、glance テンプレートにパラメーターを追加して新しい glanceAPI を設定します。次の例では、Object Storage サービス (swift) をバックエンドとして使用する既存の default API があり、OpenStackControlPlane を更新して新しい default1 API をデプロイします。

    ...
    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
      glance:
        template:
          databaseInstance: openstack
          keystoneEndpoint: default
          glanceAPIs:
            default:
              customServiceConfig: |
                [DEFAULT]
                enabled_backends = <backend_name>:swift
                [glance_store]
                default_backend = <backend_name>
                [<backend_name>]
                swift_store_create_container_on_put = True
                swift_store_auth_version = 3
                swift_store_auth_address = {{ .KeystoneInternalURL }}
                swift_store_endpoint_type = internalURL
                swift_store_user = service:glance
                swift_store_key = {{ .ServicePassword }}
              preserveJobs: false
              replicas: 3
            default1:
              type: single
              replicas: 1
          storage:
            storageRequest: 10G
    ...
    Copy to Clipboard Toggle word wrap
    • <backend_name> は、デフォルトのバックエンドの名前に置き換えます。
  2. コントロールプレーンを更新します。

    $ oc apply -f openstack_control_plane.yaml -n openstack
    Copy to Clipboard Toggle word wrap
  3. RHOCP が OpenStackControlPlane CR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。

    $ oc get openstackcontrolplane -n openstack
    Copy to Clipboard Toggle word wrap

    ステータスが "Setup complete" であれば、OpenStackControlPlane リソースが作成されています。

    ヒント

    デプロイの進行状況を追跡するには、get コマンドの末尾に -w オプションを追加します。

5.2.4. Image サービス API の廃止

既存の Image サービス API (glanceAPI) を廃止するには、次の操作を行う必要があります。

  • glanceAPI CR とそれに関連するオブジェクト (pod や StatefulSets など) を削除します。
  • アクティブな glanceAPI を指すように keystoneEndpoint を更新します。

OpenStackControlPlane 内の唯一の glanceAPI である場合は、glanceAPI を削除することはできません。また、OpenStackControlPlane CR ファイル内の keystoneEndpoint パラメーターを、存在しない glanceAPI にポイントすることもできません。

glanceAPI を削除すると、API に関連付けられている PersistentVolumeClaims (PVC) は保持されるため、必要に応じて以前の設定で API を再度追加できます。

手順

  1. OpenStackControlPlane に複数の glanceAPI がデプロイされていることを確認します。

    $ oc -n openstack get oscp  $(oc get oscp -o custom-columns=NAME:.metadata.name --no-headers) -o jsonpath='{.spec.glance.template.glanceAPIs}' | jq
    Copy to Clipboard Toggle word wrap
  2. Keystone カタログに登録されている現在の glanceAPI を特定します。

    $ oc -n openstack get oscp $(oc get oscp -o custom-columns=NAME:.metadata.name --no-headers) -o jsonpath='{.spec.glance.template.keystoneEndpoint}'
    Copy to Clipboard Toggle word wrap
  3. 新しい glanceAPI に Keystone エンドポイントがあることを確認します。

    $ oc exec -it openstackclient bash -- openstack endpoint list | grep image
    Copy to Clipboard Toggle word wrap
  4. 削除する glanceAPI が Keystone カタログに登録されている API である場合は、OpenStackControlPlane CR ファイルの openstack_control_plane.yaml を開いて API を廃止し、keystoneEndpoint パラメーターを更新します。次の例では、default という名前の glanceAPI を削除し、keystoneEndpoint パラメーターを default1 に更新します。

    ...
    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
      glance:
        template:
          keystoneEndpoint: default1
          glanceAPIs:
            default1:
              type: single
              replicas: 1
          storage:
            storageRequest: 10G
    ...
    Copy to Clipboard Toggle word wrap
  5. コントロールプレーンを更新します。

    $ oc apply -f openstack_control_plane.yaml -n openstack
    Copy to Clipboard Toggle word wrap
  6. RHOCP が OpenStackControlPlane CR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。

    $ oc get openstackcontrolplane -n openstack
    Copy to Clipboard Toggle word wrap

    ステータスが "Setup complete" であれば、OpenStackControlPlane リソースが作成されています。

    ヒント

    デプロイの進行状況を追跡するには、get コマンドの末尾に -w オプションを追加します。

5.2.5. イメージ署名の検証

イメージ署名の検証を使用すると、設定されたバックエンドにイメージを保存する前に、Image サービス (glance) にアップロードされたイメージを検証できます。イメージの検証に失敗した場合、アップロードは停止され、イメージは削除されます。

イメージの整合性と信頼性を保護するために、署名と公開鍵証明書をイメージプロパティーとして保存できます。

署名検証用のシークレットを Key Manager サービス (barbican) に保存すると、Image サービスは Identity サービス (keystone) が提供する内部エンドポイントを介して Key Manager サービスと対話します。

[key_manager]
backend = barbican

[barbican]
auth_endpoint={{ .KeystoneInternalURL }}
barbican_endpoint_type=internal
Copy to Clipboard Toggle word wrap

Compute サービス (nova) などの他のサービスは、ユーザーが Image サービスからイメージをダウンロードするときに、イメージプロパティーを使用してデータ検証を実行できます。

注記

Compute サービス (nova) が仮想マシンのディスクの保存に Ceph RADOS ブロックデバイス (RBD) を使用している場合、イメージの署名と検証はサポートされません。

署名付きイメージの作成については、セキュリティー操作の実行Image サービス (glance) イメージの署名 を参照してください。

5.2.6. metadef API の保護

Red Hat OpenStack Services on OpenShift (RHOSO) では、メタデータ定義 (metadef) API を使用してキーと値のペアおよびタグメタデータを定義できます。作成できる metadef namespace、オブジェクト、プロパティー、リソース、またはタグの数に制限はありません。

Image サービスのポリシーは metadef API を制御します。デフォルトでは、管理者のみが metadef API を作成、更新、または削除 (CUD) できます。この制限により、metadef API が権限のないユーザーに情報を公開することが防止され、悪意のあるユーザーが Image サービス (glance) データベースに無制限のリソースを埋め込み、サービス妨害 (DoS) 型の攻撃を引き起こすリスクが軽減されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat