Skip to content

Commit 30ba9c5

Browse files
Merge pull request #9044 from shiftstack/add-ipv6-docs
OSASINFRA-3615: OpenStack: Add installation steps for single stack IPv6 clusters
2 parents ee744f2 + 4cab576 commit 30ba9c5

File tree

3 files changed

+106
-5
lines changed

3 files changed

+106
-5
lines changed

docs/user/openstack/customization.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,14 @@ In the `install-config.yaml` file, the value of the `controlPlanePort` property
173173

174174
* Any subnet used by `controlPlanePort` have DHCP enabled.
175175
* The CIDR of any subnet listed in `controlPlanePort.fixedIPs` matches the CIDRs listed on `networks.machineNetwork`.
176-
* When using dual-stack Network the api and ingress Ports needs to be pre-created by the user. Also, the installer user must have permission to add tags and security groups to those pre-created Ports. The value of the fixed IPs of the Ports needs to be specified at the `apiVIPs` and `ingressVIPs` options in the `install-config.yaml`.
177-
* If not using dual-stack, the installer user must have permission to create ports on this network, including ports with fixed IP addresses.
176+
* When using dual-stack or single stack IPv6 Network the api and ingress Ports needs to be pre-created by the user. Also, the installer user must have permission to add tags and security groups to those pre-created Ports. The value of the fixed IPs of the Ports needs to be specified at the `apiVIPs` and `ingressVIPs` options in the `install-config.yaml`.
177+
* If not using dual-stack or single stack IPv6, the installer user must have permission to create ports on this network, including ports with fixed IP addresses.
178178

179179
You should also be aware of the following limitations:
180180

181181
* If you plan to install a cluster that uses floating IPs, the `controlPlanePort` must be attached to a router that is connected to the `externalNetwork`.
182182
* The installer will not create a private network or subnet for your OpenShift machines if the `controlPlanePort` is set in the `install-config.yaml`.
183-
* By default when not using dual-stack, the API and Ingress VIPs use the .5 and .7 of your network CIDR. To prevent other services from taking the ports that are assigned to the API and Ingress VIPs, set the `apiVIP` and `ingressVIP` options in the `install-config.yaml` to addresses that are outside of the DHCP allocation pool.
183+
* By default when not using dual-stack or single stack IPv6, the API and Ingress VIPs use the .5 and .7 of your network CIDR. To prevent other services from taking the ports that are assigned to the API and Ingress VIPs, set the `apiVIP` and `ingressVIP` options in the `install-config.yaml` to addresses that are outside of the DHCP allocation pool.
184184
* You cannot use the `externalDNS` property at the same time as a custom `controlPlanePort`. If you want to add a DNS to your cluster while using a custom subnet, [add it to the subnet in OpenStack](https://docs.openstack.org/neutron/rocky/admin/config-dns-res.html).
185185

186186
## Additional Networks

docs/user/openstack/deploy_dual_stack_cluster.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
- [Prerequisites](#prerequisites)
66
- [Creating DualStack Networks for the cluster](#creating-dualstack-networks-for-the-cluster)
7-
- [Creating DualStack API and Ingress VIPs Ports for the cluster](#creating-dualstack-api-and-ingress-vips-for-the-cluster)
7+
- [Creating DualStack API and Ingress VIPs Ports for the cluster](#creating-dualstack-api-and-ingress-vips-ports-for-the-cluster)
88
- [Deploy OpenShift](#deploy-openshift)
99

1010
## Prerequisites
1111

1212
* Installation with dual-stack is only allowed when using one OpenStack network with one IPv4 and IPv6 subnet.
1313
* API and Ingress VIPs ports needs to pre-created by the user and the addresses specified in the `install-config.yaml`.
1414
* Add the IPv6 Subnet to a neutron router to provide router advertisements.
15-
* The dualstack network MTU must accomodate the minimun MTU for IPv6, which is 1280, and OVN-Kubernetes encapsulation overhead, which is 100.
15+
* The dualstack network MTU must accommodate the minimum MTU for IPv6, which is 1280, and OVN-Kubernetes encapsulation overhead, which is 100.
1616

1717
Additional prerequisites are listed at the [OpenStack Platform Customization docs](./customization.md)
1818

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Creating a single stack IPv6 cluster on OpenStack
2+
3+
## Table of Contents
4+
5+
- [Prerequisites](#prerequisites)
6+
- [Creating Network for the cluster](#creating-network-for-the-cluster)
7+
- [Creating IPv6 API and Ingress VIPs Ports for the cluster](#creating-ipv6-api-and-ingress-vips-ports-for-the-cluster)
8+
- [Deploy OpenShift](#deploy-openshift)
9+
10+
## Prerequisites
11+
12+
* Installation with single stack IPv6 is only allowed when using one pre-created OpenStack IPv6 subnet.
13+
* DNS must be configured in the Subnet.
14+
* Add the IPv6 Subnet to a neutron router to provide router advertisements.
15+
* The network MTU must accommodate the minimum MTU for IPv6, which is 1280, and OVN-Kubernetes encapsulation overhead, which is 100.
16+
* API and Ingress VIPs ports needs to pre-created by the user and the addresses specified in the `install-config.yaml`.
17+
* A local image registry needs to be pre-configured to mirror the images over IPv6.
18+
19+
Additional prerequisites are listed at the [OpenStack Platform Customization docs](./customization.md)
20+
21+
**Note**: Converting a dual-stack cluster to single stack IPv6 cluster is not supported with OpenStack.
22+
23+
## Creating Network for the cluster
24+
25+
You must create one network and add the IPv6 subnet. Here is an example:
26+
27+
```sh
28+
$ openstack network create --project <project-name> --share --external --provider-physical-network <physical-network> --provider-network-type flat v6-network
29+
$ openstack subnet create --project <project-name> v6-subnet --subnet-range fd2e:6f44:5dd8:c956::/64 --dhcp --dns-nameserver <dns-address> --network v6-network --ip-version 6 --ipv6-ra-mode stateful --ipv6-address-mode stateful
30+
```
31+
32+
**Note**: using an IPv6 slaac subnet is not supported given a known [OpenStack issue](https://bugzilla.redhat.com/show_bug.cgi?id=2304331) that prevents DNS from working.
33+
34+
Given the above example uses a provider network, this network can be added to the router external gateway to enable external connectivity and router advertisements with the following command:
35+
```sh
36+
$ openstack router set --external-gateway v6-network <router-id>
37+
```
38+
39+
## Creating IPv6 API and Ingress VIPs Ports for the cluster
40+
41+
You must create the API and Ingress VIPs Ports with the following commands:
42+
43+
```sh
44+
$ openstack port create api --network v6-network
45+
$ openstack port create ingress --network v6-network
46+
```
47+
48+
## Deploy OpenShift
49+
50+
Now that the Networking resources are pre-created you can deploy OpenShift. Here is an example of `install-config.yaml`:
51+
52+
```yaml
53+
apiVersion: v1
54+
baseDomain: mydomain.test
55+
compute:
56+
- name: worker
57+
platform:
58+
openstack:
59+
type: m1.xlarge
60+
replicas: 3
61+
controlPlane:
62+
name: master
63+
platform:
64+
openstack:
65+
type: m1.xlarge
66+
replicas: 3
67+
metadata:
68+
name: mycluster
69+
networking:
70+
machineNetwork:
71+
- cidr: "fd2e:6f44:5dd8:c956::/64"
72+
clusterNetwork:
73+
- cidr: fd01::/48
74+
hostPrefix: 64
75+
serviceNetwork:
76+
- fd02::/112
77+
platform:
78+
openstack:
79+
ingressVIPs: ['fd2e:6f44:5dd8:c956::383']
80+
apiVIPs: ['fd2e:6f44:5dd8:c956::9a']
81+
controlPlanePort:
82+
fixedIPs:
83+
- subnet:
84+
name: subnet-v6
85+
network:
86+
name: v6-network
87+
imageContentSources:
88+
- mirrors:
89+
- <mirror>
90+
source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
91+
- mirrors:
92+
- <mirror>
93+
source: registry.ci.openshift.org/ocp/release
94+
additionalTrustBundle: |
95+
<certificate-of-the-mirror>
96+
```
97+
There are important things to note:
98+
99+
The subnets under `platform.openstack.controlPlanePort.fixedIPs` can contain both id or name. The same applies to the network `platform.openstack.controlPlanePort.network`.
100+
101+
The image content sources contains the details of the mirror to be used. Please follow the docs to configure a [local image registry](https://docs.openshift.com/container-platform/4.16/installing/disconnected_install/installing-mirroring-creating-registry.html).

0 commit comments

Comments
 (0)