Skip to content

Commit 546728c

Browse files
markus-hentschfkr
authored andcommitted
Fill in remaining parts of the standard
Signed-off-by: Markus Hentsch <[email protected]>
1 parent 65d6563 commit 546728c

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

Standards/scs-01xx-v1-dns.md

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ The Domain Name System (DNS) is used to resolve name records to addresses in Int
1212
DNS has a variety of use cases in OpenStack infrastructures.
1313
For basic egress traffic, it is used to enable proper connectivity for customer virtual machines to the outside world by offering DNS servers to them.
1414
For internal connectivity and discoverability between cloud resources, DNS is used to make virtual machines addressable via their name within tenant networks.
15-
DNS can also be used to publish DNS records for virtual machines that have external connectivity by integrating and using the OpenStack Designate service.
15+
DNS can also be used to publish DNS records for virtual machines that have external connectivity by integrating and using the OpenStack DNS v2 API, e.g. by integrating the Designate service.
1616

17-
### Glossary
17+
## Terminology
1818

1919
| Term | Meaning |
2020
|---|---|
@@ -63,7 +63,7 @@ Regardless of whether clients within the cloud infrastructure individually suppo
6363
As such, the implementation of local DNS recursors in the infrastructure can be very beneficial.
6464
This standard should consider mandating or at least recommending the use of local DNS recursors for SCS clouds to be configured as the default DNS servers for Neutron resources.
6565

66-
#### Extension driver choices
66+
#### Extension and driver choices
6767

6868
There is a hierarchy of DNS extensions in the Networking API in which they supersede one another in terms of functionality:
6969

@@ -72,28 +72,34 @@ There is a hierarchy of DNS extensions in the Networking API in which they super
7272
- subnet-dns-publish-fixed-ip (includes functionality of dns-integration and dns-domain-ports)
7373
- dns-integration-domain-keywords (includes functionality of all of the above)
7474

75-
For example, to get the "subnet-dns-publish-fixed-ip" functionality, either "subnet-dns-publish-fixed-ip" or "dns-integration-domain-keywords" (which includes the former) must be activate.
75+
For example, to get the "subnet-dns-publish-fixed-ip" functionality, either "subnet-dns-publish-fixed-ip" or "dns-integration-domain-keywords" (which includes the former) must be activated.
7676

7777
Note that each API extension has a corresponding backend driver functionality associated to it.
7878
The availability of each API extension depends on the backend configuration and implementation.
7979

8080
As a result, the DNS functionalities and behaviors available to the customer vary depending on the individual backend configuration of the Networking API.
81-
Mandating or recommending the integration of specific drivers/extensions can therefore be crucial to establish specific DNS functionality baselines.
82-
On the other hand, some functionality might not be desired in contrast, such as the ability to publish arbitrary DNS records for fixed IP addresses in Neutron networks.
81+
Mandating or recommending the integration of specific drivers/extensions can therefore be crucial to establish specific DNS functionality baselines for both internal DNS and DNS-as-a-Service:
8382

84-
## Open questions
83+
The "dns-integration" extension provides the basic feature set for internal DNS resolution and should be the minimum requirement.
8584

86-
RECOMMENDED
85+
The "dns-domain-ports" extension adds port-specific DNS domain name override capabilities but those are only important for DNS-as-a-Service scenarios mostly.
8786

88-
## Decision
87+
Starting with the "subnet-dns-publish-fixed-ip" API extension, the largest flexibility is provided in regards to self-service publishing DNS records for fixed IPs from externally reachable tenant networks (e.g. for IPv6 subnet pools).
88+
In cases where DNS-as-a-Service is offered (e.g. via Designate), this extension should be recommended as opposed to its predecessors.
89+
90+
The "dns-integration-domain-keywords" extension allows dynamically resolving placeholders for user or project id/name in the DNS domain name attribute for port and network metadata.
91+
Its use case seems pretty niche and will most likely be considered entirely optional by the standard.
92+
93+
## Standard
8994

9095
The decisions of this standard will be categorized into three main sections: forwarded DNS, internal DNS and external DNS.
9196

9297
Forwarded DNS refers to the DNS servers communicated to tenant VMs for DNS resolution as well as any local recursors involved.
9398

9499
Internal DNS refers to the DNS resolution that OpenStack Neutron implements internally to make VM instances' addresses resolvable via name within the same tenant network.
95100

96-
DNS-as-a-Service refers to the integration of external or public DNS via OpenStack Designate and its publishing of DNS records for VMs that are externally reachable.
101+
DNS-as-a-Service refers to the integration of external or public DNS via the OpenStack DNS v2 API and its publishing of DNS records for VMs that are externally reachable.
102+
This is an optional feature of OpenStack clouds and can be implemented by integrating the Designate service for example.
97103

98104
### Forwarded DNS
99105

@@ -109,18 +115,18 @@ The *DNS server setting* refers to the following:
109115
- In OVS-based setups, the `dnsmasq_dns_servers` setting in the `[DEFAULT]` section of the `dhcp_agent.ini` for all Neutron DHCP agents.
110116
- In OVN-based setups, the `dns_servers` setting in the `[ovn]` section of `ml2_conf.ini`.
111117

112-
113118
### Internal DNS
114119

115120
#### DNS Extensions
116121

117-
In the Neutron configuration, one of the following extension drivers MUST be enabled to offer the full range of DNS settings for both ports and networks:
122+
In the Networking API, the "dns-integration" extension MUST be enabled to offer internal DNS resolution.
118123

119-
- `dns_domain_ports`
120-
- `subnet_dns_publish_fixed_ip`
121-
- `dns_domain_keywords`
124+
For Neutron, this can implemented by enabling one of the following extension drivers:
122125

123-
Due to them being the successor to the old `dns` extension driver, the `dns` driver MUST NOT be enabled and needs to be removed from the `extension_drivers` setting, if that entry exists.
126+
- `dns`
127+
- `dns_domain_ports` (includes `dns`)
128+
- `subnet_dns_publish_fixed_ip` (includes `dns` and `dns_domain_ports`)
129+
- `dns_domain_keywords` (includes all of the above)
124130

125131
The extension driver setting is part of the ML2 plugin configuration (example for `dns_domain_ports`):
126132

@@ -137,13 +143,20 @@ A CSP MAY choose this setting freely but SHOULD NOT change it after the initial
137143

138144
### DNS-as-a-Service
139145

140-
The following section only applies to SCS clouds which include the DNS service Designate and offer its functionality and API to customers.
146+
The following section only applies to SCS clouds which include the DNS-as-a-Service functionality for customers via the [OpenStack DNS v2 API](https://docs.openstack.org/api-ref/dns/dns-api-v2-index.html).
147+
All guidelines above still apply.
148+
149+
In the Networking API, the "dns-domain-ports" extension MUST be enabled to offer the full range of DNS record settings for both ports and networks.
150+
This is implemented by the `dns_domain_ports` Neutron extension driver for the ML2 plugin.
151+
See the Internal DNS section above for an example on how to enable an extension driver.
141152

142-
<!-- TODO -->
153+
However, is RECOMMENDED to provide the "subnet-dns-publish-fixed-ip" API extension for the Networking API in addition to "dns-domain-ports".
154+
In Neutron, this can be done by activating either the `subnet_dns_publish_fixed_ip` or `dns_domain_keywords` extension driver instead of `dns_domain_ports`.
143155

144156
## Related Documents
145157

146-
- [OpenStack User Guide for using DNS with Neutron and Nova resources](https://docs.openstack.org/designate/latest/user/neutron-integration.html)
158+
- [OpenStack User Guide for basic usage of DNS-as-a-Service with Neutron and Nova resources](https://docs.openstack.org/designate/latest/user/neutron-integration.html)
159+
- [OpenStack Configuration and User Guide for various DNS-as-a-Service scenarios in Neutron](https://docs.openstack.org/neutron/latest/admin/config-dns-int-ext-serv.html)
147160

148161
## Conformance Tests
149162

0 commit comments

Comments
 (0)