mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-11-11 15:51:00 +00:00
feat: Add support for loading in-cluster config when running inside a pod
in some cases, tutor might run inside a pod, which that pod has access to a cluster via role binding and a service account. this way, there's no ./kube/config file, but kubectl commands run with no issue. Close #843
This commit is contained in:
parent
4bb8671f26
commit
1d3a215c00
@ -1,3 +1,4 @@
|
|||||||
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import Any, Iterable, List, Optional, Type
|
from typing import Any, Iterable, List, Optional, Type
|
||||||
@ -26,7 +27,20 @@ class K8sClients:
|
|||||||
# pylint: disable=import-outside-toplevel
|
# pylint: disable=import-outside-toplevel
|
||||||
from kubernetes import client, config
|
from kubernetes import client, config
|
||||||
|
|
||||||
|
if os.path.exists(config.kube_config.KUBE_CONFIG_DEFAULT_LOCATION):
|
||||||
|
# found the kubeconfig file, let's load it!
|
||||||
config.load_kube_config()
|
config.load_kube_config()
|
||||||
|
elif (
|
||||||
|
config.incluster_config.SERVICE_HOST_ENV_NAME in os.environ
|
||||||
|
and config.incluster_config.SERVICE_PORT_ENV_NAME in os.environ
|
||||||
|
):
|
||||||
|
# We are running inside a cluster, let's load the in-cluster configuration.
|
||||||
|
config.load_incluster_config()
|
||||||
|
else:
|
||||||
|
raise exceptions.TutorError(
|
||||||
|
f"there is no Kubernetes configuration file located in {config.kube_config.KUBE_CONFIG_DEFAULT_LOCATION}, and the service environment variables {config.incluster_config.SERVICE_HOST_ENV_NAME} and {config.incluster_config.SERVICE_PORT_ENV_NAME} have not been defined. To connect to a cluster, please configure your host appropriately."
|
||||||
|
)
|
||||||
|
|
||||||
self._batch_api = None
|
self._batch_api = None
|
||||||
self._core_api = None
|
self._core_api = None
|
||||||
self._client = client
|
self._client = client
|
||||||
|
Loading…
Reference in New Issue
Block a user