[suse] add support of LBaaS v2
Add support of LBaaS v2 to suse k8s driver. This patch also allows suse k8s cluster to be created without enabling LBaaS. Change-Id: I5de4059aa1185973be1c556a4b7565c62f76f9f9 Partial-Bug: #1622949
This commit is contained in:
parent
29ca630978
commit
c00d197954
@ -16,6 +16,7 @@ import os
|
|||||||
|
|
||||||
import magnum.conf
|
import magnum.conf
|
||||||
from magnum.drivers.common import k8s_template_def
|
from magnum.drivers.common import k8s_template_def
|
||||||
|
from magnum.drivers.common import template_def
|
||||||
|
|
||||||
CONF = magnum.conf.CONF
|
CONF = magnum.conf.CONF
|
||||||
|
|
||||||
@ -49,6 +50,12 @@ class JeOSK8sTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
|
|||||||
extra_params=extra_params,
|
extra_params=extra_params,
|
||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
|
def get_env_files(self, cluster_template):
|
||||||
|
if cluster_template.master_lb_enabled:
|
||||||
|
return [template_def.COMMON_ENV_PATH + 'with_master_lb.yaml']
|
||||||
|
else:
|
||||||
|
return [template_def.COMMON_ENV_PATH + 'no_master_lb.yaml']
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def template_path(self):
|
def template_path(self):
|
||||||
return os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
return os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
||||||
|
@ -354,49 +354,89 @@ resources:
|
|||||||
# load balancers.
|
# load balancers.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
api_loadbalancer:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::LoadBalancer
|
||||||
|
properties:
|
||||||
|
vip_subnet: {get_resource: fixed_subnet}
|
||||||
|
|
||||||
|
api_listener:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::Listener
|
||||||
|
properties:
|
||||||
|
loadbalancer: {get_resource: api_loadbalancer}
|
||||||
|
protocol: {get_param: loadbalancing_protocol}
|
||||||
|
protocol_port: {get_param: kubernetes_port}
|
||||||
|
|
||||||
|
api_pool:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::Pool
|
||||||
|
properties:
|
||||||
|
lb_algorithm: ROUND_ROBIN
|
||||||
|
listener: {get_resource: api_listener}
|
||||||
|
protocol: {get_param: loadbalancing_protocol}
|
||||||
|
|
||||||
api_monitor:
|
api_monitor:
|
||||||
type: OS::Neutron::HealthMonitor
|
type: Magnum::Optional::Neutron::LBaaS::HealthMonitor
|
||||||
properties:
|
properties:
|
||||||
type: TCP
|
type: TCP
|
||||||
delay: 5
|
delay: 5
|
||||||
max_retries: 5
|
max_retries: 5
|
||||||
timeout: 5
|
timeout: 5
|
||||||
|
pool: { get_resource: api_pool }
|
||||||
api_pool:
|
|
||||||
type: OS::Neutron::Pool
|
|
||||||
properties:
|
|
||||||
protocol: {get_param: loadbalancing_protocol}
|
|
||||||
monitors: [{get_resource: api_monitor}]
|
|
||||||
subnet: {get_resource: fixed_subnet}
|
|
||||||
lb_method: ROUND_ROBIN
|
|
||||||
vip:
|
|
||||||
protocol_port: {get_param: kubernetes_port}
|
|
||||||
|
|
||||||
api_pool_floating:
|
api_pool_floating:
|
||||||
type: OS::Neutron::FloatingIP
|
type: Magnum::Optional::Neutron::FloatingIP
|
||||||
depends_on:
|
depends_on:
|
||||||
- extrouter_inside
|
- extrouter_inside
|
||||||
properties:
|
properties:
|
||||||
floating_network: {get_param: external_network}
|
floating_network: {get_param: external_network}
|
||||||
port_id: {get_attr: [api_pool, vip, port_id]}
|
port_id: {get_attr: [api_loadbalancer, vip_port_id]}
|
||||||
|
|
||||||
|
etcd_loadbalancer:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::LoadBalancer
|
||||||
|
properties:
|
||||||
|
vip_subnet: {get_resource: fixed_subnet}
|
||||||
|
|
||||||
|
etcd_listener:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::Listener
|
||||||
|
properties:
|
||||||
|
loadbalancer: {get_resource: etcd_loadbalancer}
|
||||||
|
protocol: HTTP
|
||||||
|
protocol_port: 2379
|
||||||
|
|
||||||
|
etcd_pool:
|
||||||
|
type: Magnum::Optional::Neutron::LBaaS::Pool
|
||||||
|
properties:
|
||||||
|
lb_algorithm: ROUND_ROBIN
|
||||||
|
listener: {get_resource: etcd_listener}
|
||||||
|
protocol: HTTP
|
||||||
|
|
||||||
etcd_monitor:
|
etcd_monitor:
|
||||||
type: OS::Neutron::HealthMonitor
|
type: Magnum::Optional::Neutron::LBaaS::HealthMonitor
|
||||||
properties:
|
properties:
|
||||||
type: TCP
|
type: TCP
|
||||||
delay: 5
|
delay: 5
|
||||||
max_retries: 5
|
max_retries: 5
|
||||||
timeout: 5
|
timeout: 5
|
||||||
|
pool: { get_resource: etcd_pool }
|
||||||
|
|
||||||
etcd_pool:
|
######################################################################
|
||||||
type: OS::Neutron::Pool
|
#
|
||||||
|
# resources that expose the IPs of either the kube master or a given
|
||||||
|
# LBaaS pool depending on whether LBaaS is enabled for the cluster.
|
||||||
|
#
|
||||||
|
|
||||||
|
api_address_lb_switch:
|
||||||
|
type: Magnum::ApiGatewaySwitcher
|
||||||
properties:
|
properties:
|
||||||
protocol: HTTP
|
pool_public_ip: {get_attr: [api_pool_floating, floating_ip_address]}
|
||||||
monitors: [{get_resource: etcd_monitor}]
|
pool_private_ip: {get_attr: [api_loadbalancer, vip_address]}
|
||||||
subnet: {get_resource: fixed_subnet}
|
master_public_ip: {get_attr: [kube_masters, resource.0.kube_master_external_ip]}
|
||||||
lb_method: ROUND_ROBIN
|
master_private_ip: {get_attr: [kube_masters, resource.0.kube_master_ip]}
|
||||||
vip:
|
|
||||||
protocol_port: 2379
|
etcd_address_lb_switch:
|
||||||
|
type: Magnum::ApiGatewaySwitcher
|
||||||
|
properties:
|
||||||
|
pool_private_ip: {get_attr: [etcd_loadbalancer, vip_address]}
|
||||||
|
master_private_ip: {get_attr: [kube_masters, resource.0.kube_master_ip]}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
@ -414,7 +454,7 @@ resources:
|
|||||||
type: kubemaster.yaml
|
type: kubemaster.yaml
|
||||||
properties:
|
properties:
|
||||||
api_public_address: {get_attr: [api_pool_floating, floating_ip_address]}
|
api_public_address: {get_attr: [api_pool_floating, floating_ip_address]}
|
||||||
api_private_address: {get_attr: [api_pool, vip, address]}
|
api_private_address: {get_attr: [api_loadbalancer, vip_address]}
|
||||||
ssh_key_name: {get_param: ssh_key_name}
|
ssh_key_name: {get_param: ssh_key_name}
|
||||||
server_image: {get_param: server_image}
|
server_image: {get_param: server_image}
|
||||||
master_flavor: {get_param: master_flavor}
|
master_flavor: {get_param: master_flavor}
|
||||||
@ -468,8 +508,8 @@ resources:
|
|||||||
fixed_network: {get_resource: fixed_network}
|
fixed_network: {get_resource: fixed_network}
|
||||||
fixed_subnet: {get_resource: fixed_subnet}
|
fixed_subnet: {get_resource: fixed_subnet}
|
||||||
network_driver: {get_param: network_driver}
|
network_driver: {get_param: network_driver}
|
||||||
kube_master_ip: {get_attr: [api_pool, vip, address]}
|
kube_master_ip: {get_attr: [api_address_lb_switch, private_ip]}
|
||||||
etcd_server_ip: {get_attr: [etcd_pool, vip, address]}
|
etcd_server_ip: {get_attr: [etcd_address_lb_switch, private_ip]}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
kube_allow_priv: {get_param: kube_allow_priv}
|
kube_allow_priv: {get_param: kube_allow_priv}
|
||||||
docker_volume_size: {get_param: docker_volume_size}
|
docker_volume_size: {get_param: docker_volume_size}
|
||||||
@ -502,7 +542,7 @@ outputs:
|
|||||||
str_replace:
|
str_replace:
|
||||||
template: api_ip_address
|
template: api_ip_address
|
||||||
params:
|
params:
|
||||||
api_ip_address: {get_attr: [api_pool_floating, floating_ip_address]}
|
api_ip_address: {get_attr: [api_address_switch, public_ip]}
|
||||||
description: >
|
description: >
|
||||||
This is the API endpoint of the Kubernetes server. Use this to access
|
This is the API endpoint of the Kubernetes server. Use this to access
|
||||||
the Kubernetes API from outside the cluster.
|
the Kubernetes API from outside the cluster.
|
||||||
|
@ -85,10 +85,12 @@ parameters:
|
|||||||
api_public_address:
|
api_public_address:
|
||||||
type: string
|
type: string
|
||||||
description: Public IP address of the Kubernetes master server.
|
description: Public IP address of the Kubernetes master server.
|
||||||
|
default: ""
|
||||||
|
|
||||||
api_private_address:
|
api_private_address:
|
||||||
type: string
|
type: string
|
||||||
description: Private IP address of the Kubernetes master server.
|
description: Private IP address of the Kubernetes master server.
|
||||||
|
default: ""
|
||||||
|
|
||||||
http_proxy:
|
http_proxy:
|
||||||
type: string
|
type: string
|
||||||
@ -156,6 +158,20 @@ resources:
|
|||||||
handle: {get_resource: master_wait_handle}
|
handle: {get_resource: master_wait_handle}
|
||||||
timeout: {get_param: wait_condition_timeout}
|
timeout: {get_param: wait_condition_timeout}
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# resource that exposes the IPs of either the kube master or the API
|
||||||
|
# LBaaS pool depending on whether LBaaS is enabled for the bay.
|
||||||
|
#
|
||||||
|
|
||||||
|
api_address_switch:
|
||||||
|
type: Magnum::ApiGatewaySwitcher
|
||||||
|
properties:
|
||||||
|
pool_public_ip: {get_param: api_public_address}
|
||||||
|
pool_private_ip: {get_param: api_private_address}
|
||||||
|
master_public_ip: {get_attr: [kube_master_floating, floating_ip_address]}
|
||||||
|
master_private_ip: {get_attr: [kube_master_eth0, fixed_ips, 0, ip_address]}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
# software configs. these are components that are combined into
|
# software configs. these are components that are combined into
|
||||||
@ -282,17 +298,19 @@ resources:
|
|||||||
port_id: {get_resource: kube_master_eth0}
|
port_id: {get_resource: kube_master_eth0}
|
||||||
|
|
||||||
api_pool_member:
|
api_pool_member:
|
||||||
type: OS::Neutron::PoolMember
|
type: Magnum::Optional::Neutron::LBaaS::PoolMember
|
||||||
properties:
|
properties:
|
||||||
pool_id: {get_param: api_pool_id}
|
pool: {get_param: api_pool_id}
|
||||||
address: {get_attr: [kube_master_eth0, fixed_ips, 0, ip_address]}
|
address: {get_attr: [kube_master_eth0, fixed_ips, 0, ip_address]}
|
||||||
|
subnet: { get_param: fixed_subnet }
|
||||||
protocol_port: {get_param: kubernetes_port}
|
protocol_port: {get_param: kubernetes_port}
|
||||||
|
|
||||||
etcd_pool_member:
|
etcd_pool_member:
|
||||||
type: OS::Neutron::PoolMember
|
type: Magnum::Optional::Neutron::LBaaS::PoolMember
|
||||||
properties:
|
properties:
|
||||||
pool_id: {get_param: etcd_pool_id}
|
pool: {get_param: etcd_pool_id}
|
||||||
address: {get_attr: [kube_master_eth0, fixed_ips, 0, ip_address]}
|
address: {get_attr: [kube_master_eth0, fixed_ips, 0, ip_address]}
|
||||||
|
subnet: { get_param: fixed_subnet }
|
||||||
protocol_port: 2379
|
protocol_port: 2379
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
|
Loading…
Reference in New Issue
Block a user