diff --git a/robusta_krr/core/integrations/kubernetes.py b/robusta_krr/core/integrations/kubernetes/__init__.py similarity index 99% rename from robusta_krr/core/integrations/kubernetes.py rename to robusta_krr/core/integrations/kubernetes/__init__.py index 3baffd1f..b6c85f48 100644 --- a/robusta_krr/core/integrations/kubernetes.py +++ b/robusta_krr/core/integrations/kubernetes/__init__.py @@ -24,6 +24,7 @@ from robusta_krr.core.models.objects import HPAData, K8sObjectData, KindLiteral, PodData from robusta_krr.core.models.result import ResourceAllocations +from . import config_patch as _ from .rollout import RolloutAppsV1Api logger = logging.getLogger("krr") diff --git a/robusta_krr/core/integrations/kubernetes/config_patch.py b/robusta_krr/core/integrations/kubernetes/config_patch.py new file mode 100644 index 00000000..5f294bcb --- /dev/null +++ b/robusta_krr/core/integrations/kubernetes/config_patch.py @@ -0,0 +1,37 @@ +# NOTE: This is a workaround for the issue described here: +# https://github.com/kubernetes-client/python/pull/1863 + +from __future__ import annotations + +from kubernetes.client import configuration +from kubernetes.config import kube_config + + +class KubeConfigLoader(kube_config.KubeConfigLoader): + def _load_cluster_info(self): + super()._load_cluster_info() + + if "proxy-url" in self._cluster: + self.proxy = self._cluster["proxy-url"] + + def _set_config(self, client_configuration: Configuration): + super()._set_config(client_configuration) + + key = "proxy" + if key in self.__dict__: + setattr(client_configuration, key, getattr(self, key)) + + +class Configuration(configuration.Configuration): + def __init__( + self, + proxy: str | None = None, + **kwargs, + ): + super().__init__(**kwargs) + + self.proxy = proxy + + +configuration.Configuration = Configuration +kube_config.KubeConfigLoader = KubeConfigLoader diff --git a/robusta_krr/core/integrations/rollout.py b/robusta_krr/core/integrations/kubernetes/rollout.py similarity index 100% rename from robusta_krr/core/integrations/rollout.py rename to robusta_krr/core/integrations/kubernetes/rollout.py diff --git a/robusta_krr/core/runner.py b/robusta_krr/core/runner.py index 3c496346..312efdda 100644 --- a/robusta_krr/core/runner.py +++ b/robusta_krr/core/runner.py @@ -132,7 +132,7 @@ async def _calculate_object_recommendations(self, object: K8sObjectData) -> RunR prometheus_loader = self._get_prometheus_loader(object.cluster) if prometheus_loader is None: - return {resource: ResourceRecommendation.undefined() for resource in ResourceType} + return {resource: ResourceRecommendation.undefined("Prometheus not found") for resource in ResourceType} object.pods = await prometheus_loader.load_pods(object, self._strategy.settings.history_timedelta) if object.pods == []: