第5章 Image サービス (glance) のカスタマイズ
Image サービス (glance) をデプロイした後、イメージのインポートワークフローをカスタマイズし、スケーラビリティー機能とセキュリティー機能を設定できます。
前提条件
- 
					ワークステーションに 
ocコマンドラインツールがインストール済みである。 - 
					
cluster-admin権限を持つユーザーとして、RHOSO コントロールプレーンにアクセスできるワークステーションにログオン済みである。 - 
					Image サービスの 
glanceCLI コマンドを使用するには、コマンドの実行前に、$ 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 を検証します。
スキームを確認する。
- スキームが定義されていない場合: 拒否する。
 - 許可リストがあり、そのスキームが許可リストに記載されていない場合: 拒否する。記載されている場合: c 項をスキップして 2 項に進む。
 - ブロックリストがあり、そのスキームがブロックリストに記載されている場合: 拒否する。
 
ホスト名を確認する。
- ホスト名が定義されていない場合: 拒否する。
 - 許可リストがあり、そのホスト名が許可リストに記載されていない場合: 拒否する。記載されている場合: c 項をスキップして 3 項に進む。
 - ブロックリストがあり、そのホスト名がブロックリストに記載されている場合: 拒否する。
 
URI にポートが含まれていれば、ポートを確認する。
- 許可リストがあり、そのポートが許可リストに記載されていない場合: 拒否する。記載されている場合: b 項をスキップして 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 にアクセスでき、ポート 80 と 443 のみを指定できます。(ユーザーはポートを指定する必要はありませんが、指定する場合には 80 または 443 のどちらかでなければなりません)。
					
5.1.2.2. web-import ソースの URI 許可リストを設定する リンクのコピーリンクがクリップボードにコピーされました!
						OpenStackControlPlane カスタムリソース (CR) ファイルの glance テンプレートで URI 許可リストとブロックリストを指定することで、web-import イメージダウンロードのソースを設定します。
					
この例では、イメージのアップロードに FTP サーバーを使用しています。FTP のデフォルトポートは 21 です。
手順
OpenStackControlPlaneカスタムリソース CR ファイル (openstack_control_plane.yaml) を開き、glanceテンプレートに次のパラメーターを追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
										
ftpはallowed_schemesのリストに含まれているため、イメージリソースへの URL ftp://example.org/some/resource が許可されます。 - 
										21 は 
allowed_portsのリストにないため、同じイメージリソースへの URL である ftp://example.org:21/some/resource は拒否されます。 
- 
										
 コントロールプレーンを更新します。
oc apply -f openstack_control_plane.yaml -n openstack
$ oc apply -f openstack_control_plane.yaml -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOCP が
OpenStackControlPlaneCR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。oc get openstackcontrolplane -n openstack
$ oc get openstackcontrolplane -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントデプロイの進行状況を追跡するには、
getコマンドの末尾に-wオプションを追加します。
5.1.3. copy-image のインポート方法の設定 リンクのコピーリンクがクリップボードにコピーされました!
Image サービス (glance) を、複数の Red Hat Ceph Storage ストアに既存イメージをコピーするように設定できます。
手順
OpenStackControlPlaneCR ファイル (openstack_control_plane.yaml) を開き、glanceテンプレートのcustomServiceConfigに次のパラメーターを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンを更新します。
oc apply -f openstack_control_plane.yaml -n openstack
$ oc apply -f openstack_control_plane.yaml -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOCP が
OpenStackControlPlaneCR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。oc get openstackcontrolplane -n openstack
$ oc get openstackcontrolplane -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスが "Setup complete" であれば、
OpenStackControlPlaneリソースが作成されています。ヒントデプロイの進行状況を追跡するには、
getコマンドの末尾に-wオプションを追加します。
5.1.4. ディスクフォーマットの有効化または拒否 リンクのコピーリンクがクリップボードにコピーされました!
ディスクフォーマットを有効化または拒否するように、Image サービス (glance) を設定できます。たとえば、RAW および ISO ディスクフォーマットのみを有効にしたり、QCOW2 ディスクフォーマットのイメージを拒否したりできます。
手順
OpenStackControlPlaneCR ファイル (openstack_control_plane.yaml) を開き、次のパラメーターをglanceテンプレートに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									
<raw>と<iso>を、有効にするフォーマットに置き換えます。その場合に選択できるサポート対象ディスクフォーマットは、none、ami、ari、aki、vhd、vhdx、vmdk、raw、qcow2、vdi、iso、ploop です。 
- 
									
 コントロールプレーンを更新します。
oc apply -f openstack_control_plane.yaml -n openstack
$ oc apply -f openstack_control_plane.yaml -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOCP が
OpenStackControlPlaneCR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。oc get openstackcontrolplane -n openstack
$ oc get openstackcontrolplane -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスが "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 形式に変換します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
5.1.5.1. イメージのインポートにメタデータを注入してインスタンスの起動場所を制御する リンクのコピーリンクがクリップボードにコピーされました!
Inject Image Metadata プラグインを有効にすることで、クラウドユーザーがインポートしたイメージにメタデータを適用し、イメージから起動されるインスタンスを特定のコンピュートノードに配置できます。
Inject Image Metadata プラグインには 2 つのパラメーターが含まれています。
- 
								
ignore_user_rolesは、プラグインが無視する Identity サービス (keystone) のロールのコンマ区切りリストです。イメージインポートの呼び出しを行うユーザーにこれらのロールが設定されている場合、プラグインはイメージに属性を注入しません。 - 
								
injectは、インポートされたイメージのイメージレコードに注入される属性と値のコンマ区切りリストです。 
手順
OpenStackControlPlaneCR ファイル (openstack_control_plane.yaml) を開き、次のパラメーターをglanceテンプレートに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
										
<backend_name>は、デフォルトのバックエンドの名前に置き換えます。 - 
										
<admin>を、プラグインが無視するユーザーロールに置き換えます。 - 
										
<property1>、<value1>、<property2>、<value2>などを、イメージに注入するプロパティーと値に置き換えます。 
- 
										
 コントロールプレーンを更新します。
oc apply -f openstack_control_plane.yaml -n openstack
$ oc apply -f openstack_control_plane.yaml -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOCP が
OpenStackControlPlaneCR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。oc get openstackcontrolplane -n openstack
$ oc get openstackcontrolplane -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスが "Setup complete" であれば、
OpenStackControlPlaneリソースが作成されています。ヒントデプロイの進行状況を追跡するには、
getコマンドの末尾に-wオプションを追加します。
5.1.6. イメージ通知を有効にする リンクのコピーリンクがクリップボードにコピーされました!
イメージのライフサイクル中に発生するさまざまなイベントについて、Image サービス (glance) で通知を有効化できます。これらの通知は、次の目的で使用できるテレメトリーデータを供給します。
- 監査、トラブルシューティング、監視操作
 - メトリクスの収集と処理のために Ceilometer などの他のサービスと統合する
 
					Image サービスは、設定済みのメッセージキューへの通知配信に RabbitMQ メッセージブローカーソフトウェアを使用します。通知に使用する RabbitMQ インスタンスを指定すると、glance-operator は 00-config.conf ファイルの oslo_notifications セクションを自動的に更新します。この更新により、通知ドライバーが noop (通知なし) から messagingv2 (通知あり) に切り替わります。
				
					Image サービス (glance) で通知を有効にするには、OpenStackControlPlane カスタムリソース (CR) ファイルの glance テンプレートに notificationBusInstance パラメーターを追加して、トランスポート URL を要求するために使用する RabbitMQ インスタンス名を指定します。
				
手順
OpenStackControlPlaneCR ファイル (openstack_control_plane.yaml) を開き、notificationBusInstanceパラメーターをglanceテンプレートに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンを更新します。
oc apply -f openstack_control_plane.yaml -n openstack
$ oc apply -f openstack_control_plane.yaml -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOCP が
OpenStackControlPlaneCR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。oc get openstackcontrolplane -n openstack
$ oc get openstackcontrolplane -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスが "Setup complete" であれば、
OpenStackControlPlaneリソースが作成されています。ヒントデプロイの進行状況を追跡するには、
getコマンドの末尾に-wオプションを追加します。オプション:
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
$ oc rsh -c glance-httpd <glance-default-external-api-0> grep "oslo_messaging_notifications" /etc/glance/glance.conf.d/00-config.conf -A 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow <glance-default-external-api-0>は Pod 名に置き換えます。出力例:
[oslo_messaging_notifications] driver=messagingv2 transport_url = rabbit://<user>:<pwd>@rabbitmq.openstack.svc:5671/?ssl=1
[oslo_messaging_notifications] driver=messagingv2 transport_url = rabbit://<user>:<pwd>@rabbitmq.openstack.svc:5671/?ssl=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow glanceテンプレートからnotificationBusInstanceパラメーターを削除し、コントロールプレーンを更新することで、通知を無効にできます。