def enable_proxy()

in functions/source/KubeManifest/lambda_function.py [0:0]


def enable_proxy(proxy_host, vpc_id):
    configmap = {
            "apiVersion": "v1",
            "kind": "ConfigMap",
            "metadata": {
                "name": "proxy-environment-variables",
                "namespace": "kube-system"
            },
            "data": {
                "HTTP_PROXY": proxy_host,
                "HTTPS_PROXY": proxy_host,
                "NO_PROXY": "localhost,127.0.0.1,169.254.169.254,.internal"
            }
        }
    cluster_ip = run_command(
        "kubectl get service/kubernetes -o jsonpath='{.spec.clusterIP}'"
    )
    cluster_cidr = ".".join(cluster_ip.split(".")[:3]) + ".0/16"
    vpc_cidr = ec2_client.describe_vpcs(VpcIds=[vpc_id])['Vpcs'][0]['CidrBlock']
    configmap["data"]["NO_PROXY"] += f"{vpc_cidr},{cluster_cidr}"
    write_manifest(configmap, '/tmp/proxy.json')
    run_command("kubectl apply -f /tmp/proxy.json")
    patch_cmd = (
        """kubectl patch -n kube-system -p '{ "spec": {"template": { "spec": { """
        """"containers": [ { "name": "%s", "envFrom": [ { "configMapRef": {"name": """
        """"proxy-environment-variables"} } ] } ] } } } }' daemonset %s"""
    )
    setenv_cmd = (
        """kubectl set env daemonset/%s --namespace=kube-system """
        """--from=configmap/proxy-environment-variables --containers='*'"""
    )
    for pod in ["aws-node", "kube-proxy"]:
        logger.debug(run_command(patch_cmd % (pod, pod)))
        logger.debug(run_command(setenv_cmd % pod))