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)], ), ]
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)], ) ]
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}" )
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}" )