summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-02-26 23:31:40 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-02-26 23:31:40 +0100
commitd1612dad73f7f3b097a6a73ead425fd3baa30135 (patch)
treea07a97a1a3d44a1177c260e40f25296794e7cebc
parentthe actual nginx container doesn't need /var/lib/acme (diff)
added stream-site nginx
-rw-r--r--src/examples/elevate2018.yml4
-rwxr-xr-xsrc/flufigut.py17
-rw-r--r--templates/default/kubernetes/stream-lb-deploy.yml.j22
-rw-r--r--templates/default/kubernetes/stream-site-cm.yml.j247
-rw-r--r--templates/default/kubernetes/stream-site-deploy.yml.j264
-rw-r--r--templates/default/kubernetes/stream-site-ingress.yml.j222
-rw-r--r--templates/default/kubernetes/stream-site-svc.yml.j216
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