Improve floating IP allocation
- Never allocate floating IP for etcd service. - Introduce a new label `master_lb_floating_ip_enabled` which controls if Magnum allocates floating IP for the master load balancer. This label only takes effect when the `master_lb_enabled` is set. The default value is the same with `floating_ip_enabled`. - The `floating_ip_enabled` property now only controls if Magnum should allocate the floating IPs for the master and worker nodes. Change-Id: I0a232406deaf112b0cb9e445735d7b49206c676d Story: #2005153 Task: #29868
This commit is contained in:
parent
13e8c11f78
commit
c47fde0cbe
|
@ -158,6 +158,6 @@ class DcosCentosTemplateDefinition(template_def.BaseTemplateDefinition):
|
||||||
|
|
||||||
template_def.add_priv_net_env_file(env_files, cluster_template)
|
template_def.add_priv_net_env_file(env_files, cluster_template)
|
||||||
template_def.add_lb_env_file(env_files, cluster_template)
|
template_def.add_lb_env_file(env_files, cluster_template)
|
||||||
template_def.add_fip_env_file(env_files, cluster_template)
|
template_def.add_fip_env_file(env_files, cluster_template, cluster)
|
||||||
|
|
||||||
return env_files
|
return env_files
|
||||||
|
|
|
@ -384,6 +384,9 @@ the table are linked to more details elsewhere in the user guide.
|
||||||
+---------------------------------------+--------------------+---------------+
|
+---------------------------------------+--------------------+---------------+
|
||||||
| `tiller_namespace`_ | see below | see below |
|
| `tiller_namespace`_ | see below | see below |
|
||||||
+---------------------------------------+--------------------+---------------+
|
+---------------------------------------+--------------------+---------------+
|
||||||
|
| `master_lb_floating_ip_enabled`_ | - true | see below |
|
||||||
|
| | - false | |
|
||||||
|
+---------------------------------------+--------------------+---------------+
|
||||||
|
|
||||||
Cluster
|
Cluster
|
||||||
-------
|
-------
|
||||||
|
@ -1232,6 +1235,12 @@ _`tiller_namespace`
|
||||||
Configure in which namespace tiller is going to be installed.
|
Configure in which namespace tiller is going to be installed.
|
||||||
Default: magnum-tiller
|
Default: magnum-tiller
|
||||||
|
|
||||||
|
_`master_lb_floating_ip_enabled`
|
||||||
|
Controls if Magnum allocates floating IP for the load balancer of master
|
||||||
|
nodes. This label only takes effect when the template property
|
||||||
|
``master_lb_enabled`` is set. If not specified, the default value is the same
|
||||||
|
as template property ``floating_ip_enabled``.
|
||||||
|
|
||||||
External load balancer for services
|
External load balancer for services
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
# Environment file to disable FloatingIP in a Kubernetes cluster by mapping
|
|
||||||
# FloatingIP-related resource types to OS::Neutron::FloatingIP
|
|
||||||
resource_registry:
|
resource_registry:
|
||||||
"Magnum::FloatingIPAddressSwitcher": "../fragments/floating_ip_address_switcher_public.yaml"
|
"Magnum::FloatingIPAddressSwitcher": "../fragments/floating_ip_address_switcher_public.yaml"
|
||||||
|
|
||||||
|
|
|
@ -2,3 +2,5 @@
|
||||||
|
|
||||||
resource_registry:
|
resource_registry:
|
||||||
"Magnum::Optional::Neutron::LBaaS::FloatingIP": "OS::Neutron::FloatingIP"
|
"Magnum::Optional::Neutron::LBaaS::FloatingIP": "OS::Neutron::FloatingIP"
|
||||||
|
|
||||||
|
"Magnum::FloatingIPAddressSwitcher": "../fragments/floating_ip_address_switcher_public.yaml"
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
# etcd service load balancer doesn't have floating IP associated.
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
|
||||||
|
fixed_subnet:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
protocol:
|
||||||
|
type: string
|
||||||
|
default: TCP
|
||||||
|
constraints:
|
||||||
|
- allowed_values: ["TCP", "HTTP"]
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: number
|
||||||
|
|
||||||
|
resources:
|
||||||
|
loadbalancer:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::LoadBalancer
|
||||||
|
properties:
|
||||||
|
vip_subnet: {get_param: fixed_subnet}
|
||||||
|
|
||||||
|
listener:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::Listener
|
||||||
|
properties:
|
||||||
|
loadbalancer: {get_resource: loadbalancer}
|
||||||
|
protocol: {get_param: protocol}
|
||||||
|
protocol_port: {get_param: port}
|
||||||
|
|
||||||
|
pool:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::Pool
|
||||||
|
properties:
|
||||||
|
lb_algorithm: ROUND_ROBIN
|
||||||
|
listener: {get_resource: listener}
|
||||||
|
protocol: {get_param: protocol}
|
||||||
|
|
||||||
|
monitor:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::HealthMonitor
|
||||||
|
properties:
|
||||||
|
type: TCP
|
||||||
|
delay: 5
|
||||||
|
max_retries: 5
|
||||||
|
timeout: 5
|
||||||
|
pool: { get_resource: pool }
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
pool_id:
|
||||||
|
value: {get_resource: pool}
|
||||||
|
|
||||||
|
address:
|
||||||
|
value: {get_attr: [loadbalancer, vip_address]}
|
|
@ -127,6 +127,6 @@ class CoreOSK8sTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
|
||||||
template_def.add_etcd_volume_env_file(env_files, cluster_template)
|
template_def.add_etcd_volume_env_file(env_files, cluster_template)
|
||||||
template_def.add_volume_env_file(env_files, cluster)
|
template_def.add_volume_env_file(env_files, cluster)
|
||||||
template_def.add_lb_env_file(env_files, cluster_template)
|
template_def.add_lb_env_file(env_files, cluster_template)
|
||||||
template_def.add_fip_env_file(env_files, cluster_template)
|
template_def.add_fip_env_file(env_files, cluster_template, cluster)
|
||||||
|
|
||||||
return env_files
|
return env_files
|
||||||
|
|
|
@ -162,6 +162,6 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
|
||||||
template_def.add_etcd_volume_env_file(env_files, cluster_template)
|
template_def.add_etcd_volume_env_file(env_files, cluster_template)
|
||||||
template_def.add_volume_env_file(env_files, cluster)
|
template_def.add_volume_env_file(env_files, cluster)
|
||||||
template_def.add_lb_env_file(env_files, cluster_template)
|
template_def.add_lb_env_file(env_files, cluster_template)
|
||||||
template_def.add_fip_env_file(env_files, cluster_template)
|
template_def.add_fip_env_file(env_files, cluster_template, cluster)
|
||||||
|
|
||||||
return env_files
|
return env_files
|
||||||
|
|
|
@ -154,6 +154,6 @@ class SwarmModeTemplateDefinition(template_def.BaseTemplateDefinition):
|
||||||
template_def.add_priv_net_env_file(env_files, cluster_template)
|
template_def.add_priv_net_env_file(env_files, cluster_template)
|
||||||
template_def.add_volume_env_file(env_files, cluster)
|
template_def.add_volume_env_file(env_files, cluster)
|
||||||
template_def.add_lb_env_file(env_files, cluster_template)
|
template_def.add_lb_env_file(env_files, cluster_template)
|
||||||
template_def.add_fip_env_file(env_files, cluster_template)
|
template_def.add_fip_env_file(env_files, cluster_template, cluster)
|
||||||
|
|
||||||
return env_files
|
return env_files
|
||||||
|
|
|
@ -15,6 +15,7 @@ import abc
|
||||||
import ast
|
import ast
|
||||||
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
from oslo_utils import strutils
|
||||||
import re
|
import re
|
||||||
import requests
|
import requests
|
||||||
import six
|
import six
|
||||||
|
@ -385,15 +386,22 @@ def add_etcd_volume_env_file(env_files, cluster_template):
|
||||||
env_files.append(COMMON_ENV_PATH + 'with_etcd_volume.yaml')
|
env_files.append(COMMON_ENV_PATH + 'with_etcd_volume.yaml')
|
||||||
|
|
||||||
|
|
||||||
def add_fip_env_file(env_files, cluster_template):
|
def add_fip_env_file(env_files, cluster_template, cluster):
|
||||||
|
lb_fip_enabled = cluster.labels.get(
|
||||||
|
"master_lb_floating_ip_enabled",
|
||||||
|
cluster_template.floating_ip_enabled
|
||||||
|
)
|
||||||
|
master_lb_fip_enabled = strutils.bool_from_string(lb_fip_enabled)
|
||||||
|
|
||||||
if cluster_template.floating_ip_enabled:
|
if cluster_template.floating_ip_enabled:
|
||||||
env_files.append(COMMON_ENV_PATH + 'enable_floating_ip.yaml')
|
env_files.append(COMMON_ENV_PATH + 'enable_floating_ip.yaml')
|
||||||
if cluster_template.master_lb_enabled:
|
|
||||||
env_files.append(COMMON_ENV_PATH + 'enable_lb_floating_ip.yaml')
|
|
||||||
else:
|
else:
|
||||||
env_files.append(COMMON_ENV_PATH + 'disable_floating_ip.yaml')
|
env_files.append(COMMON_ENV_PATH + 'disable_floating_ip.yaml')
|
||||||
if cluster_template.master_lb_enabled:
|
|
||||||
env_files.append(COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml')
|
if cluster_template.master_lb_enabled and master_lb_fip_enabled:
|
||||||
|
env_files.append(COMMON_ENV_PATH + 'enable_lb_floating_ip.yaml')
|
||||||
|
else:
|
||||||
|
env_files.append(COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml')
|
||||||
|
|
||||||
|
|
||||||
def add_priv_net_env_file(env_files, cluster_template):
|
def add_priv_net_env_file(env_files, cluster_template):
|
||||||
|
|
|
@ -515,7 +515,7 @@ resources:
|
||||||
private_network_name: private
|
private_network_name: private
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
@ -523,10 +523,9 @@ resources:
|
||||||
port: {get_param: kubernetes_port}
|
port: {get_param: kubernetes_port}
|
||||||
|
|
||||||
etcd_lb:
|
etcd_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_etcd.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
|
||||||
protocol: {get_param: loadbalancing_protocol}
|
protocol: {get_param: loadbalancing_protocol}
|
||||||
port: 2379
|
port: 2379
|
||||||
|
|
||||||
|
|
|
@ -586,7 +586,7 @@ resources:
|
||||||
private_network_name: private
|
private_network_name: private
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
@ -594,10 +594,9 @@ resources:
|
||||||
port: {get_param: kubernetes_port}
|
port: {get_param: kubernetes_port}
|
||||||
|
|
||||||
etcd_lb:
|
etcd_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_etcd.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
|
||||||
protocol: {get_param: loadbalancing_protocol}
|
protocol: {get_param: loadbalancing_protocol}
|
||||||
port: 2379
|
port: 2379
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
description: name of ssh key to be provisioned on our server
|
description: name of ssh key to be provisioned on our server
|
||||||
default: ""
|
default: ""
|
||||||
|
|
||||||
external_network:
|
external_network:
|
||||||
type: string
|
type: string
|
||||||
description: uuid/name of a network to use for floating ip addresses
|
description: uuid/name of a network to use for floating ip addresses
|
||||||
|
@ -370,7 +370,7 @@ parameters:
|
||||||
resources:
|
resources:
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_param: fixed_subnet}
|
fixed_subnet: {get_param: fixed_subnet}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
@ -378,10 +378,9 @@ resources:
|
||||||
port: {get_param: kubernetes_port}
|
port: {get_param: kubernetes_port}
|
||||||
|
|
||||||
etcd_lb:
|
etcd_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_etcd.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_param: fixed_subnet}
|
fixed_subnet: {get_param: fixed_subnet}
|
||||||
external_network: {get_param: external_network}
|
|
||||||
protocol: {get_param: loadbalancing_protocol}
|
protocol: {get_param: loadbalancing_protocol}
|
||||||
port: 2379
|
port: 2379
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
description: name of ssh key to be provisioned on our server
|
description: name of ssh key to be provisioned on our server
|
||||||
default: ""
|
default: ""
|
||||||
|
|
||||||
external_network:
|
external_network:
|
||||||
type: string
|
type: string
|
||||||
description: uuid/name of a network to use for floating ip addresses
|
description: uuid/name of a network to use for floating ip addresses
|
||||||
|
@ -242,7 +242,7 @@ resources:
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
|
|
@ -17,7 +17,7 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
description: name of ssh key to be provisioned on our server
|
description: name of ssh key to be provisioned on our server
|
||||||
default: ""
|
default: ""
|
||||||
|
|
||||||
external_network:
|
external_network:
|
||||||
type: string
|
type: string
|
||||||
description: uuid/name of a network to use for floating ip addresses
|
description: uuid/name of a network to use for floating ip addresses
|
||||||
|
@ -284,7 +284,7 @@ resources:
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
@ -292,10 +292,9 @@ resources:
|
||||||
port: {get_param: swarm_port}
|
port: {get_param: swarm_port}
|
||||||
|
|
||||||
etcd_lb:
|
etcd_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_etcd.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
|
||||||
protocol: {get_param: loadbalancing_protocol}
|
protocol: {get_param: loadbalancing_protocol}
|
||||||
port: 2379
|
port: 2379
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,7 @@ resources:
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
properties:
|
properties:
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
|
|
|
@ -304,6 +304,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'../../common/templates/environments/with_volume.yaml',
|
'../../common/templates/environments/with_volume.yaml',
|
||||||
'../../common/templates/environments/no_master_lb.yaml',
|
'../../common/templates/environments/no_master_lb.yaml',
|
||||||
'../../common/templates/environments/disable_floating_ip.yaml',
|
'../../common/templates/environments/disable_floating_ip.yaml',
|
||||||
|
'../../common/templates/environments/disable_lb_floating_ip.yaml',
|
||||||
],
|
],
|
||||||
env_files)
|
env_files)
|
||||||
|
|
||||||
|
@ -424,6 +425,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'../../common/templates/environments/with_volume.yaml',
|
'../../common/templates/environments/with_volume.yaml',
|
||||||
'../../common/templates/environments/no_master_lb.yaml',
|
'../../common/templates/environments/no_master_lb.yaml',
|
||||||
'../../common/templates/environments/disable_floating_ip.yaml',
|
'../../common/templates/environments/disable_floating_ip.yaml',
|
||||||
|
'../../common/templates/environments/disable_lb_floating_ip.yaml'
|
||||||
],
|
],
|
||||||
env_files)
|
env_files)
|
||||||
|
|
||||||
|
@ -532,6 +534,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'../../common/templates/environments/with_volume.yaml',
|
'../../common/templates/environments/with_volume.yaml',
|
||||||
'../../common/templates/environments/no_master_lb.yaml',
|
'../../common/templates/environments/no_master_lb.yaml',
|
||||||
'../../common/templates/environments/disable_floating_ip.yaml',
|
'../../common/templates/environments/disable_floating_ip.yaml',
|
||||||
|
'../../common/templates/environments/disable_lb_floating_ip.yaml'
|
||||||
],
|
],
|
||||||
env_files)
|
env_files)
|
||||||
|
|
||||||
|
@ -630,7 +633,9 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'../../common/templates/environments/no_etcd_volume.yaml',
|
'../../common/templates/environments/no_etcd_volume.yaml',
|
||||||
'../../common/templates/environments/with_volume.yaml',
|
'../../common/templates/environments/with_volume.yaml',
|
||||||
'../../common/templates/environments/no_master_lb.yaml',
|
'../../common/templates/environments/no_master_lb.yaml',
|
||||||
'../../common/templates/environments/disable_floating_ip.yaml'],
|
'../../common/templates/environments/disable_floating_ip.yaml',
|
||||||
|
'../../common/templates/environments/disable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
env_files)
|
env_files)
|
||||||
|
|
||||||
@patch('requests.get')
|
@patch('requests.get')
|
||||||
|
@ -726,7 +731,9 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'../../common/templates/environments/no_etcd_volume.yaml',
|
'../../common/templates/environments/no_etcd_volume.yaml',
|
||||||
'../../common/templates/environments/with_volume.yaml',
|
'../../common/templates/environments/with_volume.yaml',
|
||||||
'../../common/templates/environments/no_master_lb.yaml',
|
'../../common/templates/environments/no_master_lb.yaml',
|
||||||
'../../common/templates/environments/disable_floating_ip.yaml'],
|
'../../common/templates/environments/disable_floating_ip.yaml',
|
||||||
|
'../../common/templates/environments/disable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
env_files)
|
env_files)
|
||||||
|
|
||||||
@patch('requests.get')
|
@patch('requests.get')
|
||||||
|
@ -970,6 +977,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'../../common/templates/environments/with_volume.yaml',
|
'../../common/templates/environments/with_volume.yaml',
|
||||||
'../../common/templates/environments/no_master_lb.yaml',
|
'../../common/templates/environments/no_master_lb.yaml',
|
||||||
'../../common/templates/environments/disable_floating_ip.yaml',
|
'../../common/templates/environments/disable_floating_ip.yaml',
|
||||||
|
'../../common/templates/environments/disable_lb_floating_ip.yaml',
|
||||||
],
|
],
|
||||||
env_files)
|
env_files)
|
||||||
reqget.assert_called_once_with('http://etcd/test?size=1', proxies={
|
reqget.assert_called_once_with('http://etcd/test?size=1', proxies={
|
||||||
|
|
|
@ -185,39 +185,107 @@ class TemplateDefinitionTestCase(base.TestCase):
|
||||||
|
|
||||||
def test_add_fip_env_lb_disabled_with_fp(self):
|
def test_add_fip_env_lb_disabled_with_fp(self):
|
||||||
mock_cluster_template = mock.MagicMock(floating_ip_enabled=True,
|
mock_cluster_template = mock.MagicMock(floating_ip_enabled=True,
|
||||||
master_lb_enabled=False)
|
master_lb_enabled=False,
|
||||||
|
labels={})
|
||||||
|
mock_cluster = mock.MagicMock(labels={})
|
||||||
env_files = []
|
env_files = []
|
||||||
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template)
|
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template,
|
||||||
self.assertEqual([cmn_tdef.COMMON_ENV_PATH +
|
mock_cluster)
|
||||||
'enable_floating_ip.yaml'], env_files)
|
self.assertEqual(
|
||||||
|
[
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'enable_floating_ip.yaml',
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
|
env_files
|
||||||
|
)
|
||||||
|
|
||||||
def test_add_fip_env_lb_enabled_with_fp(self):
|
def test_add_fip_env_lb_enabled_with_fp(self):
|
||||||
mock_cluster_template = mock.MagicMock(floating_ip_enabled=True,
|
mock_cluster_template = mock.MagicMock(floating_ip_enabled=True,
|
||||||
master_lb_enabled=True)
|
master_lb_enabled=True,
|
||||||
|
labels={})
|
||||||
|
mock_cluster = mock.MagicMock(labels={})
|
||||||
env_files = []
|
env_files = []
|
||||||
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template)
|
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template,
|
||||||
self.assertEqual([cmn_tdef.COMMON_ENV_PATH +
|
mock_cluster)
|
||||||
'enable_floating_ip.yaml',
|
self.assertEqual(
|
||||||
cmn_tdef.COMMON_ENV_PATH +
|
[
|
||||||
'enable_lb_floating_ip.yaml'], env_files)
|
cmn_tdef.COMMON_ENV_PATH + 'enable_floating_ip.yaml',
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'enable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
|
env_files
|
||||||
|
)
|
||||||
|
|
||||||
def test_add_fip_env_lb_disabled_without_fp(self):
|
def test_add_fip_env_lb_disabled_without_fp(self):
|
||||||
mock_cluster_template = mock.MagicMock(floating_ip_enabled=False,
|
mock_cluster_template = mock.MagicMock(floating_ip_enabled=False,
|
||||||
master_lb_enabled=False)
|
master_lb_enabled=False,
|
||||||
|
labels={})
|
||||||
|
mock_cluster = mock.MagicMock(labels={})
|
||||||
env_files = []
|
env_files = []
|
||||||
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template)
|
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template,
|
||||||
self.assertEqual([cmn_tdef.COMMON_ENV_PATH +
|
mock_cluster)
|
||||||
'disable_floating_ip.yaml'], env_files)
|
self.assertEqual(
|
||||||
|
[
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml',
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
|
env_files
|
||||||
|
)
|
||||||
|
|
||||||
def test_add_fip_env_lb_enabled_without_fp(self):
|
def test_add_fip_env_lb_enabled_without_fp(self):
|
||||||
mock_cluster_template = mock.MagicMock(floating_ip_enabled=False,
|
mock_cluster_template = mock.MagicMock(floating_ip_enabled=False,
|
||||||
master_lb_enabled=True)
|
master_lb_enabled=True,
|
||||||
|
labels={})
|
||||||
|
mock_cluster = mock.MagicMock(labels={})
|
||||||
env_files = []
|
env_files = []
|
||||||
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template)
|
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template,
|
||||||
self.assertEqual([cmn_tdef.COMMON_ENV_PATH +
|
mock_cluster)
|
||||||
'disable_floating_ip.yaml',
|
self.assertEqual(
|
||||||
cmn_tdef.COMMON_ENV_PATH +
|
[
|
||||||
'disable_lb_floating_ip.yaml'], env_files)
|
cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml',
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
|
env_files
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_add_fip_env_lb_fip_enabled_without_fp(self):
|
||||||
|
mock_cluster_template = mock.MagicMock(
|
||||||
|
floating_ip_enabled=False,
|
||||||
|
master_lb_enabled=True,
|
||||||
|
labels={"master_lb_floating_ip_enabled": "true"}
|
||||||
|
)
|
||||||
|
mock_cluster = mock.MagicMock(
|
||||||
|
labels={"master_lb_floating_ip_enabled": "true"})
|
||||||
|
env_files = []
|
||||||
|
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template,
|
||||||
|
mock_cluster)
|
||||||
|
self.assertEqual(
|
||||||
|
[
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml',
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'enable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
|
env_files
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_add_fip_env_lb_enable_lbfip_disable(self):
|
||||||
|
mock_cluster_template = mock.MagicMock(
|
||||||
|
floating_ip_enabled=False,
|
||||||
|
master_lb_enabled=True,
|
||||||
|
labels={"master_lb_floating_ip_enabled": "false"}
|
||||||
|
)
|
||||||
|
mock_cluster = mock.MagicMock(
|
||||||
|
labels={"master_lb_floating_ip_enabled": "false"})
|
||||||
|
env_files = []
|
||||||
|
|
||||||
|
cmn_tdef.add_fip_env_file(env_files, mock_cluster_template,
|
||||||
|
mock_cluster)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
[
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml',
|
||||||
|
cmn_tdef.COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml'
|
||||||
|
],
|
||||||
|
env_files
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('magnum.drivers.common.driver.Driver.get_driver')
|
@mock.patch('magnum.drivers.common.driver.Driver.get_driver')
|
||||||
def test_base_get_scale_params(self, mock_driver):
|
def test_base_get_scale_params(self, mock_driver):
|
||||||
|
@ -247,7 +315,6 @@ class BaseK8sTemplateDefinitionTestCase(base.TestCase):
|
||||||
private_ip_output_key='kube_masters_private',
|
private_ip_output_key='kube_masters_private',
|
||||||
cluster_attr='master_addresses',
|
cluster_attr='master_addresses',
|
||||||
):
|
):
|
||||||
|
|
||||||
definition = self.get_definition()
|
definition = self.get_definition()
|
||||||
|
|
||||||
expected_address = expected_public_address = ['public']
|
expected_address = expected_public_address = ['public']
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
upgrade:
|
||||||
|
- The etcd service for Kubernetes cluster is no longer allocated a floating
|
||||||
|
IP.
|
||||||
|
features:
|
||||||
|
- A new label named ``master_lb_floating_ip_enabled`` is introduced which
|
||||||
|
controls if Magnum allocates floating IP for the load balancer of master
|
||||||
|
nodes. This label only takes effect when the ``master_lb_enabled`` is set.
|
||||||
|
The default value is the same as ``floating_ip_enabled``. The
|
||||||
|
``floating_ip_enabled`` property now only controls if Magnum should
|
||||||
|
allocate the floating IPs for the master and worker nodes.
|
Loading…
Reference in New Issue