summaryrefslogtreecommitdiff
path: root/robusta_krr
diff options
context:
space:
mode:
authorLeaveMyYard <zhukovpavel2001@gmail.com>2023-10-10 14:49:17 +0300
committerLeaveMyYard <zhukovpavel2001@gmail.com>2023-10-10 14:49:17 +0300
commit78e0d25b38bf109b694e2ffd710eb345de321820 (patch)
tree18057346d0cbd8994d09a6851739ec2b22ab24cd /robusta_krr
parent36a440c8d439bcecdb69561fe76c98e41e58fe11 (diff)
Patch fix for proxy not working from kubeconfig
Diffstat (limited to 'robusta_krr')
-rw-r--r--robusta_krr/core/integrations/kubernetes/__init__.py (renamed from robusta_krr/core/integrations/kubernetes.py)1
-rw-r--r--robusta_krr/core/integrations/kubernetes/config_patch.py37
-rw-r--r--robusta_krr/core/integrations/kubernetes/rollout.py (renamed from robusta_krr/core/integrations/rollout.py)0
3 files changed, 38 insertions, 0 deletions
diff --git a/robusta_krr/core/integrations/kubernetes.py b/robusta_krr/core/integrations/kubernetes/__init__.py
index db85fb9..8bb89a1 100644
--- a/robusta_krr/core/integrations/kubernetes.py
+++ b/robusta_krr/core/integrations/kubernetes/__init__.py
@@ -22,6 +22,7 @@ from robusta_krr.core.models.objects import HPAData, K8sObjectData, KindLiteral
from robusta_krr.core.models.result import ResourceAllocations
from robusta_krr.utils.configurable import Configurable
+from . import config_patch as _
from .rollout import RolloutAppsV1Api
AnyKubernetesAPIObject = Union[V1Deployment, V1DaemonSet, V1StatefulSet, V1Pod, V1Job]
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 0000000..5f294bc
--- /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
index 389c65b..389c65b 100644
--- a/robusta_krr/core/integrations/rollout.py
+++ b/robusta_krr/core/integrations/kubernetes/rollout.py