6.5. 分散コントロールプレーンの作成
OpenStackControlPlane カスタムリソース (CR) を定義して、次のタスクを実行します。
- 分散コントロールプレーンを作成します。
- Red Hat OpenStack Services on OpenShift (RHOSO) サービスを有効にします。
次の手順では、デフォルトでサービス Pod がすべてのゾーンに分散されたコントロールプレーンを作成します。ストレージサービスは、デフォルトのサービス Pod の配置をオーバーライドして、cinderVolumes、cinderBackup、glanceAPIs、および manilaShares サービス Pod を特定のゾーンにスケジュールします。必要なカスタマイズをすべて追加する前に、コントロールプレーンを使用して問題のトラブルシューティングを行い、環境をテストできます。デプロイした環境にサービスのカスタマイズを追加できます。デプロイ後にコントロールプレーンをカスタマイズする方法の詳細は、Red Hat OpenStack Services on OpenShift デプロイメントのカスタマイズ ガイドを参照してください。
-
次のサービスの例は、
loadBalancerIPsフィールドに、デフォルトの RHOSO MetalLBIPAddressPool範囲の IP アドレスを使用しています。loadBalancerIPsフィールドを、RHOCP を BGP 用の RHOSO ネットワーク VIPS を使用するように準備する で作成した MetalLBIPAddressPool範囲の IP アドレスで更新してください。 -
topologyRefフィールドを使用して、各サービスの Pod を特定のゾーンに配置できます。指定しない場合、Pod は自動的にゾーン全体に均等に分散されます。
前提条件
-
環境内の特定のゾーンの
TopologyCR を作成している。詳細は、特定のゾーンのTopologyCR の作成 を参照してください。 -
すべてのゾーンに Pod を分散する
TopologyCR を作成している。詳細は、すべてのゾーンに Pod を分散するTopologyCR の作成 を参照してください。
手順
ワークステーションに
distributed_control_plane.yamlという名前のファイルを作成して、OpenStackControlPlaneCR を定義します。apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: distributed-control-plane namespace: openstackサービス Pod が作成されたときに、分散ゾーン環境内のゾーン全体に分散されるように指定します。
apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: distributed-control-plane namespace: openstack spec: topologyRef: name: spread-podsRed Hat OpenStack Services on OpenShift へのセキュアなアクセスの提供 で、RHOSO サービス Pod へのセキュアなアクセスを提供するために作成した
SecretCR を指定します。spec: ... secret: osp-secretRed Hat OpenShift Container Platform (RHOCP) クラスターストレージバックエンド用に作成した
storageClassを指定します。spec: ... storageClass: <RHOCP_storage_class>-
<RHOCP_storage_class>は、RHOCP クラスターストレージバックエンド用に作成したストレージクラスに置き換えます。ストレージクラスの詳細は、ストレージクラスの作成 を参照してください。
-
Red Hat Ceph Storage を使用している場合は、Red Hat Ceph Storage シークレットへのアクセスを必要とするゾーンとサービスを定義します。
extraMounts: - extraVol: - extraVolType: Ceph mounts: - mountPath: /etc/ceph name: ceph-az1 readOnly: true propagation: - az1 - CinderBackup volumes: - name: ceph-az1 projected: sources: - secret: name: ceph-conf-files-az1 - extraVolType: Ceph mounts: - mountPath: /etc/ceph name: ceph-az2 readOnly: true propagation: - az2 volumes: - name: ceph-az2 projected: sources: - secret: name: ceph-conf-files-az2 - extraVolType: Ceph mounts: - mountPath: /etc/ceph name: ceph-az3 readOnly: true propagation: - az3 volumes: - name: ceph-az3 projected: sources: - secret: name: ceph-conf-files-az3Block Storage サービス (cinder) を設定します。
Red Hat Ceph Storage で Block Storage サービスを使用している場合は、次の設定を追加します。
cinder: template: customServiceConfig: | [DEFAULT] storage_availability_zone = az1,az2,az3 databaseInstance: openstack secret: osp-secret cinderAPI: replicas: 3 override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer cinderScheduler: replicas: 1 cinderBackup: customServiceConfig: | [DEFAULT] backup_driver = cinder.backup.drivers.ceph.CephBackupDriver backup_ceph_conf = /etc/ceph/az1.conf backup_ceph_pool = backups backup_ceph_user = openstack networkAttachments: - storage replicas: 1 topologyRef: name: zone1-node-affinity cinderVolumes: az1: customServiceConfig: | [DEFAULT] enabled_backends = ceph glance_api_servers = https://glance-az1-internal.openstack.svc:9292 [ceph] volume_backend_name = ceph volume_driver = cinder.volume.drivers.rbd.RBDDriver rbd_ceph_conf = /etc/ceph/az1.conf rbd_user = openstack rbd_pool = volumes rbd_flatten_volume_from_snapshot = False rbd_secret_uuid = 7fd06e2a-a3e4-49fa-980c-1ed0865d2886 rbd_cluster_name = az1 backend_availability_zone = az1 topologyRef: name: zone1-node-affinity networkAttachments: - storage replicas: 1 az2: customServiceConfig: | [DEFAULT] enabled_backends = ceph glance_api_servers = https://glance-az2-internal.openstack.svc:9292 [ceph] volume_backend_name = ceph volume_driver = cinder.volume.drivers.rbd.RBDDriver rbd_ceph_conf = /etc/ceph/az2.conf rbd_user = openstack rbd_pool = volumes rbd_flatten_volume_from_snapshot = False rbd_secret_uuid = d4596afb-43f2-4e5d-a204-bc38a3485dc3 rbd_cluster_name = az2 backend_availability_zone = az2 topologyRef: name: zone2-node-affinity networkAttachments: - storage replicas: 1 az3: customServiceConfig: | [DEFAULT] enabled_backends = ceph glance_api_servers = https://glance-az3-internal.openstack.svc:9292 [ceph] volume_backend_name = ceph volume_driver = cinder.volume.drivers.rbd.RBDDriver rbd_ceph_conf = /etc/ceph/az3.conf rbd_user = openstack rbd_pool = volumes rbd_flatten_volume_from_snapshot = False rbd_secret_uuid = 1c348616-c493-4369-91f2-a55e4f404fbe rbd_cluster_name = az3 backend_availability_zone = az3 topologyRef: name: zone3-node-affinity networkAttachments: - storage replicas: 1サードパーティーのストレージで Block Storage サービスを使用している場合は、以下の設定を追加します。この例では、NetApp を使用して 3 つのアベイラビリティーゾーン (AZ) に
cinderVolumesを設定します。cinder: apiOverride: route: haproxy.router.openshift.io/timeout: 60s template: customServiceConfig: | [DEFAULT] storage_availability_zone = az1 cinderAPI: override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 cinderBackup: customServiceConfig: | [DEFAULT] # TODO: networkAttachments: - storage replicas: 0 topologyRef: name: azone-node-affinity cinderScheduler: replicas: 1 cinderVolumes: ontap-iscsi-az1: customServiceConfig: | [DEFAULT] glance_api_servers = https://glance-az1-internal.openstack.svc:9292 [ontap-az1] backend_availability_zone = az1 volume_backend_name=ontap-az1 volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver netapp_server_hostname=10.0.0.5 netapp_server_port=80 netapp_storage_protocol=iscsi netapp_storage_family=ontap_cluster consistencygroup_support=True customServiceConfigSecrets: - cinder-volume-secrets-az1 topologyRef: name: azone-node-affinity ontap-iscsi-az2: customServiceConfig: | [DEFAULT] glance_api_servers = https://glance-az2-internal.openstack.svc:9292 [ontap-az2] backend_availability_zone = az2 volume_backend_name=ontap-az2 volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver netapp_server_hostname=10.0.0.6 netapp_server_port=80 netapp_storage_protocol=iscsi netapp_storage_family=ontap_cluster consistencygroup_support=True customServiceConfigSecrets: - cinder-volume-secrets-az2 topologyRef: name: bzone-node-affinity ontap-iscsi-az3: customServiceConfig: | [DEFAULT] glance_api_servers = https://glance-az3-internal.openstack.svc:9292 [ontap-az3] backend_availability_zone = az3 volume_backend_name=ontap-az3 volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver netapp_server_hostname=10.0.0.7 netapp_server_port=80 netapp_storage_protocol=iscsi netapp_storage_family=ontap_cluster consistencygroup_support=True customServiceConfigSecrets: - cinder-volume-secrets-az3 topologyRef: name: czone-node-affinity databaseInstance: openstack preserveJobs: false secret: osp-secretこの例では、
cinderBackupの下の Block Storage バックアップサービスが無効になっています。Block Storage バックアップサービスが必要な場合:- レプリカ数を増やします。
-
関連する AZ でバックアップサービスを実行するには、
topologyRefを設定します。 -
永続ストレージの設定 の バックアップのストレージバックエンド の説明に従って、適切なバックエンドの
customServiceConfigを設定します。
Compute サービス (nova) を設定します。
nova: template: apiServiceTemplate: replicas: 3 override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer metadataServiceTemplate: replicas: 3 override: service: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer schedulerServiceTemplate: replicas: 3 cellTemplates: cell0: cellDatabaseAccount: nova-cell0 cellDatabaseInstance: openstack cellMessageBusInstance: rabbitmq hasAPIAccess: true cell1: cellDatabaseAccount: nova-cell1 cellDatabaseInstance: openstack-cell1 cellMessageBusInstance: rabbitmq-cell1 conductorServiceTemplate: replicas: 1 noVNCProxyServiceTemplate: enabled: true networkAttachments: - ctlplane hasAPIAccess: true secret: osp-secretデータプレーンの DNS サービスを設定します。
dns: template: options: - key: server values: - <IP address for DNS server reachable from dnsmasq pod> override: service: metadata: annotations: metallb.universe.tf/address-pool: ctlplane metallb.universe.tf/allow-shared-ip: ctlplane metallb.universe.tf/loadBalancerIPs: 192.168.122.80 spec: type: LoadBalancer replicas: 2-
options: キーと値のペアを使用して、各 DNS サーバーに必要なdnsmasqインスタンスを定義します。この例では、リクエストの転送先として設定されている DNS サーバーが 1 つしかないため、定義されているキーと値のペアは 1 つだけです。 key: デプロイするdnsmasqインスタンス用にカスタマイズするdnsmasqパラメーターを指定します。以下の有効な値のいずれかに設定します。-
server -
rev-server -
srv-host -
txt-record -
ptr-record -
rebind-domain-ok -
naptr-record -
cname -
host-record -
caa-record -
dns-rr -
auth-zone -
synth-domain -
no-negcache -
local
-
values: RHOCP クラスターネットワーク上のdnsmasqPod から到達可能な DNS サーバーの値を指定します。値として、汎用 DNS サーバー (例:1.1.1.1) または特定のドメインの DNS サーバー (例:/google.com/8.8.8.8) を指定できます。注記この DNS サービス (
dnsmasq) は、RHOSO データプレーン上のノードに DNS サービスを提供します。dnsmasqは、クラウドテナントに DNS をサービスとして提供する RHOSO DNS サービス (designate) とは異なります。
-
Identity サービス (keystone) を設定します。
keystone: template: override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer databaseInstance: openstack secret: osp-secret replicas: 3Image サービス (glance) を設定します。
Red Hat Ceph Storage で Image サービスを使用している場合は、以下を設定します。
glance: template: databaseInstance: openstack glanceAPIs: az1: customServiceConfig: | [DEFAULT] enabled_import_methods = [web-download,copy-image,glance-direct] enabled_backends = az1:rbd [glance_store] default_backend = az1 [az1] rbd_store_ceph_conf = /etc/ceph/az1.conf store_description = "az1 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.81 spec: type: LoadBalancer replicas: 2 topologyRef: name: zone1-node-affinity type: edge az2: customServiceConfig: | [DEFAULT] enabled_import_methods = [web-download,copy-image,glance-direct] enabled_backends = az1:rbd,az2:rbd [glance_store] default_backend = az2 [az2] rbd_store_ceph_conf = /etc/ceph/az2.conf store_description = "az2 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True [az1] rbd_store_ceph_conf = /etc/ceph/az1.conf store_description = "az1 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.82 spec: type: LoadBalancer replicas: 2 topologyRef: name: zone2-node-affinity type: edge az3: customServiceConfig: | [DEFAULT] enabled_import_methods = [web-download,copy-image,glance-direct] enabled_backends = az1:rbd,az3:rbd [glance_store] default_backend = az3 [az3] rbd_store_ceph_conf = /etc/ceph/az3.conf store_description = "az3 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True [az1] rbd_store_ceph_conf = /etc/ceph/az1.conf store_description = "az1 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.83 spec: type: LoadBalancer replicas: 2 topologyRef: name: zone3-node-affinity type: edge default: customServiceConfig: | [DEFAULT] enabled_import_methods = [web-download,copy-image,glance-direct] enabled_backends = az1:rbd,az2:rbd,az3:rbd [glance_store] default_backend = az1 [az1] rbd_store_ceph_conf = /etc/ceph/az1.conf store_description = "az1 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True [az2] rbd_store_ceph_conf = /etc/ceph/az2.conf store_description = "az2 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True [az3] rbd_store_ceph_conf = /etc/ceph/az3.conf store_description = "az3 RBD backend" rbd_store_pool = images rbd_store_user = openstack rbd_thin_provisioning = True networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 type: split keystoneEndpoint: default storage: storageClass: local-storage storageRequest: 10G uniquePodNames: trueサードパーティーのストレージで Image サービスを使用している場合は、以下を設定します。この例では 3 つの AZ があり、Block Storage サービスを Image サービスのバックエンドとして使用しています。各 AZ に個別の
glanceAPIサーバーセットを作成し、マルチストアを使用して複数の Block Storage サービスバックエンドに書き込みます。Block Storage サービスをバックエンドとして使用するようにマルチストアを設定する場合は、コントロールプレーンの作成時にcinder-volumeサービス用のボリューム種別を作成する必要があるため、分散コントロールプレーンの作成手順を完了するときに手順 25 を参照してください。この例では、Block Storage サービスの iSCSI を使用してマルチパスをサポートするイメージを保存し、
cinder_use_multipathやcinder_do_extend_attachedなどのマルチパスオプションが有効になります。使用しているストレージプロトコルまたは環境がマルチパスをサポートしていない場合は、これらのオプションを使用しないでください。glanceAPIs: az1: customServiceConfig: | [DEFAULT] enabled_backends = az1:cinder enabled_import_methods = [web-download,copy-image,glance-direct] [glance_store] default_backend = az1 [az1] store_description = AZ1 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az1 networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.81 spec: type: LoadBalancer replicas: 2 topologyRef: name: azone-node-affinity type: edge az2: customServiceConfig: | [DEFAULT] enabled_backends = az1:cinder,az2:cinder [glance_store] default_backend = az2 [az2] store_description = AZ2 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az2 [az1] store_description = AZ1 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az1 networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.82 spec: type: LoadBalancer replicas: 2 topologyRef: name: bzone-node-affinity type: edge az3: customServiceConfig: | [DEFAULT] enabled_backends = az1:cinder,az3:cinder [glance_store] default_backend = az3 [az3] store_description = AZ3 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az3 [az1] store_description = AZ1 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az1 networkAttachments: - storage override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.83 spec: type: LoadBalancer replicas: 2 topologyRef: name: czone-node-affinity type: edge default: customServiceConfig: | [DEFAULT] enabled_backends = az1:cinder,az2:cinder,az3:cinder [glance_store] default_backend = az1 [az1] store_description = AZ1 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az1 [az2] store_description = AZ2 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az2 [az3] store_description = AZ3 NetApp iscsi cinder backend cinder_store_auth_address = {{ .KeystoneInternalURL }} cinder_store_user_name = {{ .ServiceUser }} cinder_store_password = {{ .ServicePassword }} cinder_store_project_name = service cinder_catalog_info = volumev3::internalURL cinder_use_multipath = true cinder_do_extend_attached = true cinder_volume_type = glance-ontap-az3
Key Management サービス (barbican) を設定します。
barbican: template: databaseInstance: openstack secret: osp-secret barbicanAPI: replicas: 3 override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer barbicanWorker: replicas: 3 barbicanKeystoneListener: replicas: 1Networking サービス (neutron) を設定します。
neutron: template: customServiceConfig: | [DEFAULT] vlan_transparent = true debug = true [ovs] igmp_snooping_enable = true databaseInstance: openstack networkAttachments: - internalapi override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 secret: osp-secretObject Storage サービス (swift) が無効になっていることを確認します。
swift: enabled: falseOVN を設定します。
ovn: template: ovnDBCluster: ovndbcluster-nb: dbType: NB networkAttachment: internalapi replicas: 3 storageRequest: 10G ovndbcluster-sb: dbType: SB networkAttachment: internalapi replicas: 3 storageRequest: 10G ovnNorthd: networkAttachment: internalapiPlacement サービス (placement) を設定します。
placement: template: override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer databaseInstance: openstack replicas: 3 secret: osp-secretTelemetry サービス (ceilometer、prometheus) を設定します。
telemetry: enabled: true template: metricStorage: enabled: true dashboardsEnabled: true dataplaneNetwork: ctlplane networkAttachments: - ctlplane monitoringStack: alertingEnabled: true scrapeInterval: 30s storage: strategy: persistent retention: 24h persistent: pvcStorageRequest: 20G autoscaling: enabled: false aodh: databaseAccount: aodh databaseInstance: openstack passwordSelector: aodhService: AodhPassword rabbitMqClusterName: rabbitmq serviceUser: aodh secret: osp-secret heatInstance: heat ceilometer: template: passwordSelector: service: CeilometerPassword secret: osp-secret serviceUser: ceilometer logging: enabled: false-
metricStorage.dataplaneNetwork: データプレーンnode_exporterエンドポイントのスクレープに使用するネットワークを定義します。 -
metricStorage.networkAttachments: 各サービス Pod がアタッチされているネットワークをリスト表示します。NetworkAttachmentDefinitionリソース名を使用して指定します。指定したネットワークアタッチメントごとに、サービスの NIC を設定します。各サービス Pod が割り当てられている分離ネットワークを設定しなかった場合は、デフォルトの Pod ネットワークが使用されます。Prometheus がデータプレーンノードからデータをスクレイピングできるように、dataplaneNetworkとして指定したネットワークと一致するnetworkAttachmentを作成する必要があります。 -
autoscaling: 自動スケーリングが無効になっている場合でも、autoscalingフィールドが存在している必要があります。自動スケーリングの詳細は、インスタンスの自動スケーリング を参照してください。
-
Shared File Systems サービス (manila) を設定します。
Red Hat Ceph Storage で Shared File Systems サービスを使用している場合は、以下の設定を追加します。
manila: enabled: true template: manilaAPI: customServiceConfig: | [DEFAULT] enabled_share_protocols=nfs,cephfs networkAttachments: - internalapi override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 manilaScheduler: replicas: 3 manilaShares: az1: customServiceConfig: | [DEFAULT] enabled_share_backends = cephfs_az1 enabled_share_protocols = cephfs [cephfs_az1] driver_handles_share_servers = False share_backend_name = cephfs_az1 share_driver = manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path = /etc/ceph/az1.conf cephfs_cluster_name = az1 cephfs_auth_id=openstack cephfs_volume_mode = 0755 cephfs_protocol_helper_type = CEPHFS backend_availability_zone = az1 networkAttachments: - storage replicas: 1 topologyRef: name: zone1-node-affinity az2: customServiceConfig: | [DEFAULT] enabled_share_backends = cephfs_az2 enabled_share_protocols = cephfs [cephfs_az2] driver_handles_share_servers = False share_backend_name = cephfs_az2 share_driver = manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path = /etc/ceph/az2.conf cephfs_cluster_name = az2 cephfs_auth_id=openstack cephfs_volume_mode = 0755 cephfs_protocol_helper_type = CEPHFS backend_availability_zone = az2 networkAttachments: - storage replicas: 1 topologyRef: name: zone2-node-affinity az3: customServiceConfig: | [DEFAULT] enabled_share_backends = cephfs_az3 enabled_share_protocols = cephfs [cephfs_az3] driver_handles_share_servers = False share_backend_name = cephfs_az3 share_driver = manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path = /etc/ceph/az3.conf cephfs_cluster_name = az3 cephfs_auth_id=openstack cephfs_volume_mode = 0755 cephfs_protocol_helper_type = CEPHFS backend_availability_zone = az3 networkAttachments: - storage replicas: 1 topologyRef: name: zone3-node-affinityサードパーティーのストレージで Shared File Systems サービスを使用している場合は、以下を設定します。この例では、NetApp を使用して 3 つの AZ で Shared File Systems サービスを設定します。
次の例では、
driver_handles_share_serversが True に設定されています。このオプションがない場合は、driver_handles_share_serversフィールドを False に設定します。詳細は、永続ストレージの設定 の 分散コントロールプレーンの検証 および Shared File Systems サービス (manila) の設定 を参照してください。manila: apiOverride: route: haproxy.router.openshift.io/timeout: 60s enabled: true template: manilaAPI: customServiceConfig: | [DEFAULT] storage_availability_zone = az1,az2,az3 default_share_type = nfs-multiaz enabled_share_protocols=nfs debug = true networkAttachments: - internalapi override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 manilaScheduler: replicas: 3 manilaShares: az1: customServiceConfig: | [DEFAULT] enabled_share_backends = nfs_az1 enabled_share_protocols = nfs [nfs_az1] driver_handles_share_servers = True share_backend_name = nfs_az backend_availability_zone = az1 share_driver=manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family=ontap_cluster netapp_transport_type=http customServiceConfigSecrets: - osp-secret-manila-az1 networkAttachments: - storage replicas: 1 topologyRef: name: azone-node-affinity az2: customServiceConfig: | [DEFAULT] enabled_share_backends = nfs_az2 enabled_share_protocols = nfs [nfs_az2] driver_handles_share_servers = True share_backend_name = nfs_az backend_availability_zone = az2 share_driver=manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family=ontap_cluster netapp_transport_type=http customServiceConfigSecrets: - osp-secret-manila-az2 networkAttachments: - storage replicas: 1 topologyRef: name: bzone-node-affinity az3: customServiceConfig: | [DEFAULT] enabled_share_backends = nfs_az3 enabled_share_protocols = nfs [nfs_az3] driver_handles_share_servers = True share_backend_name = nfs_az backend_availability_zone = az3 share_driver=manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family=ontap_cluster netapp_transport_type=http customServiceConfigSecrets: - osp-secret-manila-az3 networkAttachments: - storage replicas: 1 topologyRef: name: czone-node-affinity preserveJobs: false
OVN サービスで
enable-chassis-as-gatewayが無効になっている場合、Load-balancing サービス (octavia) は現在サポートされていないため、無効にします。詳細は、OSPRH-10766 を参照してください。octavia: enabled: falseOrchestration サービス (heat) を設定します。
heat: cnfAPIOverride: route: {} enabled: true template: databaseInstance: openstack heatAPI: override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 heatEngine: override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer replicas: 3 secret: osp-secretDashboard サービス (horizon) を設定します。
horizon: enabled: true template: replicas: 2 secret: osp-secret次のサービス設定を追加して、高可用性 (HA) を実装します。
すべての RHOSO サービスで使用するための MariaDB Galera クラスター (
openstack) と、cell1の Compute サービスで使用するための MariaDB Galera クラスター (openstack-cell1)。galera: enabled: true templates: openstack: storageRequest: 5000M secret: osp-secret replicas: 3 openstack-cell1: storageRequest: 5000M secret: osp-secret replicas: 33 つの memcached サーバーが含まれる単一の memcached クラスター。
memcached: templates: memcached: replicas: 3すべての RHOSO サービスで使用される RabbitMQ クラスター (
rabbitmq) と、cell1の Compute サービスで使用される RabbitMQ クラスター (rabbitmq-cell1)。rabbitmq: templates: rabbitmq: replicas: 3 override: service: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.85 spec: type: LoadBalancer rabbitmq-cell1: replicas: 3 override: service: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.86 spec: type: LoadBalancer注記すべての RabbitMQ インスタンスは同じポートを使用するため、同じ仮想 IP (VIP) アドレスに複数の RabbitMQ インスタンスを設定することはできません。複数の RabbitMQ インスタンスを同じネットワークに公開する必要がある場合は、個別の IP アドレスを使用する必要があります。
コントロールプレーンを作成します。
$ oc create -f distributed_control_plane.yaml -n openstackRHOCP が
OpenStackControlPlaneCR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。$ oc get openstackcontrolplane -n openstack NAME STATUS MESSAGE distributed-control-plane Unknown Setup startedステータスが "Setup complete" であれば、
OpenStackControlPlaneリソースが作成されています。ヒントデプロイの進行状況を追跡するには、
getコマンドの末尾に-wオプションを追加します。注記コントロールプレーンを作成すると、
OpenStackClientPod も作成されます。この Pod にリモートシェル (rsh) を介してアクセスして、OpenStack CLI コマンドを実行できます。$ oc rsh -n openstack openstackclientオプション:
openstacknamespace 内の Pod を確認して、コントロールプレーンがデプロイされていることを確認します。$ oc get pods -n openstackすべての Pod が完了または実行中の状態であれば、コントロールプレーンがデプロイされています。
サードパーティーのストレージで Image サービスを使用しており、Block Storage サービスをバックエンドとして使用するようにマルチストアを設定する場合、各
glanceストアは一意のcinder_volume_typeを指定します。ボリューム種別がクラウドユーザーに公開されないようにするには、--privateオプションを使用してボリューム種別を作成します。Image サービスがこれらのボリューム種別にアクセスできるようにするには、各タイプの--projectをサービスプロジェクト ID に設定します。OpenStackClientPod へのリモートシェル接続を開きます。$ oc rsh -n openstack openstackclientサービスプロジェクト ID を特定します。
$ sh-5.1$ openstack project list +----------------------------------+---------+ | ID | Name | +----------------------------------+---------+ | 439f0ee839144b4c8640b9153a596a30 | admin | | 7a8946c6ec7c4d0488c592f0306eaa35 | service | +----------------------------------+---------+ $ sh-5.1$Image サービスのサービスユーザープロジェクト ID をシェル変数に保存します。
$ SERVICE_PROJECT_ID=$(openstack project show service -c id -f value)各 AZ の 3 つの cinder-volume サービスごとに種別を作成します。プロジェクト ID とアベイラビリティーゾーンを設定します。Image サービスはボリュームを要求するときに種別のみを渡しますが、仕様キー
RESKEY:availability_zonesを使用して AZ を Block Storage サービスに渡します。$ openstack volume type create --private --project "$SERVICE_PROJECT_ID" --property "RESKEY:availability_zones=az1" glance-ontap-az1 $ openstack volume type create --private --project "$SERVICE_PROJECT_ID" --property "RESKEY:availability_zones=az2" glance-ontap-az2 $ openstack volume type create --private --project "$SERVICE_PROJECT_ID" --property "RESKEY:availability_zones=az3" glance-ontap-az3openstackclientPod を終了します。$ exit