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
Add a new dual-stack section for Management clusters
Expand the Telco Cloud documentation for the management cluster
(sections 41.x) to include an example of dual-stack configuration for
the management cluster, now that is officially supported.
Signed-off-by: Marco Chiappero <[email protected]>
Copy file name to clipboardExpand all lines: asciidoc/product/atip-management-cluster.adoc
+149Lines changed: 149 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1224,3 +1224,152 @@ This creates the ISO output image file that, in our case, based on the image def
1224
1224
1225
1225
The previous image contains all components explained above, and it can be used to provision the management cluster using a virtual machine or a bare-metal server (using the virtual-media feature).
1226
1226
1227
+
[#mgmt-cluster-dualstack]
1228
+
=== Dual-stack considerations and configuration
1229
+
1230
+
The examples shown in the previous sections provide guidance and examples on how to set up a single-stack IPv4 management cluster. Such management cluster is independend of the operational status of downstream clusters, which can be individually configured to operate in either IPv4/IPv6 single-stack or dual-stack configuration, once deployed. However, they way the management cluster is configured has a direct impact on the communication protocols that can be used during the provisioning phase, where both the in-band and out-of-band communications must happen according to which protocols are supported by the management cluster and downstream host. In case some or all of the BMCs and/or downstream cluster nodes are expected to use IPv6, a dual-stack setup for the management cluster is then required.
1231
+
1232
+
[NOTE]
1233
+
====
1234
+
Single-stack IPv6 management clusters are not yet supported.
1235
+
====
1236
+
1237
+
In order to achieve dual-stack functionality, Kubernetes must be provided with both IPv4 and IPv6 CIDRs for PODs and Services. However, other components also require specific tuning before building the management cluster image with EIB. The Metal^3^ provisioning services (Ironic) can be configured in different ways, depending on your infrastructure or requirements:
1238
+
1239
+
- The Ironic services can be configured to listen on all the interfaces on the system rather than a single IP address, thus, as long as the management cluster host(s) has both IPv4 and IPv6 addresses assigned to the relevant interface, any of them can potentially be used during the provisioning. Note that at this time only one of these addresses can be selected for the URL generation (for consumption by other services, e.g. the Baremetal Operator, BMCs, etc.); as a consequence, to enable IPv6 communications with the BMCs, the Baremetal Operator can be instructed to expose and pass on an IPv6 URL when dealing BMH definitions including an IPv6 address. In other words, when a BMC is identified as IPv6 capable, the provisioning will be performed via IPv6 only, and via IPv4 in all the other cases.
1240
+
1241
+
- A single hostname, resolving to both IPv4 and IPv6, can be used by Metal3 to let Ironic use those addresses for binding and URL creation. This approach allows for an easy configuration and flexible behavior (both IPv4 and IPv6 remain viable at each provisioning step), but requires an infrastructure with preexisting DNS servers, IP allocations and records already in place.
1242
+
1243
+
In both cases, Kubernetes will need to know what CIDRs to use for both IPv4 and IPv6, so you can add the following lines to your `kubernetes/config/server.yaml` in the EIB directory, making sure to list IPv4 first:
1244
+
1245
+
[,yaml]
1246
+
----
1247
+
service-cidr: 10.96.0.0/12,fd12:4567:789c::/112
1248
+
cluster-cidr: 193.168.0.0/18,fd12:4567:789b::/48
1249
+
----
1250
+
1251
+
Some containers leverage the host networking, so modify the network configuration for the host(s), under the `network` directory, to enable IPv6 connectivity:
1252
+
1253
+
[,yaml]
1254
+
----
1255
+
routes:
1256
+
config:
1257
+
- destination: 0.0.0.0/0
1258
+
next-hop-address: ${MGMT_GATEWAY_V4}
1259
+
next-hop-interface: eth0
1260
+
- destination: ::/0
1261
+
next-hop-address: ${MGMT_GATEWAY_V6}
1262
+
next-hop-interface: eth0
1263
+
dns-resolver:
1264
+
config:
1265
+
server:
1266
+
- ${MGMT_DNS}
1267
+
- 8.8.8.8
1268
+
- 2001:4860:4860::8888
1269
+
interfaces:
1270
+
- name: eth0
1271
+
type: ethernet
1272
+
state: up
1273
+
mac-address: ${MGMT_MAC}
1274
+
ipv4:
1275
+
address:
1276
+
- ip: ${MGMT_CLUSTER_IP_V4}
1277
+
prefix-length: 24
1278
+
dhcp: false
1279
+
enabled: true
1280
+
ipv6:
1281
+
address:
1282
+
- ip: ${MGMT_CLUSTER_IP_V6}
1283
+
prefix-length: 128
1284
+
dhcp: false
1285
+
autoconf: false
1286
+
enabled: true
1287
+
----
1288
+
1289
+
Replace the placeholders with the gateway IP addresses, additional DNS server (if needed), the MAC address of the network interface and the the IP addressed of the management cluster. If address autoconfiguration is preferred instead, refer to the following excerpt and just set the `$\{MGMT_MAC\}` variable:
1290
+
1291
+
[,yaml]
1292
+
----
1293
+
interfaces:
1294
+
- name: eth0
1295
+
type: ethernet
1296
+
state: up
1297
+
mac-address: ${MGMT_MAC}
1298
+
ipv4:
1299
+
enabled: true
1300
+
dhcp: true
1301
+
ipv6:
1302
+
enabled: false
1303
+
dhcp: true
1304
+
autoconf: true
1305
+
----
1306
+
1307
+
We can now define the remaining files for a single node configuration, starting from the first option, by creating `kubernetes/helm/values/metal3.yaml` as:
1308
+
1309
+
[,yaml]
1310
+
----
1311
+
global:
1312
+
ironicIP: ${MGMT_CLUSTER_IP_V4}
1313
+
enable_vmedia_tls: false
1314
+
additionalTrustedCAs: false
1315
+
metal3-ironic:
1316
+
global:
1317
+
predictableNicNames: true
1318
+
listenOnAll: true
1319
+
persistence:
1320
+
ironic:
1321
+
size: "5Gi"
1322
+
service:
1323
+
type: NodePort
1324
+
metal3-baremetal-operator:
1325
+
baremetaloperator:
1326
+
externalHttpIPv6: ${MGMT_CLUSTER_IP_V6}
1327
+
----
1328
+
1329
+
and `kubernetes/helm/values/rancher.yaml` as:
1330
+
1331
+
[,yaml]
1332
+
----
1333
+
hostname: rancher-${MGMT_CLUSTER_IP_V4}.sslip.io
1334
+
bootstrapPassword: "foobar"
1335
+
replicas: 1
1336
+
global:
1337
+
cattle:
1338
+
systemDefaultRegistry: "registry.rancher.com"
1339
+
----
1340
+
1341
+
where `$\{MGMT_CLUSTER_IP_V4\}` and `$\{MGMT_CLUSTER_IP_V6\}` are the IP addresses previously assigned to the host.
1342
+
1343
+
Alternatively, to use the hostname in place of the IP addresses, modify `kubernetes/helm/values/metal3.yaml` to:
where `$\{MGMT_CLUSTER_HOSTNAME\}` should be a Fully Qualified Domain Name resolving to your host IP addresses.
1374
+
1375
+
For more information visit https://github.com/suse-edge/atip/tree/main/telco-examples/mgmt-cluster/dual-stack[SUSE Edge GitHub repository under the "dual-stack" folder], where an example directory structure can be found.
0 commit comments