11import json
22import logging
3+ import os
34
45import kopf
56import kubernetes
67from kubernetes .client import ApiClient , CoreV1Api , AppsV1Api , CustomObjectsApi , V1ConfigMap , V1Service
78
89
10+ def load_kubernetes_config ():
11+ if 'KUBERNETES_SERVICE_HOST' in os .environ :
12+ # We're running inside a Kubernetes cluster
13+ return kubernetes .config .load_incluster_config ()
14+ else :
15+ # We're running outside the cluster
16+ return kubernetes .config .load_kube_config ()
17+
18+
919@kopf .on .create ('configserver' )
1020def create_fn (meta , spec , ** kwargs ):
11- client = ApiClient (configuration = kubernetes . config . load_incluster_config ())
21+ client = ApiClient (configuration = load_kubernetes_config ())
1222 api = CoreV1Api (api_client = client )
1323 apps_api = AppsV1Api (api_client = client )
1424 crd_api = CustomObjectsApi (api_client = client )
@@ -100,7 +110,7 @@ def create_fn(meta, spec, **kwargs):
100110
101111@kopf .on .delete ('configserver' )
102112def delete_fn (meta , spec , ** kwargs ):
103- client = ApiClient (configuration = kubernetes . config . load_incluster_config ())
113+ client = ApiClient (configuration = load_kubernetes_config ())
104114 api = CoreV1Api (api_client = client )
105115 apps_api = AppsV1Api (api_client = client )
106116
@@ -122,7 +132,7 @@ def delete_fn(meta, spec, **kwargs):
122132
123133
124134def _get_config_map (config_name : str , namespace : str , logger : logging .Logger ) -> tuple [V1ConfigMap | None , CoreV1Api ]:
125- client = kubernetes .client .api_client .ApiClient (configuration = kubernetes . config . load_incluster_config ())
135+ client = kubernetes .client .api_client .ApiClient (configuration = load_kubernetes_config ())
126136 api = kubernetes .client .CoreV1Api (api_client = client )
127137 try :
128138 config_map = api .read_namespaced_config_map (name = f"{ config_name } -values" , namespace = namespace )
0 commit comments