Ejemplo n.º 1
0
def create_cluster(args):
    """Create a cluster and start all its nodes.

    """
    conf = config.Config()
    if args.name in conf.clusters:
        logging.error("Cluster `%s` already exists", args.name)
        return 1

    network = ipaddress.ip_network(u"%s" % (args.flannel_network,))
    subnet_length = args.flannel_subnet_length
    subnet_min = ipaddress.ip_network(u"%s/%d" % (args.flannel_subnet_min, subnet_length))
    subnet_max = ipaddress.ip_network(u"%s/%d" % (args.flannel_subnet_max, subnet_length))
    services_ip_range = ipaddress.ip_network(u"%s" % (args.services_ip_range,))
    dns_service_ip = ipaddress.ip_address(u"%s" % (args.dns_service_ip,))
    kubernetes_service_ip = ipaddress.ip_address(u"%s" % (args.kubernetes_service_ip,))
    for net in (subnet_min, subnet_max):
        if net.prefixlen != subnet_length:
            logging.error("Network %s is not a /%d network", net, subnet_length)
            return 1
        if not net.subnet_of(network):
            logging.error("Network %s is not a subnet of %s", net, network)
            return 1
    if services_ip_range.overlaps(network):
        logging.error("Service IP range %s overlaps with network %s", services_ip_range, network)
        return 1
    if dns_service_ip not in services_ip_range:
        logging.error("DNS service IP address %s not in service IP range %s", dns_service_ip, services_ip_range)
        return 1
    if kubernetes_service_ip not in services_ip_range:
        logging.error(
            "Kubernetes API IP address %s not in service IP range %s", kubernetes_service_ip, services_ip_range
        )
        return 1

    provider = get_provider(args.provider)
    core.create_cluster(
        args.name,
        args.channel,
        args.num_etcd,
        args.size_etcd,
        args.num_workers,
        args.size_workers,
        provider,
        args.location,
        network,
        subnet_length,
        subnet_min,
        subnet_max,
        services_ip_range,
        dns_service_ip,
        kubernetes_service_ip,
        conf,
    )
    cluster_up(args)
    return provision_cluster(args)
Ejemplo n.º 2
0
def mock_cluster(scope="function"):
    home = tempfile.mkdtemp(prefix="container-cluster-test-")
    conf = Config(home)
    provider = providers.get_provider("mockprovider")
    cluster = core.create_cluster("test-cluster1", "alpha", 3, "512mb", 4,
                                  "1gb", provider, "lon1",
                                  ipaddress.ip_network(u"172.16.0.0/16"), 24,
                                  ipaddress.ip_network(u"172.16.1.0"),
                                  ipaddress.ip_network(u"172.16.254.0"),
                                  ipaddress.ip_network(u"172.17.0.0/24"),
                                  ipaddress.ip_address(u"172.17.0.10"),
                                  ipaddress.ip_address(u"172.17.0.1"), conf)
    with cluster.provider.ssh_server:
        yield cluster
Ejemplo n.º 3
0
def create_cluster(args):
    """Create a cluster and start all its nodes.

    """
    conf = config.Config()
    if args.name in conf.clusters:
        logging.error("Cluster `%s` already exists", args.name)
        return 1

    network = ipaddress.ip_network(u"%s" % (args.flannel_network, ))
    subnet_length = args.flannel_subnet_length
    subnet_min = ipaddress.ip_network(u"%s/%d" %
                                      (args.flannel_subnet_min, subnet_length))
    subnet_max = ipaddress.ip_network(u"%s/%d" %
                                      (args.flannel_subnet_max, subnet_length))
    services_ip_range = ipaddress.ip_network(u"%s" %
                                             (args.services_ip_range, ))
    dns_service_ip = ipaddress.ip_address(u"%s" % (args.dns_service_ip, ))
    kubernetes_service_ip = ipaddress.ip_address(
        u"%s" % (args.kubernetes_service_ip, ))
    for net in (subnet_min, subnet_max):
        if net.prefixlen != subnet_length:
            logging.error("Network %s is not a /%d network", net,
                          subnet_length)
            return 1
        if not net.subnet_of(network):
            logging.error("Network %s is not a subnet of %s", net, network)
            return 1
    if services_ip_range.overlaps(network):
        logging.error("Service IP range %s overlaps with network %s",
                      services_ip_range, network)
        return 1
    if dns_service_ip not in services_ip_range:
        logging.error("DNS service IP address %s not in service IP range %s",
                      dns_service_ip, services_ip_range)
        return 1
    if kubernetes_service_ip not in services_ip_range:
        logging.error(
            "Kubernetes API IP address %s not in service IP range %s",
            kubernetes_service_ip, services_ip_range)
        return 1

    provider = get_provider(args.provider)
    core.create_cluster(args.name, args.channel, args.num_etcd, args.size_etcd,
                        args.num_workers, args.size_workers, provider,
                        args.location, network, subnet_length, subnet_min,
                        subnet_max, services_ip_range, dns_service_ip,
                        kubernetes_service_ip, conf)
    cluster_up(args)
    return provision_cluster(args)
Ejemplo n.º 4
0
def mock_cluster(scope="function"):
    home = tempfile.mkdtemp(prefix="container-cluster-test-")
    conf = Config(home)
    provider = providers.get_provider("mockprovider")
    cluster = core.create_cluster("test-cluster1", "alpha", 3, "512mb", 4,
                                  "1gb", provider, "lon1",
                                  ipaddress.ip_network(u"172.16.0.0/16"), 24,
                                  ipaddress.ip_network(u"172.16.1.0"),
                                  ipaddress.ip_network(u"172.16.254.0"),
                                  ipaddress.ip_network(u"172.17.0.0/24"),
                                  ipaddress.ip_address(u"172.17.0.10"),
                                  ipaddress.ip_address(u"172.17.0.1"), conf)
    with cluster.provider.ssh_server:
        yield cluster