apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/instance: esphome app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: esphome app.kubernetes.io/version: 1.18.0 helm.sh/chart: esphome-8.4.2 name: esphome spec: ports: - name: http port: 6052 protocol: TCP targetPort: http selector: app.kubernetes.io/instance: esphome app.kubernetes.io/name: esphome type: ClusterIP --- apiVersion: v1 kind: PersistentVolumeClaim metadata: labels: app.kubernetes.io/instance: esphome app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: esphome app.kubernetes.io/version: 1.18.0 helm.sh/chart: esphome-8.4.2 name: esphome-config spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: openebs-3-replicas --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/instance: esphome app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: esphome app.kubernetes.io/version: 1.18.0 helm.sh/chart: esphome-8.4.2 name: esphome spec: replicas: 1 revisionHistoryLimit: 3 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: automountServiceAccountToken: true containers: - image: esphome/esphome:2025.5.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 initialDelaySeconds: 0 periodSeconds: 10 tcpSocket: port: 6052 timeoutSeconds: 1 name: esphome ports: - containerPort: 6052 name: http protocol: TCP readinessProbe: failureThreshold: 3 initialDelaySeconds: 0 periodSeconds: 10 tcpSocket: port: 6052 timeoutSeconds: 1 startupProbe: failureThreshold: 30 initialDelaySeconds: 0 periodSeconds: 5 tcpSocket: port: 6052 timeoutSeconds: 1 volumeMounts: - mountPath: /config name: config dnsPolicy: ClusterFirst enableServiceLinks: true serviceAccountName: default volumes: - name: config persistentVolumeClaim: claimName: esphome-config