Browse Source

Merge "Allow overlay tunnel endpoints on IPv6 address" into stable/rocky

changes/82/681782/1
Zuul 1 week ago
parent
commit
846e463622

+ 40
- 0
environments/external-loadbalancer-vip-v6-all.yaml View File

@@ -0,0 +1,40 @@
1
+# This file allows IPv6 deployment on tenant networks as well.
2
+# This should only be used for new deployments and not for upgrade
3
+# or update.
4
+resource_registry:
5
+  OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external_v6.yaml
6
+  OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api_v6.yaml
7
+  OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage_v6.yaml
8
+  OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt_v6.yaml
9
+  OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip_v6.yaml
10
+  OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external_from_pool_v6.yaml
11
+  OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api_from_pool_v6.yaml
12
+  OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage_from_pool_v6.yaml
13
+  OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_from_pool_v6.yaml
14
+  OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant_from_pool_v6.yaml
15
+  # Management network is optional and disabled by default
16
+  #OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management_from_pool_v6.yaml
17
+
18
+parameter_defaults:
19
+  # When using an external loadbalancer set the following in parameter_defaults
20
+  # to control your VIPs (currently one per network)
21
+  # NOTE: we will eventually move to one VIP per service
22
+  #
23
+  ControlFixedIPs: [{'ip_address':'192.168.24.251'}]
24
+  PublicVirtualFixedIPs: [{'ip_address':'2001:db8:fd00:1000:0000:0000:0000:0005'}]
25
+  InternalApiVirtualFixedIPs: [{'ip_address':'fd00:fd00:fd00:2000:0000:0000:0000:0005'}]
26
+  StorageVirtualFixedIPs: [{'ip_address':'fd00:fd00:fd00:3000:0000:0000:0000:0005'}]
27
+  StorageMgmtVirtualFixedIPs: [{'ip_address':'fd00:fd00:fd00:4000:0000:0000:0000:0005'}]
28
+  RedisVirtualFixedIPs: [{'ip_address':'fd00:fd00:fd00:2000:0000:0000:0000:0006'}]
29
+  ControllerIPs:
30
+    external:
31
+      - 2001:db8:fd00:1000:0000:0000:0000:0007
32
+    internal_api:
33
+      - fd00:fd00:fd00:2000:0000:0000:0000:0007
34
+    storage:
35
+      - fd00:fd00:fd00:3000:0000:0000:0000:0007
36
+    storage_mgmt:
37
+      - fd00:fd00:fd00:4000:0000:0000:0000:0007
38
+    tenant:
39
+      - fd00:fd00:fd00:5000:0000:0000:0000:0007
40
+  EnableLoadBalancer: false

+ 64
- 0
environments/network-environment-v6-all.j2.yaml View File

@@ -0,0 +1,64 @@
1
+# This file allows IPv6 deployment on tenant networks as well.
2
+# This should only be used for new deployments and not for upgrade
3
+# or update.
4
+resource_registry:
5
+  # Network Interface templates to use (these files must exist). You can
6
+  # override these by including one of the net-*.yaml environment files,
7
+  # such as net-bond-with-vlans-v6.yaml, or modifying the list here.
8
+{%- for role in roles %}
9
+  # Port assignments for the {{role.name}}
10
+  OS::TripleO::{{role.name}}::Net::SoftwareConfig:
11
+    ../network/config/single-nic-vlans/{{role.deprecated_nic_config_name|default(role.name.lower() ~ ".yaml")}}
12
+{%- endfor %}
13
+
14
+parameter_defaults:
15
+  # This section is where deployment-specific configuration is done
16
+  #
17
+  # NOTE: (Since Rocky)
18
+  # ControlPlaneSubnetCidr: It is no longer a requirement to provide this
19
+  #                         parameter. The attribute is resolved from the
20
+  #                         ctlplane subnet(s).
21
+  # ControlPlaneDefaultRoute: It is no longer a requirement to provide this
22
+  #                           parameter. The attribute is resolved from the
23
+  #                           ctlplane subnet(s).
24
+  # EC2MetadataIp: It is no longer a requirement to provide this parameter. The
25
+  #                attribute is resolved from the ctlplane subnet(s).
26
+  #
27
+  #
28
+{% for network in networks if network.enabled|default(true) %}
29
+  # Customize the IP subnets to match the local environment
30
+  {{network.name}}NetCidr: '{{network.ipv6_subnet}}'
31
+  # Customize the IP range to use for static IPs and VIPs
32
+{%-     if network.name == 'External' %}
33
+  # Leave room if the external network is also used for floating IPs
34
+{%-     endif %}
35
+  {{network.name}}AllocationPools: {{network.ipv6_allocation_pools}}
36
+{%-     if network.gateway_ipv6|default(false) %}
37
+  # Gateway router for routable networks
38
+  {{network.name}}InterfaceDefaultRoute: '{{network.gateway_ipv6}}'
39
+{%-     endif %}
40
+{%-     if network.vlan is defined %}
41
+  # Customize the VLAN ID to match the local environment
42
+  {{network.name}}NetworkVlanID: {{network.vlan}}
43
+{%-     endif %}
44
+{%-     if network.routes_ipv6 %}
45
+  # Routes to add to host_routes property of the subnets in neutron.
46
+  {{network.name}}Routes: {{network.routes_ipv6|default([])}}
47
+{%-     endif %}
48
+{% endfor %}
49
+{#- FIXME: These global parameters should be defined in a YAML file, e.g. network_data.yaml. #}
50
+  # Define the DNS servers (maximum 2) for the overcloud nodes
51
+  # When the list is not set (empty) the nameservers on the ctlplane subnet(s) will be used.
52
+  # (ctlplane subnet(s) nameservers are confgured by the ``undercloud_nameservers`` option in ``undercloud.conf``)
53
+  DnsServers: []
54
+  # List of Neutron network types for tenant networks (will be used in order)
55
+  NeutronNetworkType: 'vxlan,vlan'
56
+  # The tunnel type for the tenant network (vxlan or gre). Set to '' to disable tunneling.
57
+  NeutronTunnelTypes: 'vxlan'
58
+  # Neutron VLAN ranges per network, for example 'datacentre:1:499,tenant:500:1000':
59
+  NeutronNetworkVLANRanges: 'datacentre:1:1000'
60
+  # Customize bonding options, e.g. "mode=4 lacp_rate=1 updelay=1000 miimon=100"
61
+  # for Linux bonds w/LACP, or "bond_mode=active-backup" for OVS active/backup.
62
+  BondInterfaceOvsOptions: "bond_mode=active-backup"
63
+  # Specify Tunnel endpoints to be IPv6
64
+  NeutronOverlayIPVersion: 6

+ 67
- 0
environments/network-isolation-v6-all.j2.yaml View File

@@ -0,0 +1,67 @@
1
+# This file allows IPv6 deployment on tenant networks as well.
2
+# This should only be used for new deployments and not for upgrade
3
+# or update.
4
+{%- set primary_role = [roles[0]] -%}
5
+{%- for role in roles -%}
6
+  {%- if 'primary' in role.tags and 'controller' in role.tags -%}
7
+    {%- set _ = primary_role.pop() -%}
8
+    {%- set _ = primary_role.append(role) -%}
9
+  {%- endif -%}
10
+{%- endfor -%}
11
+{%- set primary_role_name = primary_role[0].name -%}
12
+# NOTE: This template is now deprecated, and is only included for compatibility
13
+# when upgrading a deployment where this template was originally used. For new
14
+# deployments, set "ipv6: true" on desired networks in network_data.yaml, and
15
+# include network-isolation.yaml.
16
+#
17
+# Enable the creation of Neutron networks for isolated Overcloud
18
+# traffic and configure each role to assign ports (related
19
+# to that role) on these networks.
20
+# primary role is: {{primary_role_name}}
21
+resource_registry:
22
+  # networks as defined in network_data.yaml
23
+  {%- for network in networks if network.enabled|default(true) %}
24
+  OS::TripleO::Network::{{network.name}}: ../network/{{network.name_lower|default(network.name.lower())}}_v6.yaml
25
+  {%- endfor %}
26
+
27
+  # Port assignments for the VIPs
28
+  {%- for network in networks if network.vip and network.enabled|default(true) %}
29
+  OS::TripleO::Network::Ports::{{network.name}}VipPort: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml
30
+  {%- endfor %}
31
+
32
+  OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip_v6.yaml
33
+
34
+  # Port assignments by role, edit role definition to assign networks to roles.
35
+{%- for role in roles %}
36
+  # Port assignments for the {{role.name}}
37
+  {%- for network in networks %}
38
+    {%- if network.name in role.networks|default([]) and network.enabled|default(true) %}
39
+  OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml
40
+    {%- endif %}
41
+  {%- endfor %}
42
+{% endfor %}
43
+
44
+
45
+parameter_defaults:
46
+  # Enable IPv6 for Ceph.
47
+  CephIPv6: True
48
+  # Enable IPv6 for Corosync. This is required when Corosync is using an IPv6 IP in the cluster.
49
+  CorosyncIPv6: True
50
+  # Enable IPv6 for MongoDB. This is required when MongoDB is using an IPv6 IP.
51
+  MongoDbIPv6: True
52
+  # Enable various IPv6 features in Nova.
53
+  NovaIPv6: True
54
+  # Enable IPv6 environment for RabbitMQ.
55
+  RabbitIPv6: True
56
+  # Enable IPv6 environment for Memcached.
57
+  MemcachedIPv6: True
58
+  # Enable IPv6 environment for MySQL.
59
+  MysqlIPv6: True
60
+  # Enable IPv6 environment for Manila
61
+  ManilaIPv6: True
62
+  # Enable IPv6 environment for Redis.
63
+  RedisIPv6: True
64
+  # Enable IPv6 environment for OpenDaylight
65
+  OpenDaylightEnableIPv6Deployment: True
66
+  # Specify Tunnel endpoints to be IPv6
67
+  NeutronOverlayIPVersion: 6

+ 0
- 1
network_data.yaml View File

@@ -84,7 +84,6 @@
84 84
   vlan: 50
85 85
   ip_subnet: '172.16.0.0/24'
86 86
   allocation_pools: [{'start': '172.16.0.4', 'end': '172.16.0.250'}]
87
-  # Note that tenant tunneling is only compatible with IPv4 addressing at this time.
88 87
   ipv6_subnet: 'fd00:fd00:fd00:5000::/64'
89 88
   ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}]
90 89
 - name: External

+ 0
- 1
network_data_ganesha.yaml View File

@@ -81,7 +81,6 @@
81 81
   vlan: 50
82 82
   ip_subnet: '172.16.0.0/24'
83 83
   allocation_pools: [{'start': '172.16.0.4', 'end': '172.16.0.250'}]
84
-  # Note that tenant tunneling is only compatible with IPv4 addressing at this time.
85 84
   ipv6_subnet: 'fd00:fd00:fd00:5000::/64'
86 85
   ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}]
87 86
 - name: External

+ 0
- 2
network_data_routed.yaml View File

@@ -146,7 +146,6 @@
146 146
   gateway_ip: '172.16.0.1'
147 147
   routes: [{'destination':'172.16.0.0/20', 'nexthop':'172.16.0.1'}]
148 148
   allocation_pools: [{'start': '172.16.0.4', 'end': '172.16.0.250'}]
149
-  # Note that tenant tunneling is only compatible with IPv4 addressing at this time.
150 149
   ipv6_subnet: 'fd00:fd00:fd00:5000::/64'
151 150
   ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}]
152 151
   routes_ipv6: [{'destination':'fd00:fd00:fd00:5004::/64', 'nexthop':'fd00:fd00:fd00:5000::1'}]
@@ -158,7 +157,6 @@
158 157
   gateway_ip: '172.16.1.1'
159 158
   routes: [{'destination':'172.16.0.0/20', 'nexthop':'172.16.1.1'}]
160 159
   allocation_pools: [{'start': '172.16.1.4', 'end': '172.16.1.250'}]
161
-  # Note that tenant tunneling is only compatible with IPv4 addressing at this time.
162 160
   ipv6_subnet: 'fd00:fd00:fd00:5004::/64'
163 161
   ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5004::10', 'end': 'fd00:fd00:fd00:5004:ffff:ffff:ffff:fffe'}]
164 162
   routes_ipv6: [{'destination':'fd00:fd00:fd00:5000::/64', 'nexthop':'fd00:fd00:fd00:5004::1'}]

+ 8
- 0
releasenotes/notes/support_IPv6_for_tenant_networks-30938bfdde547969.yaml View File

@@ -0,0 +1,8 @@
1
+---
2
+features:
3
+  - |
4
+    OVS and neutron now supports endpoint creation on IPv6 networks. New
5
+    network-*-v6-all.j2.yaml environment files are added to allow tenant
6
+    network to be created on IPv6 addresses. Note that these files are only
7
+    to be used for new deployments and not during update or upgrade.
8
+    network_data*.yaml files are also edited to reflect the same.

Loading…
Cancel
Save