diff --git a/deployment/kubernetes/config.json.template b/deployment/kubernetes/config.json.template new file mode 100644 index 0000000..3ccf48f --- /dev/null +++ b/deployment/kubernetes/config.json.template @@ -0,0 +1,62 @@ +{ + "system": { + "host": "${DOMAIN_NAME}", + "port": "443", + "protocol": "https", + "logger" : { + "dir": "./logs", + "maxFiles" : "7d", + "level" : "debug", + "morganOption" : null + }, + "subDomainCookies": false, + "muteNotifications": false + }, + "express":{ + "key" : "${EXPRESS_KEY}" + }, + "apn" : { + "gateway": "gateway.push.apple.com", + "cert": "certs/aps/aps_production_cert.pem", + "key": "certs/aps/aps_production_key.pem", + "passphrase": "passphrase" + }, + "gcm" : { + "jid": "something@gcm.googleapis.com", + "password": "password" + }, + "ifttt" : { + "iftttChannelKey" : "key", + "iftttTestToken" : "token" + }, + "mail": { + "host" : "smtp", + "port" : 465, + "user" : "${SMTP_USER}", + "pass" : "${SMTP_PASSWORD}" + }, + "mongodb": { + "hosts": ["mongodb"], + "db": "openhab", + "user": "${MONGO_USER}", + "password": "${MONGO_PASSWORD}" + }, + "redis": { + "host": "redis", + "port": "6379", + "password": "123_openHAB" + }, + "mailer": { + "host" : "smtp", + "port": 465, + "secureConnection": true, + "user": "${SMTP_USER}", + "password": "${SMTP_PASSWORD}", + "from": "openHAB Cloud " + }, + "legal": { + "terms" : "", + "policy": "" + }, + "registration_enabled": false +} diff --git a/deployment/kubernetes/kubernetes-deploy.sh b/deployment/kubernetes/kubernetes-deploy.sh index 3307a57..0b2aee3 100755 --- a/deployment/kubernetes/kubernetes-deploy.sh +++ b/deployment/kubernetes/kubernetes-deploy.sh @@ -32,6 +32,11 @@ kubectl create namespace $KUBERNETES_NAMESPACE kubectl create serviceaccount $KUBERNETES_ACCOUNT --namespace $KUBERNETES_NAMESPACE +# Creating configMap volumes + +kubectl create configmap openhab-config --from-file=./config.json.template --namespace $KUBERNETES_NAMESPACE +kubectl create -f openhabcloud_env_k8.yml --namespace $KUBERNETES_NAMESPACE +kubectl create -f openhabcloud_secrets_k8.yml --namespace $KUBERNETES_NAMESPACE ### Create openHAB-cloud from template diff --git a/deployment/kubernetes/openhabcloud_env_k8.yml b/deployment/kubernetes/openhabcloud_env_k8.yml new file mode 100644 index 0000000..da06278 --- /dev/null +++ b/deployment/kubernetes/openhabcloud_env_k8.yml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: openhab-env +data: + COMPOSE_PROJECT_NAME: "openhab-cloud" + DOMAIN_NAME: "" + EMAIL: "" \ No newline at end of file diff --git a/deployment/kubernetes/openhabcloud_ephemeral_k8_template.yml b/deployment/kubernetes/openhabcloud_ephemeral_k8_template.yml index 2db2275..8981ab4 100644 --- a/deployment/kubernetes/openhabcloud_ephemeral_k8_template.yml +++ b/deployment/kubernetes/openhabcloud_ephemeral_k8_template.yml @@ -71,7 +71,17 @@ items: org.openhab.cloud.service: redis status: loadBalancer: {} -- apiVersion: extensions/v1beta1 +- apiVersion: storage.k8s.io/v1 + kind: StorageClass + metadata: + name: storageclass-mongo + provisioner: kubernetes.io/gce-pd + parameters: + type: pd-standard + fstype: ext4 + replication-type: none + reclaimPolicy: Retain +- apiVersion: apps/v1 kind: Deployment metadata: annotations: @@ -89,16 +99,33 @@ items: org.openhab.cloud.service: app-1 spec: containers: - - image: docker.io/openhab/openhabcloud-app + - image: docker.io/mariomastrorilli/openhabcloud-app:latest name: app-1 ports: - containerPort: 3000 resources: {} + envFrom: + - configMapRef: + name: openhab-env + - secretRef: + name: openhab-secrets workingDir: /opt/openhabcloud + command: ["./run-app.sh"] + volumeMounts: + - name: config-storage + mountPath: /opt/openhabcloud/config.json.template + subPath: config.json.template restartPolicy: Always + volumes: + - name: config-storage + configMap: + name: openhab-config + selector: + matchLabels: + org.openhab.cloud.service: app-1 status: {} -- apiVersion: extensions/v1beta1 - kind: Deployment +- apiVersion: apps/v1 + kind: StatefulSet metadata: annotations: creationTimestamp: null @@ -106,9 +133,8 @@ items: org.openhab.cloud.service: mongodb name: mongodb spec: + serviceName: "mongodb" replicas: 1 - strategy: - type: Recreate template: metadata: creationTimestamp: null @@ -118,7 +144,6 @@ items: containers: - args: - mongod - - --smallfiles - --bind_ip_all image: bitnami/mongodb:latest name: mongodb @@ -127,17 +152,31 @@ items: resources: {} volumeMounts: - mountPath: /data/db - name: mongodb-empty0 + name: mongodb-vc - mountPath: /data/configdb name: mongodb-empty1 restartPolicy: Always volumes: - - emptyDir: {} - name: mongodb-empty0 - emptyDir: {} name: mongodb-empty1 - status: {} -- apiVersion: extensions/v1beta1 + securityContext: + fsGroup: 2000 + volumeClaimTemplates: + - metadata: + name: mongodb-vc + spec: + storageClassName: storageclass-mongo + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + selector: + matchLabels: + org.openhab.cloud.service: mongodb + status: + replicas: 1 +- apiVersion: apps/v1 kind: Deployment metadata: annotations: @@ -169,8 +208,11 @@ items: volumes: - emptyDir: {} name: app-1 + selector: + matchLabels: + org.openhab.cloud.service: nginx status: {} -- apiVersion: extensions/v1beta1 +- apiVersion: apps/v1 kind: Deployment metadata: annotations: @@ -197,6 +239,9 @@ items: - containerPort: 6379 resources: {} restartPolicy: Always + selector: + matchLabels: + org.openhab.cloud.service: redis status: {} kind: List metadata: {} diff --git a/deployment/kubernetes/openhabcloud_secrets_k8.yml b/deployment/kubernetes/openhabcloud_secrets_k8.yml new file mode 100644 index 0000000..f146584 --- /dev/null +++ b/deployment/kubernetes/openhabcloud_secrets_k8.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: openhab-secrets +type: Opaque +stringData: + EXPRESS_KEY: "" + SMTP_USER: "" + SMTP_PASSWORD: "" + MONGO_USER: "" + MONGO_PASSWORD: ""