apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: havenllo name: havenllo namespace: default spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: havenllo strategy: type: Recreate template: metadata: labels: app.kubernetes.io/name: havenllo spec: containers: - env: - name: HAVENLLO_DATABASE_PATH value: /data/havenllo.db - name: HAVENLLO_LISTEN_ADDR value: :8080 image: git.ivanch.me/ivanch/havenllo:latest imagePullPolicy: Always livenessProbe: failureThreshold: 3 httpGet: path: /api/health port: http scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 2 name: havenllo ports: - containerPort: 8080 name: http protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /api/health port: http scheme: HTTP initialDelaySeconds: 2 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 2 resources: limits: cpu: 500m memory: 256Mi requests: cpu: 50m memory: 64Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsUser: 0 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /data name: data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: data persistentVolumeClaim: claimName: havenllo-data status: availableReplicas: 1 conditions: - lastTransitionTime: '2026-07-14T13:21:13Z' lastUpdateTime: '2026-07-21T21:06:45Z' message: ReplicaSet "havenllo-5d4f8ccb4f" has successfully progressed. reason: NewReplicaSetAvailable status: 'True' type: Progressing - lastTransitionTime: '2026-08-28T06:04:17Z' lastUpdateTime: '2026-08-28T06:04:17Z' message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: 'True' type: Available observedGeneration: 41 readyReplicas: 1 replicas: 1 terminatingReplicas: 0 updatedReplicas: 1 --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/name: havenllo name: havenllo namespace: default spec: internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - name: http port: 8080 protocol: TCP targetPort: 8080 selector: app.kubernetes.io/name: havenllo sessionAffinity: None type: ClusterIP status: loadBalancer: {} --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: havenllo namespace: default spec: ingressClassName: nginx-https rules: - host: havenllo.haven http: paths: - backend: service: name: havenllo port: number: 8080 path: / pathType: Prefix tls: - hosts: - havenllo.haven secretName: havenllo-tls status: loadBalancer: ingress: - ip: 192.168.20.204 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: havenllo-data namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfs-client volumeMode: Filesystem status: accessModes: - ReadWriteOnce capacity: storage: 1Gi phase: Bound