1.3. 部署后端服务


以下说明创建部署基本后端服务的 OpenStackControlPlane CR,并禁用了所有 OpenStack 服务。这将是 pod 指定的 control plane 的基础。

在后续步骤中,您将导入原始数据库,然后添加 podified OpenStack control plane 服务。

1.3.1. 先决条件

  • 您要采用的云已启动并运行,它位于 OpenStack Wallaby 版本中。
  • 名为 test 的虚拟机实例在源云上运行,其浮动 IP 设置为 FIP env var。您可以使用帮助程序脚本来创建该测试虚拟机。
  • 部署 openstack-operator但没有 部署 OpenStackControlPlane

    对于开发人员/CI 环境,可以通过在 install_yamls repo 中运行 make openstack 来部署 openstack。

    在生产环境中,部署方法可能会有所不同。

  • 有可用的 PV 可用(用于 MariaDB 和 RabbitMQ)。

    对于由 install_yamls 驱动的开发人员/CI 环境,请确保已经运行了 make crc_storage

1.3.2. 变量

  • 为 podified 部署设置所需的 admin 密码。这可以是原始部署的管理员密码或其它密码。

    ADMIN_PASSWORD=SomePassword

    使用现有的 OpenStack 部署密码:

    ADMIN_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' AdminPassword:' | awk -F ': ' '{ print $2; }')
  • 设置服务密码变量以匹配原始部署。数据库密码可能会在 pod 指定的环境中有所不同,但同步服务帐户密码是一个必要的步骤。

    例如,在使用 TripleO Standalone 的开发人员环境中,可以提取密码,如下所示:

    AODH_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' AodhPassword:' | awk -F ': ' '{ print $2; }')
    CEILOMETER_METERING_SECRET=$(cat ~/tripleo-standalone-passwords.yaml | grep ' CeilometerMeteringSecret:' | awk -F ': ' '{ print $2; }')
    CEILOMETER_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' CeilometerPassword:' | awk -F ': ' '{ print $2; }')
    CINDER_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' CinderPassword:' | awk -F ': ' '{ print $2; }')
    GLANCE_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' GlancePassword:' | awk -F ': ' '{ print $2; }')
    HEAT_AUTH_ENCRYPTION_KEY=$(cat ~/tripleo-standalone-passwords.yaml | grep ' HeatAuthEncryptionKey:' | awk -F ': ' '{ print $2; }')
    HEAT_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' HeatPassword:' | awk -F ': ' '{ print $2; }')
    IRONIC_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' IronicPassword:' | awk -F ': ' '{ print $2; }')
    MANILA_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' ManilaPassword:' | awk -F ': ' '{ print $2; }')
    NEUTRON_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' NeutronPassword:' | awk -F ': ' '{ print $2; }')
    NOVA_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' NovaPassword:' | awk -F ': ' '{ print $2; }')
    OCTAVIA_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' OctaviaPassword:' | awk -F ': ' '{ print $2; }')
    PLACEMENT_PASSWORD=$(cat ~/tripleo-standalone-passwords.yaml | grep ' PlacementPassword:' | awk -F ': ' '{ print $2; }')

1.3.3. pre-checks

1.3.4. 流程 - 后端服务部署

  • 确保您在使用需要部署 podified control plane 的 OpenShift 命名空间:

    oc project openstack
  • 创建 OSP secret。

    此过程的步骤会有所不同,但在您使用 install_yamls 的开发人员/CI 环境中:

    # in install_yamls
    make input
  • 如果 $ADMIN_PASSWORDosp-secret 中已设置密码不同,请相应地修改 osp-secret 中的 AdminPassword 密钥:

    oc set data secret/osp-secret "AdminPassword=$ADMIN_PASSWORD"
  • osp-secret 中设置服务帐户密码,以匹配原始部署中的服务帐户密码:

    oc set data secret/osp-secret "AodhPassword=$AODH_PASSWORD"
    oc set data secret/osp-secret "CeilometerMeteringSecret=$CEILOMETER_METERING_SECRET"
    oc set data secret/osp-secret "CeilometerPassword=$CEILOMETER_PASSWORD"
    oc set data secret/osp-secret "CinderPassword=$CINDER_PASSWORD"
    oc set data secret/osp-secret "GlancePassword=$GLANCE_PASSWORD"
    oc set data secret/osp-secret "HeatAuthEncryptionKey=$HEAT_AUTH_ENCRYPTION_KEY"
    oc set data secret/osp-secret "HeatPassword=$HEAT_PASSWORD"
    oc set data secret/osp-secret "IronicPassword=$IRONIC_PASSWORD"
    oc set data secret/osp-secret "ManilaPassword=$MANILA_PASSWORD"
    oc set data secret/osp-secret "NeutronPassword=$NEUTRON_PASSWORD"
    oc set data secret/osp-secret "NovaPassword=$NOVA_PASSWORD"
    oc set data secret/osp-secret "OctaviaPassword=$OCTAVIA_PASSWORD"
    oc set data secret/osp-secret "PlacementPassword=$PLACEMENT_PASSWORD"
  • 部署 OpenStackControlPlane。确保仅启用 DNS、MariaDB、Memcached 和 RabbitMQ 服务。必须禁用所有其他服务。

    oc apply -f - <<EOF
    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack
    spec:
      secret: osp-secret
      storageClass: local-storage
    
      cinder:
        enabled: false
        template:
          cinderAPI: {}
          cinderScheduler: {}
          cinderBackup: {}
          cinderVolumes: {}
    
      dns:
        template:
          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
          options:
          - key: server
            values:
            - 192.168.122.1
          replicas: 1
    
      glance:
        enabled: false
        template:
          glanceAPIs: {}
    
      horizon:
        enabled: false
        template: {}
    
      ironic:
        enabled: false
        template:
          ironicConductors: []
    
      keystone:
        enabled: false
        template: {}
    
      manila:
        enabled: false
        template:
          manilaAPI: {}
          manilaScheduler: {}
          manilaShares: {}
    
      mariadb:
        enabled: false
        templates: {}
    
      galera:
        enabled: true
        templates:
          openstack:
            secret: osp-secret
            replicas: 1
            storageRequest: 500M
          openstack-cell1:
            secret: osp-secret
            replicas: 1
            storageRequest: 500M
    
      memcached:
        enabled: true
        templates:
          memcached:
            replicas: 1
    
      neutron:
        enabled: false
        template: {}
    
      nova:
        enabled: false
        template: {}
    
      ovn:
        enabled: false
        template:
          ovnDBCluster:
            ovndbcluster-nb:
              dbType: NB
              storageRequest: 10G
              networkAttachment: internalapi
            ovndbcluster-sb:
              dbType: SB
              storageRequest: 10G
              networkAttachment: internalapi
          ovnNorthd:
            networkAttachment: internalapi
            replicas: 1
          ovnController:
            networkAttachment: tenant
    
      placement:
        enabled: false
        template: {}
    
      rabbitmq:
        templates:
          rabbitmq:
            override:
              service:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.85
                spec:
                  type: LoadBalancer
          rabbitmq-cell1:
            override:
              service:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.86
                spec:
                  type: LoadBalancer
    
      ceilometer:
        enabled: false
        template: {}
    
      autoscaling:
        enabled: false
        template: {}
    EOF

1.3.5. post-checks

  • 检查 MariaDB 是否正在运行。

    oc get pod openstack-galera-0 -o jsonpath='{.status.phase}{"\n"}'
    oc get pod openstack-cell1-galera-0 -o jsonpath='{.status.phase}{"\n"}'
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部