6.5. 分散コントロールプレーンの作成


OpenStackControlPlane カスタムリソース (CR) を定義して、次のタスクを実行します。

  • 分散コントロールプレーンを作成します。
  • Red Hat OpenStack Services on OpenShift (RHOSO) サービスを有効にします。

次の手順では、デフォルトでサービス Pod がすべてのゾーンに分散されたコントロールプレーンを作成します。ストレージサービスは、デフォルトのサービス Pod の配置をオーバーライドして、cinderVolumescinderBackupglanceAPIs、および manilaShares サービス Pod を特定のゾーンにスケジュールします。必要なカスタマイズをすべて追加する前に、コントロールプレーンを使用して問題のトラブルシューティングを行い、環境をテストできます。デプロイした環境にサービスのカスタマイズを追加できます。デプロイ後にコントロールプレーンをカスタマイズする方法の詳細は、Red Hat OpenStack Services on OpenShift デプロイメントのカスタマイズ ガイドを参照してください。

注記
  • 次のサービスの例は、loadBalancerIPs フィールドに、デフォルトの RHOSO MetalLB IPAddressPool 範囲の IP アドレスを使用しています。loadBalancerIPs フィールドを、RHOCP を BGP 用の RHOSO ネットワーク VIPS を使用するように準備する で作成した MetalLB IPAddressPool 範囲の IP アドレスで更新してください。
  • topologyRef フィールドを使用して、各サービスの Pod を特定のゾーンに配置できます。指定しない場合、Pod は自動的にゾーン全体に均等に分散されます。

前提条件

手順

  1. ワークステーションに distributed_control_plane.yaml という名前のファイルを作成して、OpenStackControlPlane CR を定義します。

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: distributed-control-plane
      namespace: openstack
  2. サービス Pod が作成されたときに、分散ゾーン環境内のゾーン全体に分散されるように指定します。

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: distributed-control-plane
      namespace: openstack
    spec:
      topologyRef:
        name: spread-pods
  3. Red Hat OpenStack Services on OpenShift へのセキュアなアクセスの提供 で、RHOSO サービス Pod へのセキュアなアクセスを提供するために作成した Secret CR を指定します。

    spec:
      ...
      secret: osp-secret
  4. Red Hat OpenShift Container Platform (RHOCP) クラスターストレージバックエンド用に作成した storageClass を指定します。

    spec:
      ...
      storageClass: <RHOCP_storage_class>
    • <RHOCP_storage_class> は、RHOCP クラスターストレージバックエンド用に作成したストレージクラスに置き換えます。ストレージクラスの詳細は、ストレージクラスの作成 を参照してください。
  5. 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-az3
  6. Block 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 を設定します。
  7. 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
  8. データプレーンの 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 クラスターネットワーク上の dnsmasq Pod から到達可能な DNS サーバーの値を指定します。値として、汎用 DNS サーバー (例: 1.1.1.1) または特定のドメインの DNS サーバー (例: /google.com/8.8.8.8) を指定できます。

      注記

      この DNS サービス (dnsmasq) は、RHOSO データプレーン上のノードに DNS サービスを提供します。dnsmasq は、クラウドテナントに DNS をサービスとして提供する RHOSO DNS サービス (designate) とは異なります。

  9. 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: 3
  10. Image サービス (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_multipathcinder_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
  11. 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: 1
  12. Networking サービス (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-secret
  13. Object Storage サービス (swift) が無効になっていることを確認します。

      swift:
        enabled: false
  14. OVN を設定します。

      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: internalapi
  15. Placement サービス (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-secret
  16. Telemetry サービス (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 フィールドが存在している必要があります。自動スケーリングの詳細は、インスタンスの自動スケーリング を参照してください。
  17. 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
  18. OVN サービスで enable-chassis-as-gateway が無効になっている場合、Load-balancing サービス (octavia) は現在サポートされていないため、無効にします。詳細は、OSPRH-10766 を参照してください。

      octavia:
        enabled: false
  19. Orchestration サービス (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-secret
  20. Dashboard サービス (horizon) を設定します。

      horizon:
        enabled: true
        template:
          replicas: 2
          secret: osp-secret
  21. 次のサービス設定を追加して、高可用性 (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: 3
    • 3 つの 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 アドレスを使用する必要があります。

  22. コントロールプレーンを作成します。

    $ oc create -f distributed_control_plane.yaml -n openstack
  23. RHOCP が OpenStackControlPlane CR に関連するリソースを作成するまで待機します。次のコマンドを実行して、ステータスを確認します。

    $ oc get openstackcontrolplane -n openstack
    NAME 						STATUS 	MESSAGE
    distributed-control-plane 	Unknown 	Setup started

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

    ヒント

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

    注記

    コントロールプレーンを作成すると、OpenStackClient Pod も作成されます。この Pod にリモートシェル (rsh) を介してアクセスして、OpenStack CLI コマンドを実行できます。

    $ oc rsh -n openstack openstackclient
  24. オプション: openstack namespace 内の Pod を確認して、コントロールプレーンがデプロイされていることを確認します。

    $ oc get pods -n openstack

    すべての Pod が完了または実行中の状態であれば、コントロールプレーンがデプロイされています。

  25. サードパーティーのストレージで Image サービスを使用しており、Block Storage サービスをバックエンドとして使用するようにマルチストアを設定する場合、各 glance ストアは一意の cinder_volume_type を指定します。ボリューム種別がクラウドユーザーに公開されないようにするには、--private オプションを使用してボリューム種別を作成します。Image サービスがこれらのボリューム種別にアクセスできるようにするには、各タイプの --project をサービスプロジェクト ID に設定します。

    1. OpenStackClient Pod へのリモートシェル接続を開きます。

      $ oc rsh -n openstack openstackclient
    2. サービスプロジェクト ID を特定します。

      $ sh-5.1$ openstack project list
      +----------------------------------+---------+
      | ID                               | Name    |
      +----------------------------------+---------+
      | 439f0ee839144b4c8640b9153a596a30 | admin   |
      | 7a8946c6ec7c4d0488c592f0306eaa35 | service |
      +----------------------------------+---------+
      $ sh-5.1$
    3. Image サービスのサービスユーザープロジェクト ID をシェル変数に保存します。

      $ SERVICE_PROJECT_ID=$(openstack project show service -c id -f value)
    4. 各 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-az3
    5. openstackclient Pod を終了します。

      $ exit
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る