update
This commit is contained in:
parent
a2bb92249d
commit
3615874533
2 changed files with 13 additions and 32 deletions
|
@ -45,40 +45,27 @@ def get_endpoints_for_loadbalancers():
|
|||
if endpoint['subsets']:
|
||||
for subset in endpoint['subsets']:
|
||||
for port in service['spec']['ports']:
|
||||
if port['port'] in [80, 443, 7443] and 'ingress' not in service['metadata']['name']:
|
||||
if port['port'] in [80, 443] and 'ingress' not in service['metadata']['name']:
|
||||
continue
|
||||
gateway_endpoint = {}
|
||||
gateway_endpoint['name'] = "%s-%d" % (service['metadata']['name'].replace(" ", "-"), port['port'])
|
||||
gateway_endpoint['bind'] = "0.0.0.0:%d" % port['port']
|
||||
service_name = service['metadata']['name'].replace(" ", "-")
|
||||
gateway_endpoint['name'] = "SRV_%s" % (service_name)
|
||||
gateway_endpoint['port'] = "%d" % (port['port'])
|
||||
gateway_endpoint['labels'] = "%s" % (service['metadata']['labels'])
|
||||
gateway_endpoint['mode'] = "%s" % port['protocol'].lower()
|
||||
gateway_endpoint['balance'] = 'leastconn'
|
||||
gateway_endpoint['servers'] = []
|
||||
server_number = 0
|
||||
if 'addresses' in subset:
|
||||
for address in subset['addresses']:
|
||||
gateway_endpoint['servers'].append("server srv%s %s:%d" % (server_number, address['ip'], port['targetPort']))
|
||||
gateway_endpoint['servers'].append("server %s_%s %s:%d check cookie %s" % (service_name, server_number, address['ip'], port['targetPort']), server_number)
|
||||
server_number += 1
|
||||
load_balanced_endpoints.append(gateway_endpoint)
|
||||
return load_balanced_endpoints
|
||||
|
||||
def get_endpoint_for_masters():
|
||||
nodes = get_k8s_resources('nodes')
|
||||
master_endpoint = {}
|
||||
master_endpoint['name'] = "%s-%d" % ("master", KUBERNETES_MASTER_PORT_LISTEN)
|
||||
master_endpoint['bind'] = "0.0.0.0:%d" % KUBERNETES_MASTER_PORT_LISTEN
|
||||
master_endpoint['mode'] = "tcp"
|
||||
master_endpoint['balance'] = 'leastconn'
|
||||
master_endpoint['servers'] = []
|
||||
for node in nodes:
|
||||
if "node-role.kubernetes.io/master" in node['metadata']['labels'] and node['metadata']['labels']['node-role.kubernetes.io/master'] == 'true':
|
||||
for address in node['status']['addresses']:
|
||||
if address['type'] == "InternalIP":
|
||||
master_endpoint['servers'].append("server %s %s:%d" % (node['metadata']['name'].replace(" ", "-"), address['address'], KUBERNETES_MASTER_PORT))
|
||||
return master_endpoint
|
||||
|
||||
def get_haproxy_config():
|
||||
load_balanced_endpoints = get_endpoints_for_loadbalancers()
|
||||
haproxy_config = get_haproxy_config_template().render(services=load_balanced_endpoints, master=get_endpoint_for_masters())
|
||||
haproxy_config = get_haproxy_config_template().render(services=load_balanced_endpoints)
|
||||
return haproxy_config
|
||||
|
||||
def main():
|
||||
|
|
18
haproxy.j2
18
haproxy.j2
|
@ -15,22 +15,16 @@ defaults
|
|||
timeout client 50000
|
||||
timeout server 50000
|
||||
|
||||
listen {{ master.name }}
|
||||
bind {{ master.bind }} ssl crt /etc/haproxy/api.datacenter1.trinet-k8s.com.pem
|
||||
mode {{ master.mode }}
|
||||
balance {{ master.balance }}
|
||||
|
||||
{% for server in master.servers -%}
|
||||
{{ server }} ssl verify none
|
||||
{% endfor %}
|
||||
|
||||
{% for service in services %}
|
||||
listen {{ service.name }}
|
||||
bind {{ service.bind }}
|
||||
backend {{ service.name }}
|
||||
mode {{ service.mode }}
|
||||
balance {{ service.balance }}
|
||||
|
||||
{% for key, value in service.labels %}
|
||||
option {{ value }} # {{ key }}
|
||||
{% endfor %
|
||||
cookie {{ service.mode }} insert indirect nocache
|
||||
{% for server in service.servers -%}
|
||||
{{ server }}
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
|
|
Loading…
Add table
Reference in a new issue