コード例 #1
0
def get_pod_to_cluster_rules(group_id: str) -> List[IpPermission]:
    return [
        IpPermission(
            from_port=53,
            to_port=53,
            ip_protocol="tcp",
            user_id_group_pairs=[UserIdGroupPair(description="DNS Lookup from Pod", group_id=group_id)],
        ),
        IpPermission(
            from_port=53,
            to_port=53,
            ip_protocol="udp",
            user_id_group_pairs=[UserIdGroupPair(description="DNS Lookup from Pod", group_id=group_id)],
        ),
        IpPermission(
            from_port=443,
            to_port=443,
            ip_protocol="tcp",
            user_id_group_pairs=[UserIdGroupPair(description="Kubernetes API from Pod", group_id=group_id)],
        ),
        IpPermission(
            from_port=10250,
            to_port=10250,
            ip_protocol="tcp",
            user_id_group_pairs=[UserIdGroupPair(description="Kubelet from Pod", group_id=group_id)],
        ),
    ]
コード例 #2
0
def get_cluster_to_pod_rules(group_id: str) -> List[IpPermission]:
    return [
        IpPermission(
            from_port=-1,
            to_port=-1,
            ip_protocol="-1",
            user_id_group_pairs=[UserIdGroupPair(description="All from Cluster", group_id=group_id)],
        )
    ]
コード例 #3
0
def deploy(
    plugin_id: str,
    context: "Context",
    team_context: "TeamContext",
    parameters: Dict[str, Any],
) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    release_name = f"{team_context.name}-{plugin_id}"
    _logger.info("Checking Chart %s is installed...", release_name)

    fs_name = f"lustre-{team_context.name}-fs-{plugin_id}"

    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        plugin_id=plugin_id,
        deploymentType="SCRATCH_2",
        sg=team_context.team_security_group_id,
        subnet=context.networking.data.nodes_subnets[0],
        s3importpath=
        f"s3://{team_context.scratch_bucket}/{team_context.name}/lustre",
        s3exportpath=
        f"s3://{team_context.scratch_bucket}/{team_context.name}/lustre",
        storage=parameters["storage"] if "storage" in parameters else "1200Gi",
        folder=parameters["folder"] if "folder" in parameters else "data",
        k8s_utilities_image=
        f"{context.images.k8s_utilities.repository}:{context.images.k8s_utilities.version}",
        fs_name=fs_name,
    )

    if not helm.is_exists_chart_release(release_name, team_context.name):
        _logger.info("Chart %s already installed, skipping installation",
                     release_name)

        ec2.authorize_security_group_ingress(
            group_id=cast(str, team_context.team_security_group_id),
            ip_permissions=[
                IpPermission(
                    from_port=988,
                    to_port=988,
                    ip_protocol="tcp",
                    user_id_group_pairs=[
                        UserIdGroupPair(
                            description="All from Cluster",
                            group_id=cast(str, context.cluster_sg_id),
                        )
                    ],
                )
            ],
        )

        chart_path = helm.create_team_charts_copy(team_context=team_context,
                                                  path=TEAM_CHARTS_PATH,
                                                  target_path=plugin_id)
        _logger.debug("package dir")
        utils.print_dir(TEAM_CHARTS_PATH)
        _logger.debug("copy chart dir")
        utils.print_dir(chart_path)

        if not team_context.team_helm_repository:
            raise Exception("Missing team helm repository")

        repo_location = team_context.team_helm_repository

        repo = team_context.name
        helm.add_repo(repo=repo, repo_location=repo_location)
        chart_name, chart_version, chart_package = helm.package_chart(
            repo=repo,
            chart_path=os.path.join(chart_path, "fsx-storageclass"),
            values=vars)
        helm.install_chart_no_upgrade(
            repo=repo,
            namespace=team_context.name,
            name=release_name,
            chart_name=chart_name,
            chart_version=chart_version,
        )

    get_user_pv(fs_name, plugin_id, context, team_context, vars)

    # install this package at the user helm repository such that its installed on every user space
    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=USER_CHARTS_PATH,
                                              target_path=plugin_id)

    if not team_context.user_helm_repository:
        raise Exception("Missing user helm repository")
    user_location = team_context.user_helm_repository

    user_repo = team_context.name + "--user"
    helm.add_repo(repo=user_repo, repo_location=user_location)

    chart_name, chart_version, chart_package = helm.package_chart(
        repo=user_repo,
        chart_path=os.path.join(chart_path, "fsx-filesystem"),
        values=vars)
    _logger.info(
        f"Lustre Helm Chart {chart_name}@{chart_version} installed for {team_context.name} at {chart_package}"
    )
コード例 #4
0
def deploy(plugin_id: str, context: "Context", team_context: "TeamContext",
           parameters: Dict[str, Any]) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    release_name = f"{team_context.name}-{plugin_id}"
    _logger.info("Checking Chart %s is installed...", release_name)
    if helm.is_exists_chart_release(release_name, team_context.name):
        _logger.info("Chart %s already installed, skipping installation",
                     release_name)
        return
    try:
        sh.run(
            f"kubectl delete sc fsx-lustre-{team_context.name}-fast-fs-lustre")
    except Exception as e:
        _logger.error(
            f"Deleting prior sc 'fsx-lustre-{team_context.name}-fast-fs-lustre' failed with:%s",
            str(e))

    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        plugin_id=plugin_id,
        deploymentType="SCRATCH_2",
        sg=team_context.team_security_group_id,
        subnet=context.networking.data.nodes_subnets[0],
        s3importpath=
        f"s3://{team_context.scratch_bucket}/{team_context.name}/lustre",
        s3exportpath=
        f"s3://{team_context.scratch_bucket}/{team_context.name}/lustre",
    )

    ec2.authorize_security_group_ingress(
        group_id=cast(str, team_context.team_security_group_id),
        ip_permissions=[
            IpPermission(
                from_port=988,
                to_port=988,
                ip_protocol="tcp",
                user_id_group_pairs=[
                    UserIdGroupPair(description="All from Cluster",
                                    group_id=cast(str, context.cluster_sg_id))
                ],
            )
        ],
    )

    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=CHARTS_PATH)
    _logger.debug("package dir")
    utils.print_dir(CHARTS_PATH)
    _logger.debug("copy chart dir")
    utils.print_dir(chart_path)

    repo_location = helm.init_team_repo(context=context,
                                        team_context=team_context)
    repo = team_context.name
    helm.add_repo(repo=repo, repo_location=repo_location)
    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo,
        chart_path=os.path.join(chart_path, "fsx_storageclass"),
        values=vars)
    helm.install_chart_no_upgrade(
        repo=repo,
        namespace=team_context.name,
        name=release_name,
        chart_name=chart_name,
        chart_version=chart_version,
    )

    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo,
        chart_path=os.path.join(chart_path, "fsx_filesystem"),
        values=vars)
    _logger.info(
        f"Lustre Helm Chart {chart_name}@{chart_version} installed for {team_context.name} at {chart_package}"
    )