From 433d8fbcc6628a1e331388ae0676d0735e46142c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 10 Feb 2018 21:53:23 +0100 Subject: generate flumotion worker services --- src/examples/elevate2018.yml | 1 - src/flufigut.py | 8 +++++++- .../default/kubernetes/flumotion-worker-deploy.yml.j2 | 3 +++ .../default/kubernetes/flumotion-worker-secret.yml.j2 | 1 + .../default/kubernetes/flumotion-worker-svc.yml.j2 | 19 +++++++++++++++++++ 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 templates/default/kubernetes/flumotion-worker-svc.yml.j2 diff --git a/src/examples/elevate2018.yml b/src/examples/elevate2018.yml index daa4abe..4c40a5d 100644 --- a/src/examples/elevate2018.yml +++ b/src/examples/elevate2018.yml @@ -92,7 +92,6 @@ streams: type: http count: 4 port: 8000 - interface: localhost max-bw: 290000000 burst-on-connect: 5 hostname: "elevate-live%i.spreadspace.org" diff --git a/src/flufigut.py b/src/flufigut.py index d0de644..a20f014 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -415,11 +415,12 @@ class Planet: comp_name = '%s-%s%i-port-%s-%i' % (protocol, stream, idx + 1, interface, port) addr = '%s:%i' % (interface, port) + worker = self.__get_worker(comp_name) porter = Porter(comp_name, interface, port) self.atmosphere[porter.name] = { 'type': "porter", 'desc': "%s porter %s%i on %s" % (protocol, stream, idx + 1, addr), - 'worker': str(self.__get_worker(comp_name)), + 'worker': str(worker), 'properties': { 'port': port, 'socket-path': porter.socket_path, @@ -430,6 +431,7 @@ class Planet: if interface: self.atmosphere[porter.name]['properties']['interface'] = interface + self.__add_worker_flag(worker, "port", port) return porter def __generate_stream_mux_repeater(self, stream, mux, format, profile, feeder): @@ -651,6 +653,10 @@ class K8sDeployment: secret['data']['password'] = base64.b64encode(worker['password'].encode('utf-8')).decode('ascii') v1.create_namespaced_secret(self._namespace, secret) + if 'port' in worker['flags']: + svc = self.__generate_object(tmpl_env, 'flumotion-worker-svc.yml', worker) + v1.create_namespaced_service(self._namespace, svc) + deploy = self.__generate_object(tmpl_env, 'flumotion-worker-deploy.yml', worker) appsV1.create_namespaced_deployment(self._namespace, deploy) diff --git a/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 b/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 index 49cb6d4..f6dfcfd 100644 --- a/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 +++ b/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 @@ -6,12 +6,14 @@ metadata: labels: app: flumotion type: worker + worker: {{ worker.name }} spec: replicas: 1 selector: matchLabels: app: flumotion type: worker + worker: {{ worker.name }} strategy: type: Recreate revisionHistoryLimit: 5 @@ -20,6 +22,7 @@ spec: labels: app: flumotion type: worker + worker: {{ worker.name }} spec: nodeName: {{ worker.name }} securityContext: diff --git a/templates/default/kubernetes/flumotion-worker-secret.yml.j2 b/templates/default/kubernetes/flumotion-worker-secret.yml.j2 index ec07df7..913b2fb 100644 --- a/templates/default/kubernetes/flumotion-worker-secret.yml.j2 +++ b/templates/default/kubernetes/flumotion-worker-secret.yml.j2 @@ -6,6 +6,7 @@ metadata: labels: app: flumotion type: worker + worker: {{ worker.name }} type: Opaque data: password: dGVzdAo= diff --git a/templates/default/kubernetes/flumotion-worker-svc.yml.j2 b/templates/default/kubernetes/flumotion-worker-svc.yml.j2 new file mode 100644 index 0000000..1179618 --- /dev/null +++ b/templates/default/kubernetes/flumotion-worker-svc.yml.j2 @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: {{ namespace }} + name: flumotion-worker-{{ worker.name }} + labels: + app: flumotion + type: worker + worker: {{ worker.name }} +spec: + selector: + app: flumotion + type: worker + worker: {{ worker.name }} + clusterIP: None + ports: +%% for port in worker.flags.port + - port: {{ port }} +%% endfor -- cgit v1.2.3