From 395da34c090085059a28d4c9c14e6f5570a719ce Mon Sep 17 00:00:00 2001 From: Gorden Mende Date: Thu, 4 Dec 2025 14:10:02 +0000 Subject: [PATCH] added deployment --- deploy/README.md | 9 +++++ deploy/deployment.yaml | 75 ++++++++++++++++++++++++++++++++++++++++++ deploy/namespace.yaml | 4 +++ deploy/pvc.yaml | 13 ++++++++ deploy/service.yaml | 16 +++++++++ 5 files changed, 117 insertions(+) create mode 100644 deploy/README.md create mode 100644 deploy/deployment.yaml create mode 100644 deploy/namespace.yaml create mode 100644 deploy/pvc.yaml create mode 100644 deploy/service.yaml diff --git a/deploy/README.md b/deploy/README.md new file mode 100644 index 0000000..72448ca --- /dev/null +++ b/deploy/README.md @@ -0,0 +1,9 @@ +# esphome on kubernetes + +## Installation +Just deploy files in order: +- namespace.yaml +- pvc.yaml +- deployment.yaml +- service.yaml + diff --git a/deploy/deployment.yaml b/deploy/deployment.yaml new file mode 100644 index 0000000..abc113e --- /dev/null +++ b/deploy/deployment.yaml @@ -0,0 +1,75 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + name: esphome + namespace: esphome +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: esphome + app.kubernetes.io/name: esphome + strategy: + type: Recreate + template: + metadata: + labels: + app.kubernetes.io/instance: esphome + app.kubernetes.io/name: esphome + spec: + containers: + - name: esphome-esphome-release + env: + - name: TZ + value: Europe/Berlin + - name: USERNAME + value: admin + - name: PASSWORD + value: '#gentoo#' + image: esphome/esphome:stable + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + periodSeconds: 10 + successThreshold: 1 + tcpSocket: + port: 6052 + timeoutSeconds: 1 + ports: + - containerPort: 6052 + name: http + protocol: TCP + readinessProbe: + failureThreshold: 3 + periodSeconds: 10 + successThreshold: 1 + tcpSocket: + port: 6052 + timeoutSeconds: 1 + resources: {} + startupProbe: + failureThreshold: 30 + periodSeconds: 5 + successThreshold: 1 + tcpSocket: + port: 6052 + timeoutSeconds: 1 + volumeMounts: + - mountPath: /config + name: config-volume + - mountPath: /cache + name: cache-volume + dnsPolicy: "None" + dnsConfig: + nameservers: + - 192.168.0.5 # YOUR DNS SERVER + searches: + - realm.local # YOUR DOMAIN NAME + volumes: + - name: config-volume + persistentVolumeClaim: + claimName: pvc-nfs-esphome + - name: cache-volume + emptyDir: + sizeLimit: 5Gi diff --git a/deploy/namespace.yaml b/deploy/namespace.yaml new file mode 100644 index 0000000..b84b8d0 --- /dev/null +++ b/deploy/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: esphome diff --git a/deploy/pvc.yaml b/deploy/pvc.yaml new file mode 100644 index 0000000..2cc7809 --- /dev/null +++ b/deploy/pvc.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-nfs-esphome + namespace: esphome +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 10Mi + storageClassName: nfs-csi diff --git a/deploy/service.yaml b/deploy/service.yaml new file mode 100644 index 0000000..0423a15 --- /dev/null +++ b/deploy/service.yaml @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: esphome + namespace: esphome +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 6052 + selector: + app.kubernetes.io/instance: esphome + app.kubernetes.io/name: esphome + sessionAffinity: None + type: LoadBalancer