21.3. 指定 DNS 分配给端口的名称
当您为端口扩展(dns_domain_ports
)启用 Red Hat OpenStack Platform (RHOSP)网络服务(neutron) DNS 域时,您可以指定内部 DNS 分配给端口的名称。
您可以通过在 YAML 格式的环境文件中声明 RHOSP Orchestration (heat) NeutronPlugin Extensions
参数,为端口扩展启用 DNS 域。使用对应的参数 NeutronDnsDomain
,您可以指定您的域名,该域名会覆盖默认值 openstacklocal
。重新部署 overcloud 后,您可以使用 OpenStack 客户端端口命令( port set
或 port create
)来分配 端口名称
。
您必须为端口扩展(dns_domain_ports
)启用 DNS 域,以便 DNS 内部解析 RHOSP 环境中的端口的名称。使用 NeutronDnsDomain
默认值 openstacklocal
意味着网络服务不会内部解析 DNS 的端口名称。
另外,当启用端口扩展的 DNS 域时,计算服务会在引导虚拟机实例期间使用实例的 hostname
属性自动填充 dns_name
属性。在引导过程结束时,dnsmasq 会根据其实例主机名识别分配的端口。
流程
以 stack 用户身份登录 undercloud,再提供
stackrc
文件,以启用 director 命令行工具。示例
source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! 创建自定义 YAML 环境文件(
my-neutron-environment.yaml
)。注意括号内的值是此流程中示例命令中使用的示例值。将这些示例值替换为适合您的站点的值。
示例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yaml
Copy to Clipboard Copied! 提示undercloud 包括一组编配服务模板,组成您的 overcloud 创建计划。您可以使用环境文件来自定义 overcloud 的各个方面,这些文件是 YAML 格式的文件,该文件会覆盖核心编排服务模板集合中的参数和资源。您可以根据需要纳入多个环境文件。
在 环境文件中,添加一个
parameter_defaults
部分。在本节中,为端口扩展名添加 DNS 域dns_domain_ports
。示例
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports"
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports"
Copy to Clipboard Copied! 注意如果您设置了
dns_domain_ports
,请确保部署也没有使用dns_domain
,即 DNS 集成扩展。这些扩展不兼容,无法同时定义这两个扩展。另外,在
parameter_defaults
部分中,使用NeutronDnsDomain
参数添加您的域名(example.com
)。示例
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports" NeutronDnsDomain: "example.com"
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports" NeutronDnsDomain: "example.com"
Copy to Clipboard Copied! 运行
openstack overcloud deploy
命令,并包括核心编配模板、环境文件和这个新环境文件。重要但是,环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。
示例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
Copy to Clipboard Copied!
验证
登录到 overcloud,并在网络 (
public
) 上创建一个新端口 (new_port
)。为端口分配一个 DNS 名称(my_port
)。示例
source ~/overcloudrc openstack port create --network public --dns-name my_port new_port
$ source ~/overcloudrc $ openstack port create --network public --dns-name my_port new_port
Copy to Clipboard Copied! 显示端口的详细信息(
new_port
)。示例
openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port
$ openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port
Copy to Clipboard Copied! 输出
+-------------------------+----------------------------------------------+ | Field | Value | +-------------------------+----------------------------------------------+ | dns_assignment | fqdn='my_port.example.com', | | | hostname='my_port', | | | ip_address='10.65.176.113' | | dns_domain | example.com | | dns_name | my_port | | name | new_port | +-------------------------+----------------------------------------------+
+-------------------------+----------------------------------------------+ | Field | Value | +-------------------------+----------------------------------------------+ | dns_assignment | fqdn='my_port.example.com', | | | hostname='my_port', | | | ip_address='10.65.176.113' | | dns_domain | example.com | | dns_name | my_port | | name | new_port | +-------------------------+----------------------------------------------+
Copy to Clipboard Copied! 在
dns_assignment
下,端口的完全限定域名(fqdn
)值包含 DNS 名称的连接(my_port
)以及之前使用NeutronDnsDomain
设置的域名(example.com
)。使用您刚才创建的端口(
new_port
)创建一个新虚拟机实例(my_vm
)。示例
openstack server create --image rhel --flavor m1.small --port new_port my_vm
$ openstack server create --image rhel --flavor m1.small --port new_port my_vm
Copy to Clipboard Copied! 显示端口的详细信息(
new_port
)。示例
openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port
$ openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port
Copy to Clipboard Copied! 输出
+-------------------------+----------------------------------------------+ | Field | Value | +-------------------------+----------------------------------------------+ | dns_assignment | fqdn='my_vm.example.com', | | | hostname='my_vm', | | | ip_address='10.65.176.113' | | dns_domain | example.com | | dns_name | my_vm | | name | new_port | +-------------------------+----------------------------------------------+
+-------------------------+----------------------------------------------+ | Field | Value | +-------------------------+----------------------------------------------+ | dns_assignment | fqdn='my_vm.example.com', | | | hostname='my_vm', | | | ip_address='10.65.176.113' | | dns_domain | example.com | | dns_name | my_vm | | name | new_port | +-------------------------+----------------------------------------------+
Copy to Clipboard Copied! 请注意,计算服务将
dns_name
属性从其原始值(my_port
)改为与端口关联的实例的名称(my_vm
)。