Skip to content

Commit 99b60f2

Browse files
committed
OCPBUGS-44843 Update guidance on why why you would one way over the other to manage additional networks
1 parent 7505368 commit 99b60f2

File tree

1 file changed

+45
-14
lines changed

1 file changed

+45
-14
lines changed

networking/multiple_networks/configuring-additional-network.adoc

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,61 @@ As a cluster administrator, you can configure an additional network for your clu
1616
* xref:../../networking/multiple_networks/configuring-additional-network.adoc#nw-multus-tap-object_configuring-additional-network[TAP]
1717
* xref:../../networking/multiple_networks/configuring-additional-network.adoc#configuration-ovnk-additional-networks_configuring-additional-network[OVN-Kubernetes]
1818
19-
[id="{context}_approaches-managing-additional-network"]
19+
[id="approaches-managing-additional-network_{context}"]
2020
== Approaches to managing an additional network
2121

22-
You can manage the life cycle of an additional network by two approaches. Each approach is mutually exclusive and you can only use one approach for managing an additional network at a time. For either approach, the additional network is managed by a Container Network Interface (CNI) plugin that you configure.
22+
You can manage the lifecycle of an additional network in {product-title} by using one of two approaches: modifying the Cluster Network Operator (CNO) configuration or applying a YAML manifest. Each approach is mutually exclusive and you can only use one approach for managing an additional network at a time. For either approach, the additional network is managed by a Container Network Interface (CNI) plugin that you configure. The two different approaches are summarized here:
2323

24-
For an additional network, IP addresses are provisioned through an IP Address Management (IPAM) CNI plugin that you configure as part of the additional network. The IPAM plugin supports a variety of IP address assignment approaches including DHCP and static assignment.
24+
* Modifying the Cluster Network Operator (CNO) configuration: Configuring additional networks through CNO is only possible for cluster administrators. The CNO automatically creates and manages the `NetworkAttachmentDefinition` object. By using this approach, you can define `NetworkAttachmentDefinition` objects at install time through configuration of the `install-config`.
2525

26-
* Modify the Cluster Network Operator (CNO) configuration: The CNO automatically creates and manages the `NetworkAttachmentDefinition` object. In addition to managing the object lifecycle the CNO ensures a DHCP is available for an additional network that uses a DHCP assigned IP address.
27-
28-
* Applying a YAML manifest: You can manage the additional network directly by creating an `NetworkAttachmentDefinition` object. This approach allows for the chaining of CNI plugins.
26+
* Applying a YAML manifest: You can manage the additional network directly by creating an `NetworkAttachmentDefinition` object. Compared to modifying the CNO configuration, this approach gives you more granular control and flexibility when it comes to configuration.
2927

3028
[NOTE]
3129
====
3230
When deploying {product-title} nodes with multiple network interfaces on {rh-openstack-first} with OVN Kubernetes, DNS configuration of the secondary interface might take precedence over the DNS configuration of the primary interface. In this case, remove the DNS nameservers for the subnet ID that is attached to the secondary interface:
31+
3332
[source,terminal]
3433
----
3534
$ openstack subnet set --dns-nameserver 0.0.0.0 <subnet_id>
3635
----
3736
====
3837

39-
[id="{context}_configuration-additional-network-attachment"]
38+
[id="ip-address-assignment-for-additional-networks_{context}"]
39+
== IP address assignment for additional networks
40+
41+
For additional networks, IP addresses can be assigned using an IP Address Management (IPAM) CNI plugin, which supports various assignment methods, including Dynamic Host Configuration Protocol (DHCP) and static assignment.
42+
43+
The DHCP IPAM CNI plugin responsible for dynamic assignment of IP addresses operates with two distinct components:
44+
45+
* *CNI Plugin*: Responsible for integrating with the Kubernetes networking stack to request and release IP addresses.
46+
* *DHCP IPAM CNI Daemon*: A listener for DHCP events that coordinates with existing DHCP servers in the environment to handle IP address assignment requests. This daemon is _not_ a DHCP server itself.
47+
48+
For networks requiring `type: dhcp` in their IPAM configuration, ensure the following:
49+
50+
* A DHCP server is available and running in the environment. The DHCP server is external to the cluster and is expected to be part of the customer's existing network infrastructure.
51+
* The DHCP server is appropriately configured to serve IP addresses to the nodes.
52+
53+
In cases where a DHCP server is unavailable in the environment, it is recommended to use the Whereabouts IPAM CNI plugin instead. The Whereabouts CNI provides similar IP address management capabilities without the need for an external DHCP server.
54+
55+
[NOTE]
56+
====
57+
Use the Whereabouts CNI plugin when there is no external DHCP server or where static IP address management is preferred. The Whereabouts plugin includes a reconciler daemon to manage stale IP address allocations.
58+
====
59+
60+
A DHCP lease must be periodically renewed throughout the container's lifetime, so a separate daemon, the DHCP IPAM CNI Daemon, is required. To deploy the DHCP IPAM CNI daemon, modify the Cluster Network Operator (CNO) configuration to trigger the deployment of this daemon as part of the additional network setup.
61+
62+
[role="_additional-resources"]
63+
.Additional resources
64+
65+
* xref:../../networking/multiple_networks/configuring-additional-network.adoc#nw-multus-dhcp_configuring-additional-network[Dynamic IP address (DHCP) assignment configuration]
66+
67+
* xref:../../networking/multiple_networks/configuring-additional-network.adoc#nw-multus-whereabouts_configuring-additional-network[Dynamic IP address assignment configuration with Whereabouts]
68+
69+
[id="configuration-additional-network-attachment_{context}"]
4070
== Configuration for an additional network attachment
4171

4272
An additional network is configured by using the `NetworkAttachmentDefinition` API in the `k8s.cni.cncf.io` API group.
73+
4374
[IMPORTANT]
4475
====
4576
Do not store any sensitive information or a secret in the `NetworkAttachmentDefinition` object because this information is accessible by the project administration user.
@@ -66,7 +97,7 @@ The configuration for the API is described in the following table:
6697

6798
|====
6899

69-
[id="{context}_configuration-additional-network-cno"]
100+
[id="configuration-additional-network-cno_{context}"]
70101
=== Configuration of an additional network through the Cluster Network Operator
71102

72103
The configuration for an additional network attachment is specified as part of the Cluster Network Operator (CNO) configuration.
@@ -101,7 +132,7 @@ To prevent namespace issues for the OVN-Kubernetes network plugin, do not name y
101132
====
102133
<4> A CNI plugin configuration in JSON format.
103134

104-
[id="{context}_configuration-additional-network-yaml"]
135+
[id="configuration-additional-network-yaml_{context}"]
105136
=== Configuration of an additional network from a YAML manifest
106137

107138
The configuration for an additional network is specified from a YAML configuration file, such as in the following example:
@@ -122,7 +153,7 @@ spec:
122153
creating.
123154
<2> A CNI plugin configuration in JSON format.
124155

125-
[id="{context}_configuration-additional-network-types"]
156+
[id="configuration-additional-network-types_{context}"]
126157
== Configurations for additional network types
127158

128159
The specific configuration fields for additional networks is described in the following sections.
@@ -158,18 +189,18 @@ include::modules/configuration-ovnk-multi-network-policy.adoc[leveloffset=+3]
158189
//include::modules/configuring-layer-three-routed-topology.adoc[leveloffset=+3]
159190
include::modules/configuring-layer-two-switched-topology.adoc[leveloffset=+3]
160191

161-
[id="{context}_ovn-kubernetes-configuration-for-a-localnet-topology"]
192+
[id="ovn-kubernetes-configuration-for-a-localnet-topology_{context}"]
162193
==== Configuration for a localnet topology
163194

164195
include::modules/configuring-localnet-switched-topology.adoc[tag=localnet-intro]
165196

166197
// Workaround lack of xref in modules
167-
[id="{context}_configuration-additional-network-types-prerequisites"]
198+
[id="configuration-additional-network-types-prerequisites_{context}"]
168199
===== Prerequisites for configuring OVN-Kubernetes additional network
169200

170201
- The NMState Operator is installed. For more information, see xref:../../networking/networking_operators/k8s-nmstate-about-the-k8s-nmstate-operator.adoc#k8s-nmstate-about-the-k8s-nmstate-operator[About the Kubernetes NMState Operator].
171202

172-
[id="{context}_configuration-additional-network-interface"]
203+
[id="configuration-additional-network-interface_{context}"]
173204
===== Configuration for an OVN-Kubernetes additional network mapping
174205

175206
include::modules/configuring-localnet-switched-topology.adoc[tag=localnet-content]
@@ -187,7 +218,7 @@ include::modules/nw-multus-configure-dualstack-ip-address.adoc[leveloffset=+2]
187218

188219
[role="_additional-resources"]
189220
.Additional resources
190-
* xref:../../networking/multiple_networks/attaching-pod.html#nw-multus-add-pod_attaching-pod[Attaching a pod to an additional network]
221+
* xref:../../networking/multiple_networks/attaching-pod.adoc#nw-multus-add-pod_attaching-pod[Attaching a pod to an additional network]
191222

192223
include::modules/nw-multus-create-network.adoc[leveloffset=+1]
193224

0 commit comments

Comments
 (0)