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を使用します。 
次のオプションは両方の設定ファイルに存在します。これらのオプションは、両方のファイルで同じ値である必要があります。
| オプション | 説明 | デフォルト | 
|---|---|---|
|   
									  |   Image サービス (glance) がキャッシュデータを保存するベースディレクトリー。  |   ありません。設定する必要があります。  | 
|   
									  |   
									キャッシュ管理に使用する   |   
									  | 
|   
									  |   キャッシュ管理に使用されるドライバー。  |   
									  | 
|   
									  |   
									  |   10 GB  | 
|   
									  |   不完全なイメージが削除されるまでキャッシュ内に留まる時間。  |   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 パラメーターを追加して、キャッシュに割り当てるサイズを指定します。
					
手順
OpenStackControlPlaneCR ファイル (openstack_control_plane.yaml) を開き、次のパラメーターを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オプションを追加します。
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
$ glance --os-image-url=<image_url> cache-list
- 
								
<image_url>は、たとえば"http://REPLICA""0.{REPLICA}""0.REPLICA""0.DOMAIN:9292"のようなイメージの URL に置き換えます。その場合のREPLICAは、データを所有しないglanceAPIレプリカであり、DOMAINは特定のglanceAPIに関連付けられたサービスホスト名です。 
						cachemanage ミドルウェアが有効になっている場合は、glance-cache-manage プログラムを使用してキャッシュされたイメージを管理できます。イメージキャッシュが含まれるホストとは別のホストから、glance-cache-manage プログラムを実行できます。
					
| コマンド | 説明 | 
|---|---|
|   
										  |   即時にキャッシュするためにイメージをキューに入れます。  | 
|   
										  |   現在キャッシュされているすべてのイメージをリスト表示します。  | 
|   
										  |   キャッシュディレクトリーから、キャッシュされたイメージまたはキャッシュ待ちのキューに入っているイメージを 1 つ以上削除します。  | 
|   
										  |   キャッシュディレクトリーから、キャッシュされたイメージとキャッシュ待ちのキューに入っているイメージをすべて削除します。  | 
|   
										  |   キャッシュディレクトリーから、キャッシュされたイメージをすべて削除します。  | 
|   
										  |   キャッシュディレクトリーから、キャッシュキューに入れられたすべてのイメージを削除します。  | 
| コマンド | 説明 | 
|---|---|
|   
										  |   特定のホストに現在キャッシュされているすべてのイメージをリスト表示します。  | 
|   
										  |   特定のホストでキャッシュするために現在キューに入れられているすべてのイメージをリスト表示します。  | 
|   
										  |   特定のホストにキャッシュするためにイメージをキューに入れます。  | 
|   
										  |   特定のホストのキャッシュまたはキャッシュキューからイメージを削除します。  | 
|   
										  |   特定のホスト上のキャッシュからすべてのイメージを削除します。  | 
|   
										  |   特定のホストのキャッシュキューからイメージを削除しました。  | 
|   
										  |   特定のホストのキャッシュキューからすべてのイメージを削除しました。  | 
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 サービスのストレージバックエンドとして使用する。
 
手順
OpenStackControlPlaneCR ファイル (openstack_control_plane.yaml) を開き、次のパラメーターをglanceテンプレートに追加します。rbd_thin_provisioningパラメーターをTrueに設定して、スパースイメージのアップロードを有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									
<backend_name>は、デフォルトのバックエンドの名前に置き換えます。 
- 
									
 コントロールプレーンを更新します。
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オプションを追加します。
検証
イメージをインポートしてそのサイズを確認し、スパースイメージのアップロードを検証することができます。
イメージファイルをローカルにダウンロードします。
wget <file_location>/<file_name>
$ wget <file_location>/<file_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									
<file_location>をファイルの場所に置き換えます。 <file_name>は、ファイルの名前に置き換えます。以下に例を示します。
wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2
$ wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 
									
 アップロードするイメージのディスクサイズと仮想サイズを確認します。
qemu-img info <file_name>
$ qemu-img info <file_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージをインポートします。
glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>
$ glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - イメージ ID を記録します。後続のステップで必要になります。
 イメージがインポートされ、アクティブ状態にあることを確認します。
ワークステーションから
OpenStackClientPod のリモートシェルにアクセスします。oc rsh -n openstack openstackclient
$ oc rsh -n openstack openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを表示します。
openstack image show <image_id>
$ openstack image show <image_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstackclient Pod を終了します。
exit
$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
Ceph Storage ノードから、イメージのサイズが、ステップ 2 出力の仮想サイズよりも小さいことを確認します。
sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }'$ sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }' 1.03906 GBCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
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 を追加できます。
				
手順
OpenStackControlPlaneCR ファイルopenstack_control_plane.yamlを開き、glanceテンプレートにパラメーターを追加して新しいglanceAPIを設定します。次の例では、Object Storage サービス (swift) をバックエンドとして使用する既存のdefaultAPI があり、OpenStackControlPlaneを更新して新しいdefault1API をデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									
<backend_name>は、デフォルトのバックエンドの名前に置き換えます。 
- 
									
 コントロールプレーンを更新します。
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.2.4. Image サービス API の廃止 リンクのコピーリンクがクリップボードにコピーされました!
					既存の Image サービス API (glanceAPI) を廃止するには、次の操作を行う必要があります。
				
- 
							
glanceAPICR とそれに関連するオブジェクト (pod やStatefulSetsなど) を削除します。 - 
							アクティブな 
glanceAPIを指すようにkeystoneEndpointを更新します。 
					OpenStackControlPlane 内の唯一の glanceAPI である場合は、glanceAPI を削除することはできません。また、OpenStackControlPlane CR ファイル内の keystoneEndpoint パラメーターを、存在しない glanceAPI にポイントすることもできません。
				
					glanceAPI を削除すると、API に関連付けられている PersistentVolumeClaims (PVC) は保持されるため、必要に応じて以前の設定で API を再度追加できます。
				
手順
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$ oc -n openstack get oscp $(oc get oscp -o custom-columns=NAME:.metadata.name --no-headers) -o jsonpath='{.spec.glance.template.glanceAPIs}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow Keystone カタログに登録されている現在の
glanceAPIを特定します。oc -n openstack get oscp $(oc get oscp -o custom-columns=NAME:.metadata.name --no-headers) -o jsonpath='{.spec.glance.template.keystoneEndpoint}'$ 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 Copied! Toggle word wrap Toggle overflow 新しい
glanceAPIに Keystone エンドポイントがあることを確認します。oc exec -it openstackclient bash -- openstack endpoint list | grep image
$ oc exec -it openstackclient bash -- openstack endpoint list | grep imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 削除する
glanceAPIが Keystone カタログに登録されている API である場合は、OpenStackControlPlaneCR ファイルのopenstack_control_plane.yamlを開いて API を廃止し、keystoneEndpointパラメーターを更新します。次の例では、defaultという名前のglanceAPIを削除し、keystoneEndpointパラメーターをdefault1に更新します。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.2.5. イメージ署名の検証 リンクのコピーリンクがクリップボードにコピーされました!
イメージ署名の検証を使用すると、設定されたバックエンドにイメージを保存する前に、Image サービス (glance) にアップロードされたイメージを検証できます。イメージの検証に失敗した場合、アップロードは停止され、イメージは削除されます。
イメージの整合性と信頼性を保護するために、署名と公開鍵証明書をイメージプロパティーとして保存できます。
署名検証用のシークレットを Key Manager サービス (barbican) に保存すると、Image サービスは Identity サービス (keystone) が提供する内部エンドポイントを介して Key Manager サービスと対話します。
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) 型の攻撃を引き起こすリスクが軽減されます。