You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Standards/scs-01xx-v1-dns.md
+32-19Lines changed: 32 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,9 +12,9 @@ The Domain Name System (DNS) is used to resolve name records to addresses in Int
12
12
DNS has a variety of use cases in OpenStack infrastructures.
13
13
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.
14
14
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.
16
16
17
-
### Glossary
17
+
##Terminology
18
18
19
19
| Term | Meaning |
20
20
|---|---|
@@ -63,7 +63,7 @@ Regardless of whether clients within the cloud infrastructure individually suppo
63
63
As such, the implementation of local DNS recursors in the infrastructure can be very beneficial.
64
64
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.
65
65
66
-
#### Extension driver choices
66
+
#### Extension and driver choices
67
67
68
68
There is a hierarchy of DNS extensions in the Networking API in which they supersede one another in terms of functionality:
69
69
@@ -72,28 +72,34 @@ There is a hierarchy of DNS extensions in the Networking API in which they super
72
72
- subnet-dns-publish-fixed-ip (includes functionality of dns-integration and dns-domain-ports)
73
73
- dns-integration-domain-keywords (includes functionality of all of the above)
74
74
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.
76
76
77
77
Note that each API extension has a corresponding backend driver functionality associated to it.
78
78
The availability of each API extension depends on the backend configuration and implementation.
79
79
80
80
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:
83
82
84
-
## Open questions
83
+
The "dns-integration" extension provides the basic feature set for internal DNS resolution and should be the minimum requirement.
85
84
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.
87
86
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
89
94
90
95
The decisions of this standard will be categorized into three main sections: forwarded DNS, internal DNS and external DNS.
91
96
92
97
Forwarded DNS refers to the DNS servers communicated to tenant VMs for DNS resolution as well as any local recursors involved.
93
98
94
99
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.
95
100
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.
97
103
98
104
### Forwarded DNS
99
105
@@ -109,18 +115,18 @@ The *DNS server setting* refers to the following:
109
115
- In OVS-based setups, the `dnsmasq_dns_servers` setting in the `[DEFAULT]` section of the `dhcp_agent.ini` for all Neutron DHCP agents.
110
116
- In OVN-based setups, the `dns_servers` setting in the `[ovn]` section of `ml2_conf.ini`.
111
117
112
-
113
118
### Internal DNS
114
119
115
120
#### DNS Extensions
116
121
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.
118
123
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:
122
125
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)
124
130
125
131
The extension driver setting is part of the ML2 plugin configuration (example for `dns_domain_ports`):
126
132
@@ -137,13 +143,20 @@ A CSP MAY choose this setting freely but SHOULD NOT change it after the initial
137
143
138
144
### DNS-as-a-Service
139
145
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.
141
152
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`.
143
155
144
156
## Related Documents
145
157
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)
0 commit comments