コード例 #1
0
def create_kube_config(config_file: str) -> None:
    """Replicates the local kubeconfig file (pointed at by KUBECONFIG),
    as a ConfigMap."""
    corev1 = client.CoreV1Api()
    print("Creating kube-config ConfigMap")
    dev_config = load_config(config_file)

    svc = corev1.read_namespaced_service("kubernetes", "default")

    kube_config_path = os.getenv("KUBECONFIG")
    if kube_config_path is None:
        raise ValueError("kube_config_path must not be None")

    with open(kube_config_path) as fd:
        kube_config = yaml.safe_load(fd.read())

    if kube_config is None:
        raise ValueError("kube_config_path must not be None")

    kube_config["clusters"][0]["cluster"][
        "server"] = "https://" + svc.spec.cluster_ip
    kube_config = yaml.safe_dump(kube_config)
    data = {"kubeconfig": kube_config}
    config_map = client.V1ConfigMap(
        metadata=client.V1ObjectMeta(name="kube-config"), data=data)

    k8s_conditions.ignore_if_already_exists(
        lambda: corev1.create_namespaced_config_map(dev_config.namespace,
                                                    config_map))
コード例 #2
0
def _prepare_testrunner_environment():
    """
    _prepare_testrunner_environment ensures the ServiceAccount,
    Role and ClusterRole and bindings are created for the test runner.
    """
    rbacv1 = client.RbacAuthorizationV1Api()
    corev1 = client.CoreV1Api()
    dev_config = load_config()

    _delete_testrunner_pod()

    print("Creating Role")
    k8s_conditions.ignore_if_already_exists(
        lambda: rbacv1.create_namespaced_role(dev_config.namespace,
                                              _load_testrunner_role()))

    print("Creating Role Binding")
    k8s_conditions.ignore_if_already_exists(
        lambda: rbacv1.create_namespaced_role_binding(
            dev_config.namespace, _load_testrunner_role_binding()))

    print("Creating Cluster Role Binding")
    k8s_conditions.ignore_if_already_exists(
        lambda: rbacv1.create_cluster_role_binding(
            _load_testrunner_cluster_role_binding()))

    print("Creating ServiceAccount")
    k8s_conditions.ignore_if_already_exists(
        lambda: corev1.create_namespaced_service_account(
            dev_config.namespace, _load_testrunner_service_account()))
def deploy_operator() -> None:
    """
    deploy_operator ensures the CRDs are created, and als creates all the required ServiceAccounts, Roles
    and RoleBindings for the operator, and then creates the operator deployment.
    """
    appsv1 = client.AppsV1Api()
    corev1 = client.CoreV1Api()
    rbacv1 = client.RbacAuthorizationV1Api()

    dev_config = load_config()
    _ensure_crds()

    k8s_conditions.ignore_if_already_exists(
        lambda: rbacv1.create_namespaced_role(dev_config.namespace,
                                              _load_operator_role()))
    k8s_conditions.ignore_if_already_exists(
        lambda: rbacv1.create_namespaced_role_binding(
            dev_config.namespace, _load_operator_role_binding()))
    k8s_conditions.ignore_if_already_exists(
        lambda: corev1.create_namespaced_service_account(
            dev_config.namespace, _load_operator_service_account()))
    k8s_conditions.ignore_if_already_exists(
        lambda: appsv1.create_namespaced_deployment(
            dev_config.namespace,
            _load_operator_deployment(
                f"{dev_config.repo_url}/mongodb-kubernetes-operator"),
        ))