|
| 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