From 72338f15069fb5669573486d40407dab3a6eaade Mon Sep 17 00:00:00 2001 From: Steffen Vogel <post@steffenvogel.de> Date: Sat, 28 Sep 2019 23:52:20 +0200 Subject: [PATCH] add kubernetes yaml files --- .gitignore | 3 +- docker-compose.yml | 4 +- kubernetes/Makefile | 20 +++++++ kubernetes/backend-deployment.yaml | 41 +++++++++++++ .../backend-files-persistentvolumeclaim.yaml | 12 ++++ kubernetes/broker-deployment.yaml | 30 ++++++++++ kubernetes/broker-service.yaml | 21 +++++++ kubernetes/controller-deployment.yaml | 29 ++++++++++ kubernetes/database-deployment.yaml | 22 +++++++ .../database-persistentvolumeclaim.yaml | 12 ++++ kubernetes/frontend-deployment.yaml | 21 +++++++ kubernetes/mongo-express-deployment.yaml | 30 ++++++++++ .../nginx-claim0-persistentvolumeclaim.yaml | 12 ++++ kubernetes/nginx-deployment.yaml | 30 ++++++++++ kubernetes/nginx-ingress.yaml | 0 kubernetes/nginx-service.yaml | 12 ++++ .../node-data-persistentvolumeclaim.yaml | 12 ++++ kubernetes/node-deployment.yaml | 58 +++++++++++++++++++ kubernetes/node-service.yaml | 57 ++++++++++++++++++ kubernetes/relay-deployment.yaml | 23 ++++++++ 20 files changed, 445 insertions(+), 4 deletions(-) create mode 100644 kubernetes/Makefile create mode 100644 kubernetes/backend-deployment.yaml create mode 100644 kubernetes/backend-files-persistentvolumeclaim.yaml create mode 100644 kubernetes/broker-deployment.yaml create mode 100644 kubernetes/broker-service.yaml create mode 100644 kubernetes/controller-deployment.yaml create mode 100644 kubernetes/database-deployment.yaml create mode 100644 kubernetes/database-persistentvolumeclaim.yaml create mode 100644 kubernetes/frontend-deployment.yaml create mode 100644 kubernetes/mongo-express-deployment.yaml create mode 100644 kubernetes/nginx-claim0-persistentvolumeclaim.yaml create mode 100644 kubernetes/nginx-deployment.yaml create mode 100644 kubernetes/nginx-ingress.yaml create mode 100644 kubernetes/nginx-service.yaml create mode 100644 kubernetes/node-data-persistentvolumeclaim.yaml create mode 100644 kubernetes/node-deployment.yaml create mode 100644 kubernetes/node-service.yaml create mode 100644 kubernetes/relay-deployment.yaml diff --git a/.gitignore b/.gitignore index dcc0a31..9b1b243 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -backup/ \ No newline at end of file +backup/ +etc/node/others/ diff --git a/docker-compose.yml b/docker-compose.yml index eb3a2bd..daa4094 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "2.1" +version: "3.2" volumes: database: @@ -48,10 +48,8 @@ services: # The MongoDB database for the VILLASweb backend database: image: mongo:latest - user: mongodb volumes: - database:/data/db - user: mongodb restart: always # VILLASnode, the gateway between UDP and WebSocket traffic diff --git a/kubernetes/Makefile b/kubernetes/Makefile new file mode 100644 index 0000000..d8c118b --- /dev/null +++ b/kubernetes/Makefile @@ -0,0 +1,20 @@ +NAMESPACE=villas + +KUBECTL=kubectl -n $(NAMESPACE) + +APPLY=--dry-run -o yaml | $(KUBECTL) apply -f - + +deploy: config-maps secrets + $(KUBECTL) apply -f . + +namespace: + $(KUBECTL) create namespace villas $(APPLY) + +config-maps: + $(KUBECTL) create configmap nginx-config --from-file=../etc/nginx/ $(APPLY) + $(KUBECTL) create configmap node-config --from-file=../etc/node/ $(APPLY) + $(KUBECTL) create configmap controller-config --from-file=../etc/controller/ $(APPLY) + +secrets: + +.PHONY: deploy config-maps secrets diff --git a/kubernetes/backend-deployment.yaml b/kubernetes/backend-deployment.yaml new file mode 100644 index 0000000..97b663f --- /dev/null +++ b/kubernetes/backend-deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: villas-web + name: backend +spec: + selector: + matchLabels: + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: villas-web + template: + metadata: + labels: + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: villas-web + spec: + containers: + - env: + - name: AMQP_ENDPOINT + value: amqp://villas:s3c0sim4!@broker/%2F + - name: DATABASE_URL + value: mongodb://database:27017/ + - name: DEFAULT_ADMIN + value: "true" + - name: LOG_FILE + value: villasweb-backend_log.txt + - name: LOG_LEVEL + value: info + - name: NODE_ENV + value: dotenv + image: villas/web-backend + name: backend + volumeMounts: + - mountPath: /usr/src/app/public/ + name: files + volumes: + - name: files + persistentVolumeClaim: + claimName: backend-files diff --git a/kubernetes/backend-files-persistentvolumeclaim.yaml b/kubernetes/backend-files-persistentvolumeclaim.yaml new file mode 100644 index 0000000..cedeb84 --- /dev/null +++ b/kubernetes/backend-files-persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: files + name: backend-files +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi diff --git a/kubernetes/broker-deployment.yaml b/kubernetes/broker-deployment.yaml new file mode 100644 index 0000000..4a4f99e --- /dev/null +++ b/kubernetes/broker-deployment.yaml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: broker + app.kubernetes.io/part-of: villas-controller + name: broker +spec: + selector: + matchLabels: + app.kubernetes.io/component: broker + app.kubernetes.io/part-of: villas-controller + template: + metadata: + labels: + app.kubernetes.io/component: broker + app.kubernetes.io/part-of: villas-controller + spec: + containers: + - env: + - name: RABBITMQ_DEFAULT_PASS + value: s3c0sim4! + - name: RABBITMQ_DEFAULT_USER + value: villas + image: broker + name: broker + ports: + - containerPort: 15672 + - containerPort: 5672 + - containerPort: 1883 diff --git a/kubernetes/broker-service.yaml b/kubernetes/broker-service.yaml new file mode 100644 index 0000000..714b146 --- /dev/null +++ b/kubernetes/broker-service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: broker + app.kubernetes.io/part-of: villas-controller + name: broker +spec: + ports: + - name: "web" + port: 8083 + targetPort: 15672 + - name: "amqp" + port: 5672 + targetPort: 5672 + - name: "mqtt" + port: 1883 + targetPort: 1883 + selector: + app.kubernetes.io/component: broker + app.kubernetes.io/part-of: villas-controller diff --git a/kubernetes/controller-deployment.yaml b/kubernetes/controller-deployment.yaml new file mode 100644 index 0000000..6ba77ee --- /dev/null +++ b/kubernetes/controller-deployment.yaml @@ -0,0 +1,29 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: controller + name: controller +spec: + template: + metadata: + labels: + app.kubernetes.io/component: controller + spec: + containers: + - args: + - villas-ctl + - -b + - amqp://villas:s3c0sim4!@broker/%2F + - -c + - /etc/villas/controller/config.json + - daemon + image: villas/controller + name: controller + volumeMounts: + - mountPath: /etc/villas/controller/ + name: config + volumes: + - name: config + configMap: + name: controller-config diff --git a/kubernetes/database-deployment.yaml b/kubernetes/database-deployment.yaml new file mode 100644 index 0000000..a324e3b --- /dev/null +++ b/kubernetes/database-deployment.yaml @@ -0,0 +1,22 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: database + name: database +spec: + template: + metadata: + labels: + app.kubernetes.io/component: database + spec: + containers: + - image: mongo:latest + name: database + volumeMounts: + - mountPath: /data/db + name: database + volumes: + - name: database + persistentVolumeClaim: + claimName: database diff --git a/kubernetes/database-persistentvolumeclaim.yaml b/kubernetes/database-persistentvolumeclaim.yaml new file mode 100644 index 0000000..400b1b7 --- /dev/null +++ b/kubernetes/database-persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: database + name: database +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi diff --git a/kubernetes/frontend-deployment.yaml b/kubernetes/frontend-deployment.yaml new file mode 100644 index 0000000..dc644aa --- /dev/null +++ b/kubernetes/frontend-deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: frontend + app.kubernetes.io/part-of: villas-web + name: frontend +spec: + selector: + matchLabels: + app.kubernetes.io/component: frontend + app.kubernetes.io/part-of: villas-web + template: + metadata: + labels: + app.kubernetes.io/component: frontend + app.kubernetes.io/part-of: villas-web + spec: + containers: + - image: villas/web-frontend + name: frontend diff --git a/kubernetes/mongo-express-deployment.yaml b/kubernetes/mongo-express-deployment.yaml new file mode 100644 index 0000000..ae5e3f5 --- /dev/null +++ b/kubernetes/mongo-express-deployment.yaml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: mongo-express + app.kubernetes.io/part-of: villas-web + name: mongo-express +spec: + selector: + matchLabels: + app.kubernetes.io/component: mongo-express + app.kubernetes.io/part-of: villas-web + template: + metadata: + labels: + app.kubernetes.io/component: mongo-express + app.kubernetes.io/part-of: villas-web + spec: + containers: + - env: + - name: ME_CONFIG_BASICAUTH_PASSWORD + value: mongo-admin + - name: ME_CONFIG_BASICAUTH_USERNAME + value: admin + - name: ME_CONFIG_MONGODB_SERVER + value: database + - name: ME_CONFIG_SITE_BASEURL + value: /mongo-express/ + image: mongo-express + name: mongo-express diff --git a/kubernetes/nginx-claim0-persistentvolumeclaim.yaml b/kubernetes/nginx-claim0-persistentvolumeclaim.yaml new file mode 100644 index 0000000..f765ff1 --- /dev/null +++ b/kubernetes/nginx-claim0-persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: nginx-claim0 + name: nginx-claim0 +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi diff --git a/kubernetes/nginx-deployment.yaml b/kubernetes/nginx-deployment.yaml new file mode 100644 index 0000000..99615d7 --- /dev/null +++ b/kubernetes/nginx-deployment.yaml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: nginx + app.kubernetes.io/part-of: villas-web + name: nginx +spec: + selector: + matchLabels: + app.kubernetes.io/component: nginx + app.kubernetes.io/part-of: villas-web + template: + metadata: + labels: + app.kubernetes.io/component: nginx + app.kubernetes.io/part-of: villas-web + spec: + containers: + - image: nginx:stable-alpine + name: nginx + ports: + - containerPort: 8080 + volumeMounts: + - mountPath: /etc/nginx/conf.d/default.conf + name: nginx-claim0 + volumes: + - name: nginx-claim0 + configMap: + name: nginx-config diff --git a/kubernetes/nginx-ingress.yaml b/kubernetes/nginx-ingress.yaml new file mode 100644 index 0000000..e69de29 diff --git a/kubernetes/nginx-service.yaml b/kubernetes/nginx-service.yaml new file mode 100644 index 0000000..0b5805a --- /dev/null +++ b/kubernetes/nginx-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: nginx + name: nginx +spec: + ports: + - name: "http" + port: 8080 + selector: + app.kubernetes.io/component: nginx diff --git a/kubernetes/node-data-persistentvolumeclaim.yaml b/kubernetes/node-data-persistentvolumeclaim.yaml new file mode 100644 index 0000000..f1d2f0a --- /dev/null +++ b/kubernetes/node-data-persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: node-claim1 + name: node-claim1 +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi diff --git a/kubernetes/node-deployment.yaml b/kubernetes/node-deployment.yaml new file mode 100644 index 0000000..067160a --- /dev/null +++ b/kubernetes/node-deployment.yaml @@ -0,0 +1,58 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: node + name: node +spec: + strategy: + type: Recreate + template: + metadata: + labels: + app.kubernetes.io/component: node + spec: + containers: + - args: + - node + - /etc/villas/node/demo.conf + image: villas/node:latest + name: node + ports: + - containerPort: 80 + - containerPort: 12000 + protocol: UDP + - containerPort: 12001 + protocol: UDP + - containerPort: 12002 + protocol: UDP + - containerPort: 12003 + protocol: UDP + - containerPort: 12004 + protocol: UDP + - containerPort: 12005 + protocol: UDP + - containerPort: 12006 + protocol: UDP + - containerPort: 12007 + protocol: UDP + - containerPort: 12008 + protocol: UDP + - containerPort: 12009 + protocol: UDP + - containerPort: 12010 + protocol: UDP + securityContext: + privileged: true + volumeMounts: + - mountPath: /etc/villas/node + name: config + - mountPath: /data + name: data + volumes: + - name: node- + configMap: + name: node-config + - name: node-claim1 + persistentVolumeClaim: + claimName: node-data diff --git a/kubernetes/node-service.yaml b/kubernetes/node-service.yaml new file mode 100644 index 0000000..677c907 --- /dev/null +++ b/kubernetes/node-service.yaml @@ -0,0 +1,57 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: node + name: node +spec: + ports: + - name: "8081" + port: 8081 + targetPort: 80 + - name: "12000" + port: 12000 + protocol: UDP + targetPort: 12000 + - name: "12001" + port: 12001 + protocol: UDP + targetPort: 12001 + - name: "12002" + port: 12002 + protocol: UDP + targetPort: 12002 + - name: "12003" + port: 12003 + protocol: UDP + targetPort: 12003 + - name: "12004" + port: 12004 + protocol: UDP + targetPort: 12004 + - name: "12005" + port: 12005 + protocol: UDP + targetPort: 12005 + - name: "12006" + port: 12006 + protocol: UDP + targetPort: 12006 + - name: "12007" + port: 12007 + protocol: UDP + targetPort: 12007 + - name: "12008" + port: 12008 + protocol: UDP + targetPort: 12008 + - name: "12009" + port: 12009 + protocol: UDP + targetPort: 12009 + - name: "12010" + port: 12010 + protocol: UDP + targetPort: 12010 + selector: + app.kubernetes.io/component: node diff --git a/kubernetes/relay-deployment.yaml b/kubernetes/relay-deployment.yaml new file mode 100644 index 0000000..302dfab --- /dev/null +++ b/kubernetes/relay-deployment.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: relay + app.kubernetes.io/part-of: villas-node + name: relay +spec: + selector: + matchLabels: + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: villas-web + template: + metadata: + labels: + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: villas-node + spec: + containers: + - args: + - relay + image: villas/node + name: relay -- GitLab