diff options
author | Christian Pointner <equinox@spreadspace.org> | 2018-02-26 23:31:40 +0100 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2018-02-26 23:31:40 +0100 |
commit | d1612dad73f7f3b097a6a73ead425fd3baa30135 (patch) | |
tree | a07a97a1a3d44a1177c260e40f25296794e7cebc | |
parent | the actual nginx container doesn't need /var/lib/acme (diff) |
added stream-site nginx
-rw-r--r-- | src/examples/elevate2018.yml | 4 | ||||
-rwxr-xr-x | src/flufigut.py | 17 | ||||
-rw-r--r-- | templates/default/kubernetes/stream-lb-deploy.yml.j2 | 2 | ||||
-rw-r--r-- | templates/default/kubernetes/stream-site-cm.yml.j2 | 47 | ||||
-rw-r--r-- | templates/default/kubernetes/stream-site-deploy.yml.j2 | 64 | ||||
-rw-r--r-- | templates/default/kubernetes/stream-site-ingress.yml.j2 | 22 | ||||
-rw-r--r-- | templates/default/kubernetes/stream-site-svc.yml.j2 | 16 |
7 files changed, 168 insertions, 4 deletions
diff --git a/src/examples/elevate2018.yml b/src/examples/elevate2018.yml index 8dfc7c4..e6583d2 100644 --- a/src/examples/elevate2018.yml +++ b/src/examples/elevate2018.yml @@ -99,6 +99,8 @@ streams: max-con: 100 burst-on-connect: 5 hostname: elevate-feed.spreadspace.org + site-hostname: elevate-feed.spreadspace.org + site-worker: helene public: muxes: [ av-orig, audio-orig ] nginx-muxes: [ av-orig ] @@ -110,8 +112,10 @@ streams: hostname: "emc-%02i.spreadspace.org" repeater: True lb-hostname: "elevate-live.spreadspace.org" + lb-worker: emc-00 onion-service: "elevateh7tpoo7eg.onion" site-hostname: "stream.elevate.at" + site-worker: emc-00 records: av: mux: avr diff --git a/src/flufigut.py b/src/flufigut.py index 638075d..8ef5378 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -796,8 +796,18 @@ class K8sDeployment: deploy = self.__generate_object(tmpl_env, 'stream-lb-deploy.yml', {'stream': stream_name, 'streamers': streamers}) appsV1.create_namespaced_deployment(self._namespace, deploy) - def _deploy_stream_website(self, template_dir, tmpl_env, v1, appsV1, stream_name, stream): - # TODO: add me + def _deploy_stream_website(self, template_dir, tmpl_env, v1, appsV1, extV1beta1, stream_name, stream): + cm = self.__generate_object(tmpl_env, 'stream-site-cm.yml', {'stream': stream_name}) + v1.create_namespaced_config_map(self._namespace, cm) + + svc = self.__generate_object(tmpl_env, 'stream-site-svc.yml', {'stream': stream_name}) + v1.create_namespaced_service(self._namespace, svc) + + deploy = self.__generate_object(tmpl_env, 'stream-site-deploy.yml', {'stream': stream_name}) + appsV1.create_namespaced_deployment(self._namespace, deploy) + + ingress = self.__generate_object(tmpl_env, 'stream-site-ingress.yml', {'stream': stream_name}) + extV1beta1.create_namespaced_ingress(self._namespace, ingress) pass def _deploy_onionbalance(self, template_dir, tmpl_env, v1, appsV1, rbacV1): @@ -824,6 +834,7 @@ class K8sDeployment: def deploy(self, template_dir): v1 = kubernetes.client.CoreV1Api() appsV1 = kubernetes.client.AppsV1Api() + extV1beta1 = kubernetes.client.ExtensionsV1beta1Api() rbacV1 = kubernetes.client.RbacAuthorizationV1Api() self.__create_namespace(v1) @@ -848,7 +859,7 @@ class K8sDeployment: self._deploy_stream_loadbalancer(template_dir, tmpl_env, v1, appsV1, stream_name, stream) if 'onion-service' in stream: self._deploy_onion_service_config(template_dir, tmpl_env, v1, stream_name, stream) - self._deploy_stream_website(template_dir, tmpl_env, v1, appsV1, stream_name, stream) + self._deploy_stream_website(template_dir, tmpl_env, v1, appsV1, extV1beta1, stream_name, stream) if self.__has_onion_service: role = self.__generate_object(tmpl_env, 'onion-service-role.yml') diff --git a/templates/default/kubernetes/stream-lb-deploy.yml.j2 b/templates/default/kubernetes/stream-lb-deploy.yml.j2 index de63191..8f33247 100644 --- a/templates/default/kubernetes/stream-lb-deploy.yml.j2 +++ b/templates/default/kubernetes/stream-lb-deploy.yml.j2 @@ -24,7 +24,7 @@ spec: type: stream-lb stream: {{ deploy.stream }} spec: - nodeName: emc-00 ## TODO: hardcoded value + nodeName: {{ desc.streams[deploy.stream]['lb-worker'] }} securityContext: runAsUser: 998 fsGroup: 998 diff --git a/templates/default/kubernetes/stream-site-cm.yml.j2 b/templates/default/kubernetes/stream-site-cm.yml.j2 new file mode 100644 index 0000000..365de3f --- /dev/null +++ b/templates/default/kubernetes/stream-site-cm.yml.j2 @@ -0,0 +1,47 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: {{ deploy.namespace }} + name: stream-site-{{ deploy.stream }} + labels: + app: nginx + type: stream-site + stream: {{ deploy.stream }} +data: + nginx.conf: | + worker_processes 4; + pid /srv/nginx.pid; + error_log /dev/stderr notice; + + events { + worker_connections 768; + # multi_accept on; + } + + http { + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + server_names_hash_bucket_size 64; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + access_log /dev/null; + + server { + listen 8080 default_server; + listen [::]:8080 default_server; + + server_name _; + + root /srv/www; + + location /js/config.js { + alias /srv/config/config.js; + } + } + } diff --git a/templates/default/kubernetes/stream-site-deploy.yml.j2 b/templates/default/kubernetes/stream-site-deploy.yml.j2 new file mode 100644 index 0000000..e5ba29b --- /dev/null +++ b/templates/default/kubernetes/stream-site-deploy.yml.j2 @@ -0,0 +1,64 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: {{ deploy.namespace }} + name: stream-site-{{ deploy.stream }} + labels: + app: nginx + type: stream-site + stream: {{ deploy.stream }} +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + type: stream-site + stream: {{ deploy.stream }} + strategy: + type: Recreate + revisionHistoryLimit: 5 + template: + metadata: + labels: + app: nginx + type: stream-site + stream: {{ deploy.stream }} + spec: + nodeName: {{ desc.streams[deploy.stream]['site-worker'] }} + securityContext: + runAsUser: 998 + fsGroup: 998 + containers: + - name: nginx + image: spreadspace/nginx-streaming:{{ desc.globals.deployment.parameter.nginx_image_version }} + imagePullPolicy: Always + args: + - nginx + - -c + - /srv/config/nginx.conf + - -g + - "daemon off;" + volumeMounts: + - name: home + mountPath: /srv + - name: nginx-lib + mountPath: /var/lib/nginx + - name: nginx-config + mountPath: /srv/config + - name: www + mountPath: /srv/www + volumes: + - name: home + emptyDir: + medium: Memory + - name: nginx-lib + emptyDir: + medium: Memory + - name: nginx-config + configMap: + name: stream-site-{{ deploy.stream }} + - name: www + hostPath: + type: Directory + path: /srv/www/{{ desc.globals.name }} + readOnly: yes diff --git a/templates/default/kubernetes/stream-site-ingress.yml.j2 b/templates/default/kubernetes/stream-site-ingress.yml.j2 new file mode 100644 index 0000000..1fbc81f --- /dev/null +++ b/templates/default/kubernetes/stream-site-ingress.yml.j2 @@ -0,0 +1,22 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + namespace: {{ deploy.namespace }} + name: stream-site-{{ deploy.stream }} + labels: + app: nginx + type: stream-site + stream: {{ deploy.stream }} +spec: + tls: + - secretName: stream-site-{{ deploy.stream }}-tls + hosts: + - {{ desc.streams[deploy.stream]['site-hostname'] }} + rules: + - host: {{ desc.streams[deploy.stream]['site-hostname'] }} + http: + paths: + - path: / + backend: + serviceName: stream-site-{{ deploy.stream }} + servicePort: 8080 diff --git a/templates/default/kubernetes/stream-site-svc.yml.j2 b/templates/default/kubernetes/stream-site-svc.yml.j2 new file mode 100644 index 0000000..0aba704 --- /dev/null +++ b/templates/default/kubernetes/stream-site-svc.yml.j2 @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: {{ deploy.namespace }} + name: stream-site-{{ deploy.stream }} + labels: + app: nginx + type: stream-site + stream: {{ deploy.stream }} +spec: + selector: + app: nginx + type: stream-site + stream: {{ deploy.stream }} + ports: + - port: 8080 |