From b04a88cc9ecfe85b28d172b1ba677de96530dd89 Mon Sep 17 00:00:00 2001 From: Mike Wilson Date: Fri, 19 Jan 2018 14:35:59 -0500 Subject: [PATCH 1/2] Adding support for changing default backend and nginx container images --- .../juju/layers/kubernetes-worker/config.yaml | 12 +++++++ .../reactive/kubernetes_worker.py | 34 +++++++++++++------ 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/cluster/juju/layers/kubernetes-worker/config.yaml b/cluster/juju/layers/kubernetes-worker/config.yaml index b16b1814d77..803f036cc98 100644 --- a/cluster/juju/layers/kubernetes-worker/config.yaml +++ b/cluster/juju/layers/kubernetes-worker/config.yaml @@ -58,3 +58,15 @@ options: The value for this config must be a JSON array of credential objects, like this: [{"server": "my.registry", "username": "myUser", "password": "myPass"}] + nginx-image: + type: string + default: "auto" + description: | + Docker image to use for the nginx ingress controller. Auto will select an image + based on architecture. + default-backend-image: + type: string + default: "auto" + description: | + Docker image to use for the default backend. Auto will select an image + based on architecture. diff --git a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py index d0ed9908cfc..e0aa927ab6b 100644 --- a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py +++ b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py @@ -624,17 +624,28 @@ def create_kubeconfig(kubeconfig, server, ca, key=None, certificate=None, check_call(split(cmd.format(kubeconfig, context))) +@when_any('config.changed.default-backend-image', + 'config.changed.nginx-image') def launch_default_ingress_controller(): ''' Launch the Kubernetes ingress controller & default backend (404) ''' + config = hookenv.config() + + # need to test this in case we get in here from a config change to the image + if not config.get('ingress'): + return + context = {} context['arch'] = arch() addon_path = '/root/cdk/addons/{}' - context['defaultbackend_image'] = \ - "gcr.io/google_containers/defaultbackend:1.4" - if arch() == 's390x': - context['defaultbackend_image'] = \ - "gcr.io/google_containers/defaultbackend-s390x:1.4" + context['defaultbackend_image'] = config.get('default-backend-image') + if context['defaultbackend_image'] == "" or context['defaultbackend_image'] == "auto": + if context['arch'] == 's390x': + context['defaultbackend_image'] = \ + "gcr.io/google_containers/defaultbackend-s390x:1.4" + else: + context['defaultbackend_image'] = \ + "gcr.io/google_containers/defaultbackend:1.4" # Render the default http backend (404) replicationcontroller manifest manifest = addon_path.format('default-http-backend.yaml') @@ -650,11 +661,14 @@ def launch_default_ingress_controller(): return # Render the ingress daemon set controller manifest - context['ingress_image'] = \ - "gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.13" - if arch() == 's390x': - context['ingress_image'] = \ - "docker.io/cdkbot/nginx-ingress-controller-s390x:0.9.0-beta.13" + context['ingress_image'] = config.get('nginx-image') + if context['ingress_image'] == "" or context['ingress_image'] == "auto": + if context['arch'] == 's390x': + context['ingress_image'] = \ + "docker.io/cdkbot/nginx-ingress-controller-s390x:0.9.0-beta.13" + else: + context['ingress_image'] = \ + "gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.15" context['juju_application'] = hookenv.service_name() manifest = addon_path.format('ingress-daemon-set.yaml') render('ingress-daemon-set.yaml', manifest, context) From a22358e525563b1e4d2dbd5ccd81cf0d0b40079b Mon Sep 17 00:00:00 2001 From: Mike Wilson Date: Mon, 22 Jan 2018 14:54:58 -0500 Subject: [PATCH 2/2] Fixing some flake8 issues --- .../kubernetes-worker/reactive/kubernetes_worker.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py index e0aa927ab6b..6d458aee6fa 100644 --- a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py +++ b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py @@ -630,16 +630,18 @@ def launch_default_ingress_controller(): ''' Launch the Kubernetes ingress controller & default backend (404) ''' config = hookenv.config() - # need to test this in case we get in here from a config change to the image + # need to test this in case we get in + # here from a config change to the image if not config.get('ingress'): return - + context = {} context['arch'] = arch() addon_path = '/root/cdk/addons/{}' context['defaultbackend_image'] = config.get('default-backend-image') - if context['defaultbackend_image'] == "" or context['defaultbackend_image'] == "auto": + if (context['defaultbackend_image'] == "" or + context['defaultbackend_image'] == "auto"): if context['arch'] == 's390x': context['defaultbackend_image'] = \ "gcr.io/google_containers/defaultbackend-s390x:1.4" @@ -668,7 +670,7 @@ def launch_default_ingress_controller(): "docker.io/cdkbot/nginx-ingress-controller-s390x:0.9.0-beta.13" else: context['ingress_image'] = \ - "gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.15" + "gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.15" # noqa context['juju_application'] = hookenv.service_name() manifest = addon_path.format('ingress-daemon-set.yaml') render('ingress-daemon-set.yaml', manifest, context)