第5章 Image サービス (glance) のカスタマイズ


Image サービス (glance) をデプロイした後、イメージのインポートワークフローをカスタマイズし、スケーラビリティー機能とセキュリティー機能を設定できます。

前提条件

  • ワークステーションに oc コマンドラインツールがインストール済みである。
  • cluster-admin 権限を持つユーザーとして、RHOSO コントロールプレーンにアクセスできるワークステーションにログオン済みである。
  • Image サービスの glance CLI コマンドを使用するには、コマンドの実行前に、$ source ./cloudrc というコマンドで cloudrc ファイルを読み込みます。cloudrc ファイルが存在しない場合は、作成する必要があります。詳細は、cloudrc ファイルの作成 を参照してください。

5.1. イメージインポートワークフローの設定

ユーザーは、デフォルトの glance-direct または web-download インポートメソッドを使用して、独自のイメージを Image サービス (glance) にアップロードできます。Image サービスに複数の Red Hat Ceph Storage バックエンドがある場合は、copy-image インポートメソッドも有効にできます。アップロードされたイメージがストレージバックエンドでアクティブになる前にステージング領域で監視したり、メタデータの Inject Image Metadata プラグインやイメージ形式の Image Conversion プラグインなど、プラグインを実行してユーザーイメージを検出可能にするようにインポートワークフローを設定したりできます。

5.1.1. 分散イメージインポート

分散イメージのインポートには glance-direct イメージインポートメソッドを使用できます。これは、Red Hat OpenStack Services on OpenShift (RHOSO) ではデフォルトで有効になっています。

glance-direct イメージインポートメソッドを使用する場合、ユーザーは、API ワーカーノード (またはレプリカ) がイメージをステージングする共有ストレージ領域を必要とせずに、ローカルイメージを Image サービス (glance) にアップロードできます。代わりに、個々の API ワーカーが独自の共有されていないローカルステージングディレクトリーを持つため、ステージングは分散されます。イメージデータを所有する API ワーカーは、イメージのインポートを実行する API ワーカーと同じです。

イメージが作成されステージングされると、Image サービスはステージング API ワーカーの URL をデータベースに記録します。この URL を使用すると、他の API ワーカーは、クライアントからのイメージインポート要求をイメージデータを持つワーカーにプロキシーし、インポート操作を実行できます。このワークフローにより、API ワーカーノードを高可用性 (HA) のために分離し、分散コンピュートノード (DCN) 環境のために地理的に分散することができます。

5.1.2. Web ダウンロードソースの URI 許可リストとブロックリスト

OpenStackControlPlane カスタムリソース (CR) ファイルの glance テンプレートで URI 許可リストとブロックリストを指定することにより、Web ダウンロードイメージのインポートソースを制限できます。

3 段階のレベルで、イメージソースの URI を許可またはブロックすることができます。

  • スキームレベル (allowed_schemes、disallowed_schemes)
  • ホストレベル (allowed_hosts、disallowed_hosts)
  • ポートレベル (allowed_ports、disallowed_ports)

いずれかのレベルで許可リストとブロックリストの両方を指定した場合、許可リストが優先され、ブロックリストは無視されます。URI 許可リストの例は、web-import ソースの URI 許可リストを設定する を参照してください。

URI 検証の決定ロジック

Image サービスは、以下の判断ロジックを使用してイメージソースの URI を検証します。

  1. スキームを確認する。

    1. スキームが定義されていない場合: 拒否する。
    2. 許可リストがあり、そのスキームが許可リストに記載されていない場合: 拒否する。記載されている場合: c 項をスキップして 2 項に進む。
    3. ブロックリストがあり、そのスキームがブロックリストに記載されている場合: 拒否する。
  2. ホスト名を確認する。

    1. ホスト名が定義されていない場合: 拒否する。
    2. 許可リストがあり、そのホスト名が許可リストに記載されていない場合: 拒否する。記載されている場合: c 項をスキップして 3 項に進む。
    3. ブロックリストがあり、そのホスト名がブロックリストに記載されている場合: 拒否する。
  3. URI にポートが含まれていれば、ポートを確認する。

    1. 許可リストがあり、そのポートが許可リストに記載されていない場合: 拒否する。記載されている場合: b 項をスキップして 4 項に進む。
    2. ブロックリストがあり、そのポートがブロックリストに記載されている場合: 拒否する。
  4. 有効な URI として受け入れる。

許可リストに追加するか、ブロックリストに追加しないことでスキームを許可した場合、スキームのデフォルトポートを使用する (つまりポートを含めない) URI がすべて許可されます。URI にポートが含まれている場合、URI はデフォルトの決定ロジックに従って検証されます。

5.1.2.1. URI 許可リストとブロックリストのデフォルト設定

次の許可リストとブロックリストの値は、Red Hat OpenStack Services on OpenShift (RHOSO) デプロイメントにおける web-download イメージのインポートメソッドのデフォルト設定です。

  • allowed_schemes: [http, https]
  • disallowed_schemes: ブランク
  • allowed_hosts: ブランク
  • disallowed_hosts: ブランク
  • allowed_ports: [80, 443]
  • disallowed_ports: ブランク

デフォルト値を使用する場合、ユーザーは http または https スキームを使用してのみ URI にアクセスでき、ポート 80443 のみを指定できます。(ユーザーはポートを指定する必要はありませんが、指定する場合には 80 または 443 のどちらかでなければなりません)。

5.1.2.2. web-import ソースの URI 許可リストを設定する

OpenStackControlPlane カスタムリソース (CR) ファイルの glance テンプレートで URI 許可リストとブロックリストを指定することで、web-import イメージダウンロードのソースを設定します。

この例では、イメージのアップロードに FTP サーバーを使用しています。FTP のデフォルトポートは 21 です。

手順

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

    glance:
      template:
        customServiceConfig: |
          [DEFAULT]
          allowed_schemes = [http,https,ftp]
          disallowed_schemes = []
          allowed_hosts = []
          disallowed_hosts = []
          allowed_ports = [80,443]
          disallowed_ports = []
        glanceAPIs:
          ...
    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
    ヒント

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

5.1.3. copy-image のインポート方法の設定

Image サービス (glance) を、複数の Red Hat Ceph Storage ストアに既存イメージをコピーするように設定できます。

手順

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

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
        ...
      glance:
        enabled: true
        template:
          customServiceConfig: |
            [DEFAULT]
            enabled_import_methods=web-download,glance-direct,copy-image
          glanceAPIs:
            ...
    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.1.4. ディスクフォーマットの有効化または拒否

ディスクフォーマットを有効化または拒否するように、Image サービス (glance) を設定できます。たとえば、RAW および ISO ディスクフォーマットのみを有効にしたり、QCOW2 ディスクフォーマットのイメージを拒否したりできます。

手順

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

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
        ...
      glance:
        enabled: true
        template:
          databaseInstance: openstack
          databaseUser: glance
          customServiceConfig: |
             [image_format]
            disk_formats=<raw>,<iso>
          glanceAPIs:
            ...
    Copy to Clipboard Toggle word wrap
    • <raw><iso> を、有効にするフォーマットに置き換えます。その場合に選択できるサポート対象ディスクフォーマットは、none、ami、ari、aki、vhd、vhdx、vmdk、raw、qcow2、vdi、iso、ploop です。
  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.1.5. イメージインポートワークフローのプラグインを有効にする

イメージインポートワークフローでプラグインを有効にするには、glance-image-import.conf ファイルで image_import_plugins オプションを設定します。プラグインは並行して実行されません。これらは、image_import_plugins リストに表示される順序で実行されます。

Red Hat Ceph Storage を Image サービスのバックエンドとして使用する場合、デフォルトでイメージ変換が有効になります。

手順

  • glance-image-import.conf ファイルでプラグインを設定します。この例では、メタデータプロパティーを注入する前に、イメージを RAW 形式に変換します。

    [image_import_opts]
    image_import_plugins = ['image_conversion','inject_image_metadata']
    
    [image_conversion]
    output_format = raw
    
    [inject_metadata_properties]
    ignore_user_roles = admin,...
    inject = "property1":"value1","property2":"value2",...
    Copy to Clipboard Toggle word wrap

5.1.5.1. イメージのインポートにメタデータを注入してインスタンスの起動場所を制御する

Inject Image Metadata プラグインを有効にすることで、クラウドユーザーがインポートしたイメージにメタデータを適用し、イメージから起動されるインスタンスを特定のコンピュートノードに配置できます。

Inject Image Metadata プラグインには 2 つのパラメーターが含まれています。

  • ignore_user_roles は、プラグインが無視する Identity サービス (keystone) のロールのコンマ区切りリストです。イメージインポートの呼び出しを行うユーザーにこれらのロールが設定されている場合、プラグインはイメージに属性を注入しません。
  • inject は、インポートされたイメージのイメージレコードに注入される属性と値のコンマ区切りリストです。

手順

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

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
        ...
      glance:
        enabled: true
        template:
          databaseInstance: openstack
          databaseUser: glance
          customServiceConfig: |
            [DEFAULT]
            enabled_backends = <backend_name>:rbd
            enabled_import_methods=[web-download,glance-direct]
            [image_import_opts]
            image_import_plugins = ['inject_image_metadata']
            [inject_metadata_properties]
            ignore_user_roles = <admin>,...
            inject = "<property1>":"<value1>","<property2>":"<value2>",...
      ...
    Copy to Clipboard Toggle word wrap
    • <backend_name> は、デフォルトのバックエンドの名前に置き換えます。
    • <admin> を、プラグインが無視するユーザーロールに置き換えます。
    • <property1><value1><property2><value2> などを、イメージに注入するプロパティーと値に置き換えます。
  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.1.6. イメージ通知を有効にする

イメージのライフサイクル中に発生するさまざまなイベントについて、Image サービス (glance) で通知を有効化できます。これらの通知は、次の目的で使用できるテレメトリーデータを供給します。

  • 監査、トラブルシューティング、監視操作
  • メトリクスの収集と処理のために Ceilometer などの他のサービスと統合する

Image サービスは、設定済みのメッセージキューへの通知配信に RabbitMQ メッセージブローカーソフトウェアを使用します。通知に使用する RabbitMQ インスタンスを指定すると、glance-operator00-config.conf ファイルの oslo_notifications セクションを自動的に更新します。この更新により、通知ドライバーが noop (通知なし) から messagingv2 (通知あり) に切り替わります。

Image サービス (glance) で通知を有効にするには、OpenStackControlPlane カスタムリソース (CR) ファイルの glance テンプレートに notificationBusInstance パラメーターを追加して、トランスポート URL を要求するために使用する RabbitMQ インスタンス名を指定します。

手順

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

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    spec:
      ...
      glance:
        template:
          databaseInstance: openstack
          databaseUser: glance
          notificationBusInstance: rabbitmq
          customServiceConfig: |
      ...
    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 オプションを追加します。

  4. オプション: 00-config.conf ファイルをチェックして、通知設定が更新されたことを確認します。

    以下に例を示します。

    $ oc rsh -c glance-httpd <glance-default-external-api-0> grep "oslo_messaging_notifications" /etc/glance/glance.conf.d/00-config.conf -A 2
    Copy to Clipboard Toggle word wrap
    • <glance-default-external-api-0> は Pod 名に置き換えます。

      出力例:

      [oslo_messaging_notifications]
      driver=messagingv2
      transport_url = rabbit://<user>:<pwd>@rabbitmq.openstack.svc:5671/?ssl=1
      Copy to Clipboard Toggle word wrap

      glance テンプレートから notificationBusInstance パラメーターを削除し、コントロールプレーンを更新することで、通知を無効にできます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat