diff --git a/gateway-haproxy-config.py b/gateway-haproxy-config.py index 4010671..8d479a0 100644 --- a/gateway-haproxy-config.py +++ b/gateway-haproxy-config.py @@ -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(): diff --git a/haproxy.j2 b/haproxy.j2 index 5784e82..aa0dd2d 100644 --- a/haproxy.j2 +++ b/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 %}