Fix proxy issue for etcd and k8s

When the cloud is behind a proxy, podman needs to access the dockerhub
via proxy to pull the image, so the proxy settings need to be exported
to etcd systemd file as well. We're setting the heat-params as
environment file for k8s components already.

Besides, because CIDR of fixed subnet vary for different clusters,
so the subnet CIDR should be added into NO_PROXY list. Otherwise,
it will affect the communication between etcd members and also the
communication between k8s components.

Task: 39990
Story: 2007768

Change-Id: I4dba79e04abe38b9806e847348d3dd77ef96bee5
(cherry picked from commit b2e3f2346b)
This commit is contained in:
Feilong Wang 2020-05-31 14:23:35 +12:00
parent ee6b621ca4
commit e68f1d85f8
4 changed files with 16 additions and 6 deletions

View File

@ -58,6 +58,7 @@ After=network-online.target
Wants=network-online.target
[Service]
EnvironmentFile=/etc/sysconfig/heat-params
ExecStartPre=mkdir -p /var/lib/etcd
ExecStartPre=-/bin/podman rm etcd
ExecStart=/bin/podman run \\

View File

@ -119,6 +119,7 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
cluster_attr=None)
self.add_output('kube_masters_private',
cluster_attr=None)
self.default_subnet_cidr = '10.0.0.0/24'
def get_nodegroup_param_maps(self, master_params=None, worker_params=None):
master_params = master_params or dict()
@ -205,6 +206,12 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
extra_params['fixed_subnet_cidr'] = neutron.get_subnet(
context, subnet_id, "id", "cidr")
if cluster_template.no_proxy:
extra_params["no_proxy"] = (
cluster_template.no_proxy + "," + (
extra_params.get('fixed_subnet_cidr') or
self.default_subnet_cidr))
return extra_params
def get_params(self, context, cluster_template, cluster, **kwargs):
@ -283,7 +290,7 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
def _set_master_lb_allowed_cidrs(self, context, cluster, extra_params):
if extra_params.get("master_lb_allowed_cidrs"):
subnet_cidr = (cluster.labels.get("fixed_subnet_cidr") or
"10.0.0.0/24")
self.default_subnet_cidr)
if extra_params.get("fixed_subnet"):
subnet_cidr = neutron.get_subnet(context,
extra_params["fixed_subnet"],

View File

@ -335,7 +335,7 @@ class TestClusterConductorWithK8s(base.TestCase):
'influx_grafana_dashboard_enabled': 'True',
'http_proxy': 'http_proxy',
'https_proxy': 'https_proxy',
'no_proxy': 'no_proxy',
'no_proxy': 'no_proxy,20.200.0.0/16',
'username': 'fake_user',
'cluster_uuid': self.cluster_dict['uuid'],
'magnum_url': self.mock_osc.magnum_url.return_value,
@ -487,7 +487,7 @@ class TestClusterConductorWithK8s(base.TestCase):
'master_flavor': 'master_flavor_id',
'minion_flavor': 'flavor_id',
'network_driver': 'network_driver',
'no_proxy': 'no_proxy',
'no_proxy': 'no_proxy,20.200.0.0/16',
'number_of_masters': 1,
'number_of_minions': 1,
'region_name': 'RegionOne',
@ -748,7 +748,7 @@ class TestClusterConductorWithK8s(base.TestCase):
'etcd_volume_size': None,
'http_proxy': 'http_proxy',
'https_proxy': 'https_proxy',
'no_proxy': 'no_proxy',
'no_proxy': 'no_proxy,20.200.0.0/16',
'flannel_network_cidr': '10.101.0.0/16',
'flannel_network_subnetlen': '26',
'flannel_backend': 'vxlan',
@ -862,7 +862,7 @@ class TestClusterConductorWithK8s(base.TestCase):
'etcd_volume_size': None,
'http_proxy': 'http_proxy',
'https_proxy': 'https_proxy',
'no_proxy': 'no_proxy',
'no_proxy': 'no_proxy,20.200.0.0/16',
'nodes_affinity_policy': 'soft-anti-affinity',
'flannel_network_cidr': '10.101.0.0/16',
'flannel_network_subnetlen': '26',
@ -1103,7 +1103,7 @@ class TestClusterConductorWithK8s(base.TestCase):
'etcd_volume_type': '',
'http_proxy': 'http_proxy',
'https_proxy': 'https_proxy',
'no_proxy': 'no_proxy',
'no_proxy': 'no_proxy,20.200.0.0/16',
'flannel_network_cidr': '10.101.0.0/16',
'flannel_network_subnetlen': '26',
'flannel_backend': 'vxlan',

View File

@ -424,6 +424,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
mock_cluster_template.network_driver = 'flannel'
external_network_id = '17e4e301-b7f3-4996-b3dd-97b3a700174b'
mock_cluster_template.external_network_id = external_network_id
mock_cluster_template.no_proxy = ""
mock_cluster = mock.MagicMock()
fixed_network_name = 'fixed_network'
mock_get_fixed_network_name.return_value = fixed_network_name
@ -956,6 +957,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
mock_cluster_template.network_driver = 'calico'
external_network_id = '17e4e301-b7f3-4996-b3dd-97b3a700174b'
mock_cluster_template.external_network_id = external_network_id
mock_cluster_template.no_proxy = ""
mock_cluster = mock.MagicMock()
fixed_network_name = 'fixed_network'
mock_cluster.fixed_network = fixed_network_name