From e163fb53e277c8b8b3dcd36e9fcc0d7d16b94976 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 23 Feb 2018 12:45:55 +0100 Subject: refactor k8s templates --- src/flufigut.py | 22 +++++++------- .../kubernetes/flumotion-worker-deploy.yml.j2 | 34 +++++++++++----------- .../kubernetes/flumotion-worker-secret.yml.j2 | 4 +-- .../default/kubernetes/flumotion-worker-svc.yml.j2 | 8 ++--- .../default/kubernetes/nginx-streamer-cm.yml.j2 | 16 +++++----- .../kubernetes/nginx-streamer-deploy.yml.j2 | 12 ++++---- .../default/kubernetes/nginx-streamer-svc.yml.j2 | 8 ++--- .../default/kubernetes/onionbalance-deploy.yml.j2 | 2 +- templates/default/kubernetes/sfive-cm.yml.j2 | 4 +-- templates/default/kubernetes/sfive-deploy.yml.j2 | 24 +++++++-------- 10 files changed, 67 insertions(+), 67 deletions(-) diff --git a/src/flufigut.py b/src/flufigut.py index 7117318..c8c073b 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -693,9 +693,9 @@ class K8sDeployment: if e.status == 404: pass - def __generate_object(self, tmpl_env, template_file, worker=None): + def __generate_object(self, tmpl_env, template_file, deploy={}): tmpl = tmpl_env.get_template(template_file + '.j2') - object_yaml = tmpl.render(namespace=self._namespace, desc=self._desc, planet=self._planet, worker=worker) + object_yaml = tmpl.render(namespace=self._namespace, desc=self._desc, planet=self._planet, deploy=deploy) return yaml.load(object_yaml) def _deploy_flumotion_manager(self, template_dir, tmpl_env, v1, appsV1): @@ -714,15 +714,15 @@ class K8sDeployment: appsV1.create_namespaced_deployment(self._namespace, deploy) def _deploy_flumotion_worker(self, template_dir, tmpl_env, v1, appsV1, worker): - secret = self.__generate_object(tmpl_env, 'flumotion-worker-secret.yml', worker) + secret = self.__generate_object(tmpl_env, 'flumotion-worker-secret.yml', {'worker': worker}) 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) + svc = self.__generate_object(tmpl_env, 'flumotion-worker-svc.yml', {'worker': worker}) v1.create_namespaced_service(self._namespace, svc) - deploy = self.__generate_object(tmpl_env, 'flumotion-worker-deploy.yml', worker) + deploy = self.__generate_object(tmpl_env, 'flumotion-worker-deploy.yml', {'worker': worker}) appsV1.create_namespaced_deployment(self._namespace, deploy) def _deploy_nginx_worker(self, template_dir, tmpl_env, v1, appsV1, worker): @@ -735,13 +735,13 @@ class K8sDeployment: if not needs_nginx: return - cm = self.__generate_object(tmpl_env, 'nginx-streamer-cm.yml', worker) + cm = self.__generate_object(tmpl_env, 'nginx-streamer-cm.yml', {'worker': worker}) v1.create_namespaced_config_map(self._namespace, cm) - svc = self.__generate_object(tmpl_env, 'nginx-streamer-svc.yml', worker) + svc = self.__generate_object(tmpl_env, 'nginx-streamer-svc.yml', {'worker': worker}) v1.create_namespaced_service(self._namespace, svc) - deploy = self.__generate_object(tmpl_env, 'nginx-streamer-deploy.yml', worker) + deploy = self.__generate_object(tmpl_env, 'nginx-streamer-deploy.yml', {'worker': worker}) appsV1.create_namespaced_deployment(self._namespace, deploy) def _deploy_sfive_worker(self, template_dir, tmpl_env, v1, appsV1, worker): @@ -749,7 +749,7 @@ class K8sDeployment: return self.__has_sfive = True - cm = self.__generate_object(tmpl_env, 'sfive-cm.yml', worker) + cm = self.__generate_object(tmpl_env, 'sfive-cm.yml', {'worker': worker}) if 'data' not in cm or not cm['data']: cm['data'] = {} if worker['flags']['sfive'] == 'proxy' and 'stream' in worker['flags']: @@ -761,7 +761,7 @@ class K8sDeployment: v1.create_namespaced_config_map(self._namespace, cm) - deploy = self.__generate_object(tmpl_env, 'sfive-deploy.yml', worker) + deploy = self.__generate_object(tmpl_env, 'sfive-deploy.yml', {'worker': worker}) appsV1.create_namespaced_deployment(self._namespace, deploy) def _deploy_onionbalance(self, template_dir, tmpl_env, v1, appsV1, rbacV1): @@ -778,7 +778,7 @@ class K8sDeployment: v1.create_namespaced_secret(self._namespace, secret) worker = self._planet.workers[self._desc.globals['deployment']['parameter']['onionbalance_worker']] - deploy = self.__generate_object(tmpl_env, 'onionbalance-deploy.yml', worker) + deploy = self.__generate_object(tmpl_env, 'onionbalance-deploy.yml', {'worker': worker}) appsV1.create_namespaced_deployment(self._namespace, deploy) def deploy(self, template_dir): diff --git a/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 b/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 index 0f8ab23..2ae001f 100644 --- a/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 +++ b/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 @@ -2,18 +2,18 @@ apiVersion: apps/v1 kind: Deployment metadata: namespace: {{ namespace }} - name: flumotion-worker-{{ worker.name }} + name: flumotion-worker-{{ deploy.worker.name }} labels: app: flumotion type: worker - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: replicas: 1 selector: matchLabels: app: flumotion type: worker - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} strategy: type: Recreate revisionHistoryLimit: 5 @@ -22,15 +22,15 @@ spec: labels: app: flumotion type: worker - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: - nodeName: {{ worker.name }} + nodeName: {{ deploy.worker.name }} securityContext: runAsUser: 998 fsGroup: 998 -%% if 'record' in worker.flags +%% if 'record' in deploy.worker.flags initContainers: -%% for record_name in worker.flags.record +%% for record_name in deploy.worker.flags.record - name: prepare-record-{{ record_name }} image: busybox command: ['sh', '-c', 'chown 998:998 /srv/record && chmod 0755 /srv/record'] @@ -42,7 +42,7 @@ spec: %% endfor %% endif containers: -%% for subname, sub in worker.subs.items() +%% for subname, sub in deploy.worker.subs.items() - name: {{ subname }} image: spreadspace/flumotion:worker-{{ desc.globals.deployment.parameter.flumotion_image_version }} imagePullPolicy: Always @@ -50,7 +50,7 @@ spec: - name: WORKER_PASSWORD valueFrom: secretKeyRef: - name: flumotion-worker-{{ worker.name }} + name: flumotion-worker-{{ deploy.worker.name }} key: password args: - --verbose @@ -58,7 +58,7 @@ spec: - -P {{ desc.globals.manager.port }} - -T {{ desc.globals.manager.transport }} - -n {{ sub.fullname }} - - -u {{ worker.name }} + - -u {{ deploy.worker.name }} - -p $(WORKER_PASSWORD) - -F {{ 7000 + loop.index0 * 10 }}-{{ 7001 + loop.index0 * 10 }} volumeMounts: @@ -66,7 +66,7 @@ spec: mountPath: /srv %% set _needs_ = { 'decklink_libs': False, 'privileged': False } %% if 'input' in sub.flags -%% for input_name in worker.flags.input +%% for input_name in deploy.worker.flags.input %% if desc.inputs[input_name].type == 'decklink' %% if _needs_.update({'decklink_libs': True, 'privileged': True}) %# jinja variables are weird... https://stackoverflow.com/questions/9486393 @@ -84,8 +84,8 @@ spec: mountPath: /usr/lib/libDeckLinkPreviewAPI.so %% endif %% endif -%% if 'record' in worker.flags -%% for record_name in worker.flags.record +%% if 'record' in deploy.worker.flags +%% for record_name in deploy.worker.flags.record - name: record-{{ record_name }} mountPath: /srv/recordings/{{ record_name }} %% endfor @@ -99,9 +99,9 @@ spec: - name: home emptyDir: medium: Memory -%% if 'input' in worker.flags +%% if 'input' in deploy.worker.flags %% set _needs_ = { 'decklink_libs': False } -%% for input_name in worker.flags.input +%% for input_name in deploy.worker.flags.input %% if desc.inputs[input_name].type == 'decklink' %% if _needs_.update({'decklink_libs': True}) %# jinja variables are weird... https://stackoverflow.com/questions/9486393 @@ -120,8 +120,8 @@ spec: readOnly: true %% endif %% endif -%% if 'record' in worker.flags -%% for record_name in worker.flags.record +%% if 'record' in deploy.worker.flags +%% for record_name in deploy.worker.flags.record - name: record-{{ record_name }} hostPath: type: DirectoryOrCreate diff --git a/templates/default/kubernetes/flumotion-worker-secret.yml.j2 b/templates/default/kubernetes/flumotion-worker-secret.yml.j2 index 913b2fb..3b5f446 100644 --- a/templates/default/kubernetes/flumotion-worker-secret.yml.j2 +++ b/templates/default/kubernetes/flumotion-worker-secret.yml.j2 @@ -2,11 +2,11 @@ apiVersion: v1 kind: Secret metadata: namespace: {{ namespace }} - name: flumotion-worker-{{ worker.name }} + name: flumotion-worker-{{ deploy.worker.name }} labels: app: flumotion type: worker - worker: {{ worker.name }} + worker: {{ deploy.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 index 62a7c77..db66be3 100644 --- a/templates/default/kubernetes/flumotion-worker-svc.yml.j2 +++ b/templates/default/kubernetes/flumotion-worker-svc.yml.j2 @@ -2,17 +2,17 @@ apiVersion: v1 kind: Service metadata: namespace: {{ namespace }} - name: flumotion-worker-{{ worker.name }} + name: flumotion-worker-{{ deploy.worker.name }} labels: app: flumotion type: worker - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: selector: app: flumotion type: worker - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} ports: -%% for port in worker.flags.port +%% for port in deploy.worker.flags.port - port: {{ port }} %% endfor diff --git a/templates/default/kubernetes/nginx-streamer-cm.yml.j2 b/templates/default/kubernetes/nginx-streamer-cm.yml.j2 index 563245c..c97bd63 100644 --- a/templates/default/kubernetes/nginx-streamer-cm.yml.j2 +++ b/templates/default/kubernetes/nginx-streamer-cm.yml.j2 @@ -2,11 +2,11 @@ apiVersion: v1 kind: ConfigMap metadata: namespace: {{ namespace }} - name: nginx-streamer-{{ worker.name }} + name: nginx-streamer-{{ deploy.worker.name }} labels: app: nginx type: streamer - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} data: nginx.conf: | worker_processes 4; @@ -35,8 +35,8 @@ data: access_log /dev/null; server { - listen {{ desc.streams[worker.flags.stream].port }} default_server; - listen [::]:{{ desc.streams[worker.flags.stream].port }} default_server; + listen {{ desc.streams[deploy.worker.flags.stream].port }} default_server; + listen [::]:{{ desc.streams[deploy.worker.flags.stream].port }} default_server; server_name _; root /srv/www; @@ -69,9 +69,9 @@ data: hls_fragment_naming timestamp; hls_fragment_slicing aligned; hls_type live; - hls_base_url http://{{ worker.flags['stream-hostname'] }}:{{ desc.streams[worker.flags.stream].port }}/hls/; + hls_base_url http://{{ deploy.worker.flags['stream-hostname'] }}:{{ desc.streams[deploy.worker.flags.stream].port }}/hls/; -%% for mux in desc.streams[worker.flags.stream]['nginx-muxes'] +%% for mux in desc.streams[deploy.worker.flags.stream]['nginx-muxes'] %% for profile in desc.muxes[mux].formats.flash %% set abitrate = desc.globals.profiles[profile].audio %% set vbitrate = desc.globals.bitrates[desc.globals.formats.flash.video][desc.globals.profiles[profile].video] @@ -92,9 +92,9 @@ data: } respawn on; -%% for mux in desc.streams[worker.flags.stream]['nginx-muxes'] +%% for mux in desc.streams[deploy.worker.flags.stream]['nginx-muxes'] %% for profile in desc.muxes[mux].formats.flash - exec_static ffmpeg -i http://flumotion-worker-{{ worker.name }}:{{ desc.streams[worker.flags.stream].port }}/{{ mux }}-flash-{{ profile }}.flv + exec_static ffmpeg -i http://flumotion-worker-{{ deploy.worker.name }}:{{ desc.streams[deploy.worker.flags.stream].port }}/{{ mux }}-flash-{{ profile }}.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/hls/{{ mux }}-{{ profile }} -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/dash/{{ mux }}-{{ profile }}; %% endfor diff --git a/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 b/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 index 2a0fcf2..a1bfd3e 100644 --- a/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 +++ b/templates/default/kubernetes/nginx-streamer-deploy.yml.j2 @@ -2,18 +2,18 @@ apiVersion: apps/v1 kind: Deployment metadata: namespace: {{ namespace }} - name: nginx-streamer-{{ worker.name }} + name: nginx-streamer-{{ deploy.worker.name }} labels: app: nginx type: streamer - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: replicas: 1 selector: matchLabels: app: nginx type: streamer - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} strategy: type: Recreate revisionHistoryLimit: 5 @@ -22,9 +22,9 @@ spec: labels: app: nginx type: streamer - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: - nodeName: {{ worker.name }} + nodeName: {{ deploy.worker.name }} securityContext: runAsUser: 998 fsGroup: 998 @@ -56,7 +56,7 @@ spec: medium: Memory - name: nginx-config configMap: - name: nginx-streamer-{{ worker.name }} + name: nginx-streamer-{{ deploy.worker.name }} - name: www emptyDir: medium: Memory diff --git a/templates/default/kubernetes/nginx-streamer-svc.yml.j2 b/templates/default/kubernetes/nginx-streamer-svc.yml.j2 index 9be5ed7..1da952f 100644 --- a/templates/default/kubernetes/nginx-streamer-svc.yml.j2 +++ b/templates/default/kubernetes/nginx-streamer-svc.yml.j2 @@ -2,15 +2,15 @@ apiVersion: v1 kind: Service metadata: namespace: {{ namespace }} - name: nginx-streamer-{{ worker.name }} + name: nginx-streamer-{{ deploy.worker.name }} labels: app: nginx type: streamer - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: selector: app: nginx type: streamer - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} ports: - - port: {{ desc.streams[worker.flags.stream].port }} + - port: {{ desc.streams[deploy.worker.flags.stream].port }} diff --git a/templates/default/kubernetes/onionbalance-deploy.yml.j2 b/templates/default/kubernetes/onionbalance-deploy.yml.j2 index e82ff96..7511b4b 100644 --- a/templates/default/kubernetes/onionbalance-deploy.yml.j2 +++ b/templates/default/kubernetes/onionbalance-deploy.yml.j2 @@ -18,7 +18,7 @@ spec: labels: app: onionbalance spec: - nodeName: {{ worker.name }} + nodeName: {{ deploy.worker.name }} serviceAccountName: onionbalance securityContext: runAsUser: 998 diff --git a/templates/default/kubernetes/sfive-cm.yml.j2 b/templates/default/kubernetes/sfive-cm.yml.j2 index dea9222..cdd6a13 100644 --- a/templates/default/kubernetes/sfive-cm.yml.j2 +++ b/templates/default/kubernetes/sfive-cm.yml.j2 @@ -2,8 +2,8 @@ apiVersion: v1 kind: ConfigMap metadata: namespace: {{ namespace }} - name: sfive-{{ worker.name }} + name: sfive-{{ deploy.worker.name }} labels: app: sfive - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} data: diff --git a/templates/default/kubernetes/sfive-deploy.yml.j2 b/templates/default/kubernetes/sfive-deploy.yml.j2 index 4de270a..6cd271b 100644 --- a/templates/default/kubernetes/sfive-deploy.yml.j2 +++ b/templates/default/kubernetes/sfive-deploy.yml.j2 @@ -2,16 +2,16 @@ apiVersion: apps/v1 kind: Deployment metadata: namespace: {{ namespace }} - name: sfive-{{ worker.name }} + name: sfive-{{ deploy.worker.name }} labels: app: sfive - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} spec: replicas: 1 selector: matchLabels: app: sfive - worker: {{ worker.name }} + worker: {{ deploy.worker.name }} strategy: type: Recreate revisionHistoryLimit: 5 @@ -19,12 +19,12 @@ spec: metadata: labels: app: sfive - worker: {{ worker.name }} -{% if worker.flags.sfive == 'proxy' and 'stream-onion' in worker.flags %} - spreadspace.org/onion-service: {{ worker.flags['stream-onion'] }} + worker: {{ deploy.worker.name }} +{% if deploy.worker.flags.sfive == 'proxy' and 'stream-onion' in deploy.worker.flags %} + spreadspace.org/onion-service: {{ deploy.worker.flags['stream-onion'] }} {% endif %} spec: - nodeName: {{ worker.name }} + nodeName: {{ deploy.worker.name }} serviceAccountName: sfive securityContext: runAsUser: 998 @@ -40,7 +40,7 @@ spec: volumeMounts: - name: hub-data mountPath: /srv/data -{% if worker.flags.sfive == 'proxy' and 'stream-onion' in worker.flags %} +{% if deploy.worker.flags.sfive == 'proxy' and 'stream-onion' in deploy.worker.flags %} - name: prepare-onion-lib image: busybox command: ['sh', '-c', 'chown 998:998 /var/lib/tor && chmod 0750 /var/lib/tor'] @@ -51,7 +51,7 @@ spec: mountPath: /var/lib/tor {% endif %} containers: -{% if worker.flags.sfive == 'proxy' %} +{% if deploy.worker.flags.sfive == 'proxy' %} - name: proxy image: spreadspace/sfive:{{ desc.globals.deployment.parameter.sfive_image_version }} imagePullPolicy: Always @@ -64,7 +64,7 @@ spec: mountPath: /srv - name: proxy-config mountPath: /srv/config -{% if 'stream-onion' in worker.flags %} +{% if 'stream-onion' in deploy.worker.flags %} - name: proxy-onion image: spreadspace/sfive:{{ desc.globals.deployment.parameter.sfive_image_version }} imagePullPolicy: Always @@ -121,14 +121,14 @@ spec: - name: home emptyDir: medium: Memory -{% if worker.flags.sfive == 'proxy' and 'stream-onion' in worker.flags %} +{% if deploy.worker.flags.sfive == 'proxy' and 'stream-onion' in deploy.worker.flags %} - name: onion-lib emptyDir: medium: Memory {% endif %} - name: proxy-config configMap: - name: sfive-{{ worker.name }} + name: sfive-{{ deploy.worker.name }} - name: hub-data hostPath: type: DirectoryOrCreate -- cgit v1.2.3