Merge "Add Container Volume Model into Kubernetes Heat Templates"
This commit is contained in:
commit
ee059477be
|
@ -456,6 +456,8 @@ class K8sTemplateDefinition(BaseTemplateDefinition):
|
|||
required=True)
|
||||
self.add_parameter('network_driver',
|
||||
baymodel_attr='network_driver')
|
||||
self.add_parameter('volume_driver',
|
||||
baymodel_attr='volume_driver')
|
||||
self.add_parameter('tls_disabled',
|
||||
baymodel_attr='tls_disabled',
|
||||
required=True)
|
||||
|
@ -518,6 +520,7 @@ class AtomicK8sTemplateDefinition(K8sTemplateDefinition):
|
|||
osc = clients.OpenStackClients(context)
|
||||
extra_params['user_token'] = self._get_user_token(context, osc, bay)
|
||||
extra_params['magnum_url'] = osc.magnum_url()
|
||||
extra_params['region_name'] = osc.cinder_region_name()
|
||||
|
||||
if baymodel.tls_disabled:
|
||||
extra_params['loadbalancing_protocol'] = 'HTTP'
|
||||
|
|
|
@ -46,6 +46,32 @@ if [ "$NETWORK_DRIVER" == "flannel" ]; then
|
|||
done
|
||||
fi
|
||||
|
||||
if [ "$VOLUME_DRIVER" == "cinder" ]; then
|
||||
CLOUD_CONFIG=/etc/kubernetes/kube_openstack_config
|
||||
KUBERNETES=/etc/kubernetes
|
||||
if [ ! -d ${KUBERNETES} -o ! -f ${CLOUD_CONFIG} ]; then
|
||||
sudo mkdir -p $KUBERNETES
|
||||
fi
|
||||
AUTH_URL=${AUTH_URL/v3/v2}
|
||||
cat > $CLOUD_CONFIG <<EOF
|
||||
[Global]
|
||||
auth-url=$AUTH_URL
|
||||
username=$USERNAME
|
||||
password=$PASSWORD
|
||||
region=$REGION_NAME
|
||||
tenant-name=$TENANT_NAME
|
||||
EOF
|
||||
|
||||
cat << _EOC_ >> /etc/kubernetes/kubelet
|
||||
#KUBELET_ARGS="$KUBELET_ARGS --cloud-provider=openstack --cloud-config=/etc/kubernetes/kube_openstack_config"
|
||||
_EOC_
|
||||
|
||||
if [ ! -f /usr/bin/udevadm ]; then
|
||||
sudo ln -s /sbin/udevadm /usr/bin/udevadm
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
cat >> /etc/environment <<EOF
|
||||
KUBERNETES_MASTER=$KUBE_MASTER_URI
|
||||
EOF
|
||||
|
|
|
@ -27,6 +27,12 @@ write_files:
|
|||
BAY_UUID="$BAY_UUID"
|
||||
USER_TOKEN="$USER_TOKEN"
|
||||
MAGNUM_URL="$MAGNUM_URL"
|
||||
AUTH_URL="$AUTH_URL"
|
||||
USERNAME="$USERNAME"
|
||||
PASSWORD="$PASSWORD"
|
||||
VOLUME_DRIVER="$VOLUME_DRIVER"
|
||||
REGION_NAME="$REGION_NAME"
|
||||
TENANT_NAME="$TENANT_NAME"
|
||||
HTTP_PROXY="$HTTP_PROXY"
|
||||
HTTPS_PROXY="$HTTPS_PROXY"
|
||||
NO_PROXY="$NO_PROXY"
|
||||
|
|
|
@ -175,6 +175,15 @@ parameters:
|
|||
size fo the data segments for the swift dynamic large objects
|
||||
default: 5242880
|
||||
|
||||
volume_driver:
|
||||
type: string
|
||||
description: volume driver to use for container storage
|
||||
default: ""
|
||||
|
||||
region_name:
|
||||
type: string
|
||||
description: A logically separate section of the cluster
|
||||
|
||||
username:
|
||||
type: string
|
||||
description: >
|
||||
|
@ -504,6 +513,12 @@ resources:
|
|||
user_token: {get_param: user_token}
|
||||
bay_uuid: {get_param: bay_uuid}
|
||||
magnum_url: {get_param: magnum_url}
|
||||
volume_driver: {get_param: volume_driver}
|
||||
region_name: {get_param: region_name}
|
||||
tenant_name: {get_param: tenant_name}
|
||||
auth_url: {get_param: auth_url}
|
||||
username: {get_param: username}
|
||||
password: {get_param: password}
|
||||
kubernetes_port: {get_param: kubernetes_port}
|
||||
tls_disabled: {get_param: tls_disabled}
|
||||
secgroup_kube_minion_id: {get_resource: secgroup_kube_minion}
|
||||
|
|
|
@ -154,6 +154,36 @@ parameters:
|
|||
type: string
|
||||
description: ID of the security group for kubernetes minion.
|
||||
|
||||
volume_driver:
|
||||
type: string
|
||||
description: volume driver to use for container storage
|
||||
|
||||
region_name:
|
||||
type: string
|
||||
description: A logically separate section of the cluster
|
||||
|
||||
tenant_name:
|
||||
type: string
|
||||
description: an alternative term for a project
|
||||
|
||||
auth_url:
|
||||
type: string
|
||||
description: >
|
||||
url for kubernetes to authenticate before sending request to neutron
|
||||
must be v2 since kubernetes backend only suppor v2 at this point
|
||||
|
||||
username:
|
||||
type: string
|
||||
description: >
|
||||
user account
|
||||
|
||||
password:
|
||||
type: string
|
||||
description: >
|
||||
user password, not set in current implementation, only used to
|
||||
fill in for Kubernetes config file
|
||||
hidden: true
|
||||
|
||||
http_proxy:
|
||||
type: string
|
||||
description: http proxy address for docker
|
||||
|
@ -242,6 +272,12 @@ resources:
|
|||
$BAY_UUID: {get_param: bay_uuid}
|
||||
$USER_TOKEN: {get_param: user_token}
|
||||
$MAGNUM_URL: {get_param: magnum_url}
|
||||
$AUTH_URL: {get_param: auth_url}
|
||||
$USERNAME: {get_param: username}
|
||||
$PASSWORD: {get_param: password}
|
||||
$VOLUME_DRIVER: {get_param: volume_driver}
|
||||
$REGION_NAME: {get_param: region_name}
|
||||
$TENANT_NAME: {get_param: tenant_name}
|
||||
$HTTP_PROXY: {get_param: http_proxy}
|
||||
$HTTPS_PROXY: {get_param: https_proxy}
|
||||
$NO_PROXY: {get_param: no_proxy}
|
||||
|
|
|
@ -32,6 +32,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'dns_nameserver': 'dns_nameserver',
|
||||
'external_network_id': 'external_network_id',
|
||||
'network_driver': 'network_driver',
|
||||
'volume_driver': 'volume_driver',
|
||||
'docker_volume_size': 20,
|
||||
'cluster_distro': 'fedora-atomic',
|
||||
'coe': 'kubernetes',
|
||||
|
@ -74,6 +75,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
self.addCleanup(osc_patcher.stop)
|
||||
self.mock_osc = mock.MagicMock()
|
||||
self.mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
|
||||
self.mock_osc.cinder_region_name.return_value = 'RegionOne'
|
||||
self.mock_osc_class.return_value = self.mock_osc
|
||||
mock_stack = self.mock_osc.heat.return_value.stacks.get.return_value
|
||||
mock_stack.parameters = {'user_token': 'fake_token'}
|
||||
|
@ -107,6 +109,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'flavor_id': 'minion_flavor',
|
||||
'docker_volume_size': 'docker_volume_size',
|
||||
'network_driver': 'network_driver',
|
||||
'volume_driver': 'volume_driver',
|
||||
'master_flavor_id': 'master_flavor',
|
||||
'apiserver_port': '',
|
||||
'node_count': 'number_of_minions',
|
||||
|
@ -127,6 +130,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'ssh_key_name': 'keypair_id',
|
||||
'external_network': 'external_network_id',
|
||||
'network_driver': 'network_driver',
|
||||
'volume_driver': 'volume_driver',
|
||||
'dns_nameserver': 'dns_nameserver',
|
||||
'server_image': 'image_id',
|
||||
'minion_flavor': 'flavor_id',
|
||||
|
@ -146,6 +150,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'user_token': 'fake_token',
|
||||
'bay_uuid': self.bay_dict['uuid'],
|
||||
'magnum_url': self.mock_osc.magnum_url.return_value,
|
||||
'region_name': self.mock_osc.cinder_region_name.return_value,
|
||||
'tls_disabled': False,
|
||||
'trustee_domain_id': '3527620c-b220-4f37-9ebc-6e63a81a9b2f',
|
||||
'trustee_username': 'fake_trustee',
|
||||
|
@ -182,6 +187,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'number_of_minions': 1,
|
||||
'number_of_masters': 1,
|
||||
'network_driver': 'network_driver',
|
||||
'volume_driver': 'volume_driver',
|
||||
'discovery_url': 'https://discovery.etcd.io/test',
|
||||
'http_proxy': 'http_proxy',
|
||||
'https_proxy': 'https_proxy',
|
||||
|
@ -227,6 +233,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'number_of_minions': 1,
|
||||
'number_of_masters': 1,
|
||||
'network_driver': 'network_driver',
|
||||
'volume_driver': 'volume_driver',
|
||||
'discovery_url': 'http://tokentest/h1/h2/h3',
|
||||
'http_proxy': 'http_proxy',
|
||||
'https_proxy': 'https_proxy',
|
||||
|
@ -340,6 +347,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'number_of_minions': 1,
|
||||
'number_of_masters': 1,
|
||||
'network_driver': 'network_driver',
|
||||
'volume_driver': 'volume_driver',
|
||||
'docker_volume_size': 20,
|
||||
'discovery_url': 'https://address/token',
|
||||
'http_proxy': 'http_proxy',
|
||||
|
@ -353,6 +361,7 @@ class TestBayConductorWithK8s(base.TestCase):
|
|||
'user_token': 'fake_token',
|
||||
'bay_uuid': self.bay_dict['uuid'],
|
||||
'magnum_url': self.mock_osc.magnum_url.return_value,
|
||||
'region_name': self.mock_osc.cinder_region_name.return_value,
|
||||
'tls_disabled': False,
|
||||
'trustee_domain_id': '3527620c-b220-4f37-9ebc-6e63a81a9b2f',
|
||||
'trustee_username': 'fake_trustee',
|
||||
|
|
|
@ -181,6 +181,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
|
|||
mock_scale_manager = mock.MagicMock()
|
||||
mock_osc = mock.MagicMock()
|
||||
mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
|
||||
mock_osc.cinder_region_name.return_value = 'RegionOne'
|
||||
mock_osc_class.return_value = mock_osc
|
||||
|
||||
removal_nodes = ['node1', 'node2']
|
||||
|
@ -209,6 +210,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
|
|||
'username': 'fake_user',
|
||||
'tenant_name': 'fake_tenant',
|
||||
'magnum_url': mock_osc.magnum_url.return_value,
|
||||
'region_name': mock_osc.cinder_region_name.return_value,
|
||||
'user_token': mock_context.auth_token}}
|
||||
mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
|
||||
mock_bay, **expected_kwargs)
|
||||
|
@ -232,6 +234,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
|
|||
mock_scale_manager = mock.MagicMock()
|
||||
mock_osc = mock.MagicMock()
|
||||
mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
|
||||
mock_osc.cinder_region_name.return_value
|
||||
mock_osc_class.return_value = mock_osc
|
||||
|
||||
removal_nodes = ['node1', 'node2']
|
||||
|
@ -260,6 +263,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
|
|||
'username': 'fake_user',
|
||||
'tenant_name': 'fake_tenant',
|
||||
'magnum_url': mock_osc.magnum_url.return_value,
|
||||
'region_name': mock_osc.cinder_region_name.return_value,
|
||||
'user_token': mock_context.auth_token,
|
||||
'loadbalancing_protocol': 'HTTP',
|
||||
'kubernetes_port': 8080}}
|
||||
|
|
Loading…
Reference in New Issue