diff options
author | 2018-04-17 13:15:46 +0000 | |
---|---|---|
committer | 2018-04-17 13:24:51 +0000 | |
commit | 8ada177fc4c093acc5028a4134f77dcef8ee9837 (patch) | |
tree | df1ceeec8d7055ca87b734e2aadb25607fa3dee4 | |
parent | fe5179575191dd40af3d9e4a8d4bd0144e4d08de (diff) |
Support for /var/run/secrets/kubernetes.io
Change-Id: If259892dd332981654bcad6b1e07037afbf31c7d
Issue-ID: DCAEGEN2-447
Signed-off-by: Jack Lucas <jflucas@research.att.com>
-rw-r--r-- | k8s/k8s-node-type.yaml | 2 | ||||
-rw-r--r-- | k8s/k8sclient/k8sclient.py | 23 | ||||
-rw-r--r-- | k8s/pom.xml | 2 | ||||
-rw-r--r-- | k8s/setup.py | 2 |
4 files changed, 24 insertions, 5 deletions
diff --git a/k8s/k8s-node-type.yaml b/k8s/k8s-node-type.yaml index 31d4248..7086701 100644 --- a/k8s/k8s-node-type.yaml +++ b/k8s/k8s-node-type.yaml @@ -25,7 +25,7 @@ plugins: k8s: executor: 'central_deployment_agent' package_name: k8splugin - package_version: 1.0.1 + package_version: 1.1.0 data_types: diff --git a/k8s/k8sclient/k8sclient.py b/k8s/k8sclient/k8sclient.py index a61fafa..017dd36 100644 --- a/k8s/k8sclient/k8sclient.py +++ b/k8s/k8sclient/k8sclient.py @@ -32,8 +32,27 @@ def _create_exposed_service_name(component_name): return ("x{0}".format(component_name))[:63] def _configure_api(): - #TODO: real configuration - config.load_kube_config(os.path.join(os.environ["HOME"], '.kube/config')) + # Look for a kubernetes config file in ~/.kube/config + kubepath = os.path.join(os.environ["HOME"], '.kube/config') + if os.path.exists(kubepath): + config.load_kube_config(kubepath) + else: + # Maybe we're running in a k8s container and we can use info provided by k8s + # We would like to use: + # config.load_incluster_config() + # but this looks into os.environ for kubernetes host and port, and from + # the plugin those aren't visible. So we use the InClusterConfigLoader class, + # where we can set the environment to what we like. + # This is probably brittle! Maybe there's a better alternative. + localenv = { + config.incluster_config.SERVICE_HOST_ENV_NAME : "kubernetes.default.svc.cluster.local", + config.incluster_config.SERVICE_PORT_ENV_NAME : "443" + } + config.incluster_config.InClusterConfigLoader( + token_filename=config.incluster_config.SERVICE_TOKEN_FILENAME, + cert_filename=config.incluster_config.SERVICE_CERT_FILENAME, + environ=localenv + ).load_and_set() def _create_container_object(name, image, always_pull, env={}, container_ports=[], volume_mounts = []): # Set up environment variables diff --git a/k8s/pom.xml b/k8s/pom.xml index ededd75..afcf45a 100644 --- a/k8s/pom.xml +++ b/k8s/pom.xml @@ -28,7 +28,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <groupId>org.onap.dcaegen2.platform.plugins</groupId> <artifactId>k8s</artifactId> <name>k8s-plugin</name> - <version>1.0.1-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> diff --git a/k8s/setup.py b/k8s/setup.py index 2d17dc4..1d15ff5 100644 --- a/k8s/setup.py +++ b/k8s/setup.py @@ -23,7 +23,7 @@ from setuptools import setup setup( name='k8splugin', description='Cloudify plugin for containerized components deployed using Kubernetes', - version="1.0.1", + version="1.1.0", author='J. F. Lucas, Michael Hwang, Tommy Carpenter', packages=['k8splugin','k8sclient','msb','configure'], zip_safe=False, |