3.2. 部署 DNS 服务


要将 Red Hat OpenStack Services 部署到 OpenShift (RHOSO) DNS 服务(指定),您可以执行以下操作:

  1. OpenStackControlPlane 自定义资源(CR)文件中,启用 DNS 服务并添加所需的指定服务配置和自定义。
  2. 使用 DNS 服务所需的值更新 OpenStackControlPlane CR。

先决条件

  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

流程

  1. 在工作站上打开 OpenStackControlPlane CR 文件,并通过添加以下内容来启用 DNS 服务(指定):

    designate:
      apiOverride:
        route: {}
      enabled: true
      template:
        nsRecords:
          -hostname: ns1.example.org.
           priority: 1
          -hostname: ns2.example.org.
           priority: 2
    ...
  2. 另外,在 OpenStackControlPlane CR 文件中,添加以下指定服务配置:

    • DesignateApi:

      ...
          designateAPI:
            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
      ...
      注意

      确保 designateAPI 的注解值与当前 OpenstackControlPlane CR 中用于其他 API 服务的注解值匹配。

    • designateBackendbind9:

      ...
          designateBackendbind9:
            controlNetworkName: designate
            networkAttachments:
              - designate
            override:
              services:
                - metadata:
                    annotations:
                      metallb.universe.tf/address-pool: designateext
                      metallb.universe.tf/allow-shared-ip: designateext
                      metallb.universe.tf/loadBalancerIPs: 172.34.0.80
                  spec:
                    type: LoadBalancer
                - metadata:
                    annotations:
                      metallb.universe.tf/address-pool: designateext
                      metallb.universe.tf/allow-shared-ip: designateext
                      metallb.universe.tf/loadBalancerIPs: 172.34.0.81
                  spec:
                    type: LoadBalancer
                - metadata:
                    annotations:
                      metallb.universe.tf/address-pool: designateext
                      metallb.universe.tf/allow-shared-ip: designateext
                      metallb.universe.tf/loadBalancerIPs: 172.34.0.82
                  spec:
                    type: LoadBalancer
            replicas: 3
            resources: {}
            serviceUser: designate
            storageClass: local-storage
            storageRequest: 10G
      ...
      注意

      为每个副本使用服务覆盖。在上例中,副本数为 3,因此定义了 3 个服务。如果使用额外的专用网络来访问 BIND 9 服务器,则网络附加可能会在生产系统中有所不同。

    • DesignateCentral:

      ...
          designateCentral:
            replicas: 3
      ...
    • DesignateMDNS:

      ...
          designateMdns:
            networkAttachments:
              - designate
            replicas: 3
      ...
    • DesignateProducer

      ...
          designateProducer:
            replicas: 3
      ...
    • DesignateUnbound

      ...
          designateUnbound:
            defaultConfigOverwrite:
              01-unbound.conf: |
                server:
                  verbosity: 2
                  access-control: 172.28.0.0/24 allow
                  access-control: 100.64.0.0/10 allow
                  module-config: "iterator"
              forwarders.conf: |
                forward-zone:
                  name: "."
                  forward-addr: 172.11.5.155
                  forward-addr: 172.12.5.155
            networkAttachments:
              - designate
            override:
              services:
                - metadata:
                    annotations:
                      metallb.universe.tf/address-pool: designateext
                      metallb.universe.tf/allow-shared-ip: designateext
                      metallb.universe.tf/loadBalancerIPs: 172.34.0.90
                  spec:
                    type: LoadBalancer
                - metadata:
                    annotations:
                      metallb.universe.tf/address-pool: designateext
                      metallb.universe.tf/allow-shared-ip: designateext
                      metallb.universe.tf/loadBalancerIPs: 172.34.0.91
                  spec:
                    type: LoadBalancer
                - metadata:
                    annotations:
                      metallb.universe.tf/address-pool: designateext
                      metallb.universe.tf/allow-shared-ip: designateext
                      metallb.universe.tf/loadBalancerIPs: 172.34.0.93
                  spec:
                    type: LoadBalancer
            replicas: 3    
      1
      
            resources: {}
            stubZones:     
      2
      
              - name: example.org
              - name: anotherexample.org
      ...
      1
      为每个副本使用服务覆盖。在上例中,副本数为 3,因此定义了 3 个服务。如果使用额外的专用网络访问 Unbound 服务器,则网络附加可能会在生产系统中有所不同。
      2
      (可选)添加一个 stubZones 部分和区名称,您希望 OpenStack Operator 自动创建 stub 区记录。
    • DesignateWorker :

      ...
          designateWorker:
            databaseAccount: designate
            networkAttachments:
              - designate
            replicas: 3
      ...
  3. 可选:如果要配置网络服务(neutron)和 DNS 服务之间的集成,请执行以下步骤。

    如需更多信息,请参阅 使用集成的 DNS 服务

    1. 找到 neutron 的服务定义,并添加 customServiceConfig 部分:

        neutron:
          customServiceConfig: |
    2. customServiceConfig 部分下,添加一个 [DEFAULT] 子部分,在其中为您的站点添加域。

      Example

      在本例中,DNS 域是 example.org。将此值更改为适合您的站点的域。在大多数情况下 external_dns_driver 的值为 :

        neutron:
          customServiceConfig: |
            [DEFAULT]
            dns_domain = example.org.
            external_dns_driver = designate
    3. 添加 [ml2] 子部分,并将 subnet_dns_publish_fixed_ip 包含在 neutron 扩展驱动程序列表中:

        neutron:
          customServiceConfig: |
            [DEFAULT]
            dns_domain = example.org.
            external_dns_driver = designate
            [ml2]
            extension_drivers=subnet_dns_publish_fixed_ip
    4. [designate] 子部分添加到 customServiceConfig 部分。

      Example
        neutron:
          customServiceConfig: |
            [DEFAULT]
            dns_domain = example.org.
            external_dns_driver = designate
            [ml2]
            extension_drivers=subnet_dns_publish_fixed_ip
            [designate]
            url = https://designate-internal.openstack.svc:9001/v2
            auth_type = password
            auth_url = {{ .KeystoneInternalURL }}
            username = {{ .ServiceUser }}
            password = {{ .ServicePassword }}
            project_name = service
            project_domain_name = Default
            user_domain_name = Default
            allow_reverse_dns_lookup = true
            ipv4_ptr_zone_prefix_size = 24
            ipv6_ptr_zone_prefix_size = 116
            ptr_zone_email = admin@example.org
      • URL:使用当前版本 v2 的 OpenStack DNS 服务公共端点 URL。
      • auth_type :要使用的授权插件,可以是 passwordtoken
      • auth_url : Identity 服务(keystone)授权端点 URL。网络服务使用此端点以用户身份进行身份验证,以创建和更新反向查找区域。
      • 用户名 :网络服务用于创建和更新反向查找区域的用户名。
      • 密码 :网络服务用于创建和更新反向查找区域的用户密码。
      • project_name :网络服务用于创建和更新反向查找区域的项目名称。
      • project_domain_name :网络服务用于创建和更新反向查找区域的项目的名称。
      • user_domain_name :网络服务用于创建和更新反向查找区域的用户的域名。
      • allow_reverse_dns_lookup :当为 true 时,启用反向查找记录的创建。
      • ipv4_ptr_zone_prefix_size :IPv4 反向查找区域的前缀的大小(位)。
      • ipv6_ptr_zone_prefix_size :IPv6 反向查找区域的前缀的大小(以位表示)。
      • ptr_zone_email :在创建新的反向查找区域时 DNS 服务使用的电子邮件地址。默认为 admin@<dns_domain& gt ;,其中 <dns_domain > 是在该区域中创建的第一个记录的域。
  4. 使用 DNS 服务所需的值更新 OpenStackControlPlane 自定义资源。

    Example
    $ oc apply -f openstack_control_plane.yaml -n openstack

验证

  1. 等待 RHOCP 创建 DNS 服务资源。运行以下命令来检查状态:

    $ oc wait designate designate --for condition=Ready
    输出示例
    designate.designate.openstack.org/designate condition met
  2. 确认 DNS 服务 pod 正在运行:

    $ oc -n openstack get pods | grep -iE "(designate)"
    输出示例

    您应该看到类似如下的输出:

    designate-api-7d8447bc98-cfl22           1/1     Running     0          10s
    designate-backendbind9-0                 1/1     Running     0          15s
    designate-backendbind9-1                 1/1     Running     0          20s
    designate-backendbind9-2                 1/1     Running     0          22s
    designate-central-86c558fb98-82bn2       1/1     Running     0          12s
    designate-central-86c558fb98-0cxz1       1/1     Running     0          19s
    designate-central-86c558fb98-vkj72       1/1     Running     0          12s
    designate-mdns-0                         1/1     Running     0          13s
    designate-mdns-1                         1/1     Running     0          11s
    designate-mdns-2                         1/1     Running     0          15s
    designate-producer-7f69498d75-6wlr8      1/1     Running     0          12s
    designate-producer-7f69498d75-3sd55      1/1     Running     0          10s
    designate-producer-7f69498d75-tvmr9      1/1     Running     0          12s
    designate-redis-redis-0                  2/2     Running     0          11d
    designate-unbound-0                      1/1     Running     0          18d
    designate-unbound-1                      1/1     Running     0          11d
    designate-unbound-2                      1/1     Running     0          16d
    designate-worker-85596d67b6-7sbgw        1/1     Running     0          14d
    designate-worker-85596d67b6-xkg49        1/1     Running     0          12d
    designate-worker-85596d67b6-5ckje        1/1     Running     0          10d
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部